diff --git a/Documents/Diagram/Analyse/Besoins/BDD/MLD.plantuml b/Documents/Diagram/Analyse/Besoins/BDD/MLD.plantuml new file mode 100755 index 00000000..cdf6bec3 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/BDD/MLD.plantuml @@ -0,0 +1,113 @@ +@startuml +skinparam classAttributeIconSize 0 +package MLD{ +entity "Athlète" as athlete { + {static} idAthlete + nom + prénom + email + sexe + taille + poids + motDePasse + dateNaissance +} + +entity "Amitié" as friendship{ +{static}# idAthlete1 +{static}# idAthlete2 +début +} + +entity "Notification" as notif { + {static} idNotif + message + date + statut + urgence + #athleteId +} + +entity "Coach" as coach { + {static} idCoach + // attributs spécifiques au coach + #athleteId +} + +entity "Statistique" as stats { + {static} idStatistique + poids + fcMoyenne + fcMax + caloriesBrûléesMoy + date + #athleteId +} + +entity "Entraînement" as training { + {static} idEntrainement + date + description + // Exercices + latitude + longitude + feedback + #coachId +} + +entity "Participe" as takepart { + {static} #athleteId + {static} #entrainementId +} + + +entity "SourceDonnée" as source { + {static} idSource + type + modèle + précision + #athleteId +} + +entity "Activité" as activity { + {static} idActivité + type + date + heureDeDébut + heureDeFin + effortRessent + variabilité + variance + ecartType + moyenne + maximum + minimum + temperatureMoyenne + #athleteId + #sourceId +} +entity "FréquenceCardiaque" as fc { + {static} idFc + altitude + temps : time + température + bpm + longitude + latitude + #activitéId +} + +} +activity --> athlete +activity --> source +activity <-- fc +coach --> athlete +athlete <-- source +stats --> athlete +takepart --> athlete +takepart --> training +friendship --> athlete +notif --> athlete +coach <-- training +athlete <-- friendship +@enduml \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_coachSuiviSportif.md b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_coachSuiviSportif.md new file mode 100644 index 00000000..9d4dd41e --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_coachSuiviSportif.md @@ -0,0 +1,56 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Cas d'utilisation : Suivi d'une Équipe Sportive + +Bienvenue dans le monde dynamique du suivi d'équipe sportive, où notre application offre une plateforme complète pour les entraîneurs soucieux d'optimiser les performances de leurs athlètes. Ce diagramme de cas d'utilisation vous plonge dans les fonctionnalités clés qui facilitent la gestion d'une équipe sportive avec efficacité. + +**Acteurs Principaux :** + +- **Coach :** Le protagoniste central, utilisant l'application pour gérer et superviser son équipe. + +**Fonctionnalités Clés :** + +- **Ajouter un Athlète :** Permet au coach d'ajouter de nouveaux membres à son équipe, avec des étapes incluant la validation par l'athlète et l'authentification. + +- **Supprimer un Athlète :** Offre la possibilité de retirer des athlètes de l'équipe, avec une authentification préalable pour garantir la légitimité de l'action. + +- **Afficher ses Athlètes :** Permet au coach de visualiser la liste complète de ses athlètes, nécessitant une authentification pour accéder à ces informations sensibles. + +- **Afficher les Activités de Tous les Athlètes :** Donne au coach un aperçu global des activités de toute l'équipe, nécessitant une authentification pour garantir la confidentialité des données. + +**Flux d'Interaction :** + +- Le processus d'ajout d'un athlète inclut des étapes telles que la validation par l'athlète et l'authentification, garantissant une intégration fluide. + +- Les actions de suppression, affichage des athlètes et affichage des activités nécessitent une authentification préalable pour assurer la sécurité des données. + +- Des extensions telles que la visualisation des activités d'un athlète et l'analyse des performances offrent des fonctionnalités avancées pour un suivi détaillé. + +Explorez ce diagramme pour comprendre l'étendue des fonctionnalités que notre application offre aux entraîneurs, les aidant à gérer leurs équipes de manière efficace et à maximiser le potentiel de chaque athlète. + +```plantuml +left to right direction +:Coach: as a + +a --> (Ajouter un athlète) +a --> (Supprimer un athlète) +a --> (Afficher ses athlètes ) +a --> (Afficher les activités de tous les athlètes) +(Ajouter un athlète).>(Validation par l'athlète) : <> +(Ajouter un athlète)..>(S'authentifier) : <> +(Supprimer un athlète)..>(S'authentifier) : <> +(Afficher ses athlètes )..>(S'authentifier) : <> +(Afficher les activités de tous les athlètes)..>(S'authentifier) : <> +(S'authentifier)..>(S'inscrire) : <> +(S'inscrire).>(Inscription Coach) : <> +(S'authentifier)..>(Se connecter) : <> +(Afficher ses athlètes )..>(Voir les activités d'un athlète) : <> +(Afficher ses athlètes )..>(Voir les stats d'un athlète) : <> +(Afficher les activités de tous les athlètes)..>(Sélectionner une activité) : <> +(Sélectionner une activité)..>(Voir l'analyse) : <> +(Sélectionner une activité)..>(Exporter l'analyse) : <> +(Voir les activités d'un athlète)..>(Voir l'analyse) : <> +(Voir les activités d'un athlète)..>(Exporter l'analyse) : <> +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionActivites.md b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionActivites.md new file mode 100644 index 00000000..664d7ab8 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionActivites.md @@ -0,0 +1,57 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Cas d'utilisation : Gestion d'Activités pour un Athlète + +Bienvenue dans l'univers dédié à la gestion d'activités sportives personnalisées pour les athlètes ! Ce diagramme de cas d'utilisation explore les différentes fonctionnalités offertes aux utilisateurs, mettant en avant la flexibilité et la richesse d'interactions pour une expérience utilisateur optimale. + +**Acteurs Principaux :** + +- **Athlète :** Le protagoniste central, utilisant l'application pour importer, gérer et analyser ses activités sportives. + +**Fonctionnalités Clés :** + +- **Importer des Données :** Permet à l'athlète d'importer des données d'activités depuis différentes sources, avec la possibilité de spécifier la source pour une intégration transparente. + +- **Exporter Mes Données :** Offre la possibilité d'exporter l'ensemble des activités, avec des extensions pour exporter une activité spécifique, le tout soumis à une authentification préalable. + +- **Ajouter une Activité :** Permet à l'athlète d'ajouter de nouvelles activités, avec des étapes inclusives telles que la saisie du titre, du type d'activité, de la source, du matériel utilisé et de la visibilité, chacune accessible via l'authentification. + +- **Voir une Activité :** Permet à l'athlète de visualiser en détail une activité particulière, avec la possibilité d'exporter une analyse et de gérer la visibilité, soumis à une authentification. + +- **Supprimer une Activité :** Offre la possibilité de retirer une activité, requérant une authentification pour garantir la sécurité des données. + +**Flux d'Interaction :** + +- Les actions telles que l'importation, l'exportation, l'ajout et la visualisation d'activités impliquent une authentification préalable pour garantir la confidentialité des données personnelles. + +- Des inclusions précises, telles que la saisie du titre, du type d'activité, de la source, du matériel utilisé et de la visibilité, sont incorporées dans le processus d'ajout d'une activité, offrant une expérience utilisateur détaillée et conviviale. + +Explorez ce diagramme pour comprendre la manière dont notre application place la gestion d'activités entre les mains des athlètes, les encourageant à suivre, analyser et optimiser leurs performances sportives de manière personnalisée et efficace. + + +```plantuml +left to right direction +:Athlete: as a + +a --> (Importer des données) +(Importer des données) .> (Saisir la source) : <> +a --> (Exporter mes données) +(Exporter mes données) .>(Exporter toutes les activités): <> +(Exporter mes données) ..>(Exporter une activité): <> +a --> (Ajouter une activité) +(Ajouter une activité) ..>(Saisir un titre et une description): <> +(Ajouter une activité) ..>(Saisir le type d'activité): <> +(Ajouter une activité) .>(Saisir la source): <> +(Saisir la source) ..>(Saisir le matériel utilisé): <> +(Ajouter une activité) ..>(Saisir la visibilité): <> +a --> (Voir une activité) +(Voir une activité) ..>(Exporter l'analyse): <> +(Voir une activité) ..>(Saisir la visibilité): <> +a --> (Supprimer une activité) +(Importer des données) ...>(S'authentifier): <> +(Exporter mes données) ...>(S'authentifier): <> +(Ajouter une activité) ...>(S'authentifier): <> +(Voir une activité) ...>(S'authentifier): <> +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionCompteAmitie.md b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionCompteAmitie.md new file mode 100644 index 00000000..268d541a --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/CasUtilisations/README_gestionCompteAmitie.md @@ -0,0 +1,55 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Cas d'utilisation : Gestion des Relations Sociales pour un Athlète + +Bienvenue dans la sphère sociale de notre application dédiée aux athlètes ! Ce diagramme de cas d'utilisation explore les fonctionnalités sociales clés offertes aux utilisateurs, mettant en lumière la connectivité et l'interaction sociale au sein de notre communauté sportive. + +**Acteurs Principaux :** + +- **Athlète :** Le protagoniste central, utilisant l'application pour gérer ses relations sociales et explorer les profils de ses pairs. + +**Fonctionnalités Clés :** + +- **Ajouter un Ami :** Permet à l'athlète d'ajouter de nouveaux amis, nécessitant la saisie du nom de l'ami et soumis à une authentification préalable. + +- **Supprimer un Ami :** Offre la possibilité de retirer un ami, exigeant une authentification pour garantir la sécurité des données. + +- **Voir Mes Amis :** Permet à l'athlète de visualiser la liste de ses amis, avec la possibilité d'accéder à des fonctionnalités supplémentaires comme la visualisation des profils. + +- **Modifier Mes Informations :** Offre à l'athlète la possibilité de mettre à jour ses informations personnelles et de connexion, avec des extensions pour des détails plus spécifiques. + +**Flux d'Interaction :** + +- Le processus d'ajout d'un ami inclut la saisie du nom de l'ami, tandis que la suppression d'un ami et la visualisation de la liste des amis sont soumises à une authentification préalable pour protéger la confidentialité. + +- Les modifications d'informations englobent deux extensions : la mise à jour des informations personnelles et la mise à jour des informations de connexion, offrant une personnalisation approfondie du profil athlétique. + +- La visualisation du profil d'un ami s'étend à des fonctionnalités telles que la consultation des activités et des statistiques de l'ami, ajoutant une dimension sociale à l'expérience de suivi sportif. + +Explorez ce diagramme pour découvrir comment notre application encourage l'interaction sociale entre les athlètes, favorisant une communauté engagée et collaborative au sein de laquelle les utilisateurs peuvent partager, interagir et se soutenir mutuellement dans leur parcours sportif. + + +```plantuml +left to right direction +:Athlete: as a + +a --> (Ajouter un ami) +a --> (Supprimer un ami) +a --> (Voir mes amis) +a --> (Modifier mes informations) +(Ajouter un ami)->(Saisir le nom de l'ami) +(Supprimer un ami)..>(S'authentifier) : <> +(Ajouter un ami)..>(S'authentifier) : <> +(Voir mes amis)..>(S'authentifier) : <> +(Voir mes amis)..>(Lister les amis) : <> +(Modifier mes informations)..>(Informations personnelles) : <> +(Modifier mes informations)..>(Informations de connexion) : <> +(Lister les amis)..>(Voir son profil) : <> +(Voir son profil)..>(Voir ses activités) : <> +(Voir son profil)..>(Voir ses statistiques) : <> +(S'authentifier)..>(S'inscrire) : <> +(S'authentifier)..>(Se connecter) : <> +(S'inscrire)..>(Inscription Athlète) : <> +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/ClassDiagram.puml b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/ClassDiagram.puml new file mode 100644 index 00000000..ab02d2a9 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/ClassDiagram.puml @@ -0,0 +1,33 @@ +@startuml +class phpFITFileAnalysis +{ + data_mesgs : array + dev_field_descriptions : array + options : null + file_contents : string + file_pointer : integer + defn_mesgs : array + defn_mesgs_all : array + file_header : array + php_trader_ext_loaded : boolean + types : null + garmin_timestamps : boolean + readDataRecords : function + fixData($options) : function + interpolateMissingData(&$missing_keys, &$array) +} + +ProjectModel --|> Project +AttributeModel --|> Element +UMLModel --|> Element +UMLClassDiagram --|> Element +UMLClassView --|> View +UMLNameCompartmentView --|> View +UMLAttributeCompartmentView --|> View +UMLOperationCompartmentView --|> View +UMLReceptionCompartmentView --|> View +UMLTemplateParameterCompartmentView --|> View +LabelView --|> View + +@enduml + diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/DiagrammeClasses.mdj b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/DiagrammeClasses.mdj new file mode 100644 index 00000000..c5438911 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/DiagrammeClasses.mdj @@ -0,0 +1,16708 @@ +{ + "_type": "Project", + "_id": "AAAAAAFF+h6SjaM2Hec=", + "name": "Untitled", + "ownedElements": [ + { + "_type": "UMLModel", + "_id": "AAAAAAFF+qBWK6M3Z8Y=", + "_parent": { + "$ref": "AAAAAAFF+h6SjaM2Hec=" + }, + "name": "Model", + "ownedElements": [ + { + "_type": "UMLClassDiagram", + "_id": "AAAAAAFF+qBtyKM79qY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Main", + "defaultDiagram": true, + "ownedViews": [ + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3Bpk6Nh7nd8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3Bpk6Nh8Lq8=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3Bpk6Nh9hPU=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh8Lq8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7438, + "top": 4026, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3Bpk6Nh+Fwc=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh8Lq8=" + }, + "font": "Arial;13;1", + "left": 3933, + "top": 1975, + "width": 134.05615234375, + "height": 13, + "text": "Utilisateur" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3Bpk6Nh/isA=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh8Lq8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7438, + "top": 4026, + "width": 83.560546875, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3Bpk6NiAZ5I=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh8Lq8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7438, + "top": 4026, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3928, + "top": 1968, + "width": 144.05615234375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3Bpk6Nh9hPU=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3Bpk6Nh+Fwc=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3Bpk6Nh/isA=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3Bpk6NiAZ5I=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3Bpk6NiBNB8=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL+9pbIrmYC30=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGL+9pa8rlijfg=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 1998, + "width": 134.05615234375, + "height": 13, + "text": "-id: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL4p5p1eRDPvQ=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGL4p5pjeQNzxA=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2013, + "width": 134.05615234375, + "height": 13, + "text": "-username: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiCaQg=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAD5vx0yijE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7915, + "top": 4408, + "width": 63.2353515625, + "height": 13, + "text": "+id", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiDSjc=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAHrOB1Dmpw=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2028, + "width": 134.05615234375, + "height": 13, + "text": "-nom: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiEgW4=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAHubx1JTgc=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2043, + "width": 134.05615234375, + "height": 13, + "text": "-prenom: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiFn9A=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAHxSR1PUSs=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2058, + "width": 134.05615234375, + "height": 13, + "text": "-email: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiGtyQ=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAH0SB1VgF8=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2073, + "width": 134.05615234375, + "height": 13, + "text": "-sexe: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiHvyA=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAH2wh1b3Gg=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2088, + "width": 134.05615234375, + "height": 13, + "text": "-taille: Float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiIsq0=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAH5dB1h8j4=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2103, + "width": 134.05615234375, + "height": 13, + "text": "-poids: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiJqPU=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAH8Jx1ngTU=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2118, + "width": 134.05615234375, + "height": 13, + "text": "-motDePasse: String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3Bpk6NiKgHM=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "model": { + "$ref": "AAAAAAGLpAH+3B1t8HQ=" + }, + "font": "Arial;13;0", + "left": 3933, + "top": 2133, + "width": 134.05615234375, + "height": 13, + "text": "-dateNaissance: Date", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3928, + "top": 1993, + "width": 144.05615234375, + "height": 158 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3Bpk6NiLdbA=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "font": "Arial;13;0", + "left": 3928, + "top": 2151, + "width": 144.05615234375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3Bpk6NiMKQ0=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3456, + "top": 1616, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3Bpk6NiNkKc=", + "_parent": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "model": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3456, + "top": 1616, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3928, + "top": 1968, + "width": 144.05615234375, + "height": 193, + "nameCompartment": { + "$ref": "AAAAAAGL3Bpk6Nh8Lq8=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3Bpk6NiBNB8=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3Bpk6NiLdbA=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3Bpk6NiMKQ0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3Bpk6NiNkKc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3BqoCyTo5V4=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3BqoCyTpW4g=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3BqoCyTqEq4=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTpW4g=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2237, + "width": 459.21484375, + "height": 13, + "text": "«abstract»" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BqoCyTr0yo=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTpW4g=" + }, + "font": "Arial;13;1", + "left": 3941, + "top": 2252, + "width": 459.21484375, + "height": 13, + "text": "Role" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BqoCyTsjzM=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTpW4g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 5049, + "top": 2094, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BqoCyTt63k=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTpW4g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 5049, + "top": 2094, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3936, + "top": 2232, + "width": 469.21484375, + "height": 38, + "stereotypeLabel": { + "$ref": "AAAAAAGL3BqoCyTqEq4=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3BqoCyTr0yo=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3BqoCyTsjzM=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3BqoCyTt63k=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3BqoCyTuNbk=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3EO8K52/YfM=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTuNbk=" + }, + "model": { + "$ref": "AAAAAAGL3EO77J2JFbo=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2275, + "width": 459.21484375, + "height": 13, + "text": "#id: int", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3936, + "top": 2270, + "width": 469.21484375, + "height": 23 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3BqoCyTvFJU=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL8lDIXnknspM=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL8lDIQHjxa7g=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2298, + "width": 459.21484375, + "height": 13, + "text": "+getUsersList(): ?array", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+91tPmZKyM8=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL+91tC2YUaHo=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2313, + "width": 459.21484375, + "height": 13, + "text": "+getUserList(user: User): ?User", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+93wGZ1DB2g=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL+93v8Z0NH0E=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2328, + "width": 459.21484375, + "height": 13, + "text": "+getEntrainement(): ?EntrainementRepository", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+90Kslfv1ko=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL+90Kble5JDw=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2343, + "width": 459.21484375, + "height": 13, + "text": "+getEntrainementsList(): ?array", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+95cBqY03KQ=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL+95b8qX+sig=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2358, + "width": 459.21484375, + "height": 13, + "text": "+getEntrainementList(entrainement: Entrainement): ?EntrainementSportif", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL8lQnvRSBOMg=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL8lQnmhRLfho=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2373, + "width": 459.21484375, + "height": 13, + "text": "+checkAdd(user: User): bool", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL8lRO7h1yezo=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL8lROwx08WBA=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2388, + "width": 459.21484375, + "height": 13, + "text": "+chackAddEntrainement(entrainement: Entrainement): bool", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3B61kj4t0Y8=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL3B61dD33CBk=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2403, + "width": 459.21484375, + "height": 13, + "text": "+addUser(user: User): bool", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL58RPQfS6YrU=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL58RPF/SE7Hs=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2418, + "width": 459.21484375, + "height": 13, + "text": "+removeUser(user: User): bool", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL8lBBRXGB2H8=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL8lBBHXFLScI=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2433, + "width": 459.21484375, + "height": 13, + "text": "+addEntrainement(entr: Entrainement): bool", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++FfCiqny8U=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "model": { + "$ref": "AAAAAAGL++Fe3CpxsSg=" + }, + "font": "Arial;13;0", + "left": 3941, + "top": 2448, + "width": 459.21484375, + "height": 13, + "text": "+removeEntrainement(entr: Entrainement): bool", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3936, + "top": 2293, + "width": 469.21484375, + "height": 173 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3BqoCyTwnlw=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2240, + "top": 536, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3BqoCyTxlpY=", + "_parent": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "model": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2240, + "top": 536, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3936, + "top": 2232, + "width": 469.21484375, + "height": 264, + "nameCompartment": { + "$ref": "AAAAAAGL3BqoCyTpW4g=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3BqoCyTuNbk=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3BqoCyTvFJU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3BqoCyTwnlw=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3BqoCyTxlpY=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3BrkEXIgRp8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIhgag=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "font": "Arial;13;0", + "left": 4111, + "top": 2234, + "width": 29.26904296875, + "height": 13, + "alpha": 0.3204269313614675, + "distance": 68.41052550594829, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 1, + "text": "+role" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIiuII=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4099, + "top": 2174, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIj/vY=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4061, + "top": 2197, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIk2Ck=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IdNgc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4080, + "top": 2169, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIlv/8=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IdNgc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4092, + "top": 2165, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnImsmA=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IdNgc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4054, + "top": 2179, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnInNc8=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IeED0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4094, + "top": 2195, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIofzw=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IeED0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4105, + "top": 2186, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3BrkEnIpNCY=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IeED0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4073, + "top": 2212, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3BrkE3IqKYk=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IdNgc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3BrkE3IrgMo=", + "_parent": { + "$ref": "AAAAAAGL3BrkEXIgRp8=" + }, + "model": { + "$ref": "AAAAAAGL3BrkD3IeED0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "tail": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "lineStyle": 1, + "points": "4054:2161;4095:2231", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3BrkEnIhgag=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3BrkEnIiuII=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3BrkEnIj/vY=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3BrkEnIk2Ck=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3BrkEnIlv/8=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3BrkEnImsmA=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3BrkEnInNc8=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3BrkEnIofzw=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3BrkEnIpNCY=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3BrkE3IqKYk=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3BrkE3IrgMo=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3BsTqaEI6W8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3BsTqaEJsn8=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3BsTqaEKhxM=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEJsn8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 8083, + "top": 4718, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BsTqaELxcM=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEJsn8=" + }, + "font": "Arial;13;1", + "left": 4189, + "top": 2551, + "width": 171.62158203125, + "height": 13, + "text": "Athlete" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BsTqaEMDwE=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEJsn8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 8083, + "top": 4718, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BsTqaENG6Q=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEJsn8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 8083, + "top": 4718, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4184, + "top": 2544, + "width": 181.62158203125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3BsTqaEKhxM=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3BsTqaELxcM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3BsTqaEMDwE=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3BsTqaENG6Q=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3BsTqaEO6QI=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "font": "Arial;13;0", + "left": 4184, + "top": 2569, + "width": 181.62158203125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3BsTqaEQWyw=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3Cav/l7YrXw=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "model": { + "$ref": "AAAAAAGL3Cav216fXX4=" + }, + "font": "Arial;13;0", + "left": 4189, + "top": 2584, + "width": 171.62158203125, + "height": 13, + "text": "+getAthlete(): Athlete", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3CcA8mU47Ao=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "model": { + "$ref": "AAAAAAGL3CcA1GT//kE=" + }, + "font": "Arial;13;0", + "left": 4189, + "top": 2599, + "width": 171.62158203125, + "height": 13, + "text": "+getActivite(): lesActivite", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3DDNi5ul+XY=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "model": { + "$ref": "AAAAAAGL3DDNcZtsRlI=" + }, + "font": "Arial;13;0", + "left": 4189, + "top": 2614, + "width": 171.62158203125, + "height": 13, + "text": "+getStatistiques(): lesStats", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3EaR8i1ibdU=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "model": { + "$ref": "AAAAAAGL3EaRsi0pEF4=" + }, + "font": "Arial;13;0", + "left": 4189, + "top": 2629, + "width": 171.62158203125, + "height": 13, + "text": "+getSourceDonnees(): lesSD", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3DEwIp45CMc=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "model": { + "$ref": "AAAAAAGL3DEwGp4As4s=" + }, + "font": "Arial;13;0", + "left": 4189, + "top": 2644, + "width": 171.62158203125, + "height": 13, + "text": "+__toString(): String", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 4184, + "top": 2579, + "width": 181.62158203125, + "height": 83 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3BsTqaERJ/c=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3672, + "top": 1728, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3BsTqaESBEk=", + "_parent": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "model": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3672, + "top": 1728, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4184, + "top": 2544, + "width": 181.62158203125, + "height": 193, + "nameCompartment": { + "$ref": "AAAAAAGL3BsTqaEJsn8=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3BsTqaEO6QI=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3BsTqaEQWyw=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3BsTqaERJ/c=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3BsTqaESBEk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3BtJt/VYyF0=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3BtJt/VZIHE=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3BtJt/Va6uM=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VZIHE=" + }, + "font": "Arial;13;0", + "left": 3757, + "top": 2549, + "width": 145.58984375, + "height": 13, + "text": "«abstract»" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BtJt/Vb5Cg=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VZIHE=" + }, + "font": "Arial;13;1", + "left": 3757, + "top": 2564, + "width": 145.58984375, + "height": 13, + "text": "Coach" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BtJt/VcVGI=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VZIHE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 6001, + "top": 5422, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3BtJt/VdTcw=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VZIHE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 6001, + "top": 5422, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3752, + "top": 2544, + "width": 155.58984375, + "height": 38, + "stereotypeLabel": { + "$ref": "AAAAAAGL3BtJt/Va6uM=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3BtJt/Vb5Cg=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3BtJt/VcVGI=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3BtJt/VdTcw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3BtJt/VeAHE=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "font": "Arial;13;0", + "left": 3752, + "top": 2582, + "width": 155.58984375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3BtJt/VgHOE=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "font": "Arial;13;0", + "left": 3752, + "top": 2592, + "width": 155.58984375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3BtJt/Vh00A=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2880, + "top": 2080, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3BtJt/ViK6I=", + "_parent": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "model": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2880, + "top": 2080, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3752, + "top": 2544, + "width": 155.58984375, + "height": 65, + "nameCompartment": { + "$ref": "AAAAAAGL3BtJt/VZIHE=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3BtJt/VeAHE=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3BtJt/VgHOE=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3BtJt/Vh00A=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3BtJt/ViK6I=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL3B0Tspu8D9c=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3B0TsZu6iEw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0Ts5u9bfM=", + "_parent": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "model": { + "$ref": "AAAAAAGL3B0TsZu6iEw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3988, + "top": 2560, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0Ts5u+QVY=", + "_parent": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "model": { + "$ref": "AAAAAAGL3B0TsZu6iEw=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3976, + "top": 2551, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0Ts5u/JUw=", + "_parent": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "model": { + "$ref": "AAAAAAGL3B0TsZu6iEw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4011, + "top": 2579, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3B0Tspu8D9c=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "tail": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "lineStyle": 1, + "points": "4183:2619;4000:2576;4064:2496", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3B0Ts5u9bfM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3B0Ts5u+QVY=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3B0Ts5u/JUw=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL3B0hqKVLIeI=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3B0hp6VJcj4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0hqaVMQzU=", + "_parent": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "model": { + "$ref": "AAAAAAGL3B0hp6VJcj4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3988, + "top": 2560, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0hqaVNgVQ=", + "_parent": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "model": { + "$ref": "AAAAAAGL3B0hp6VJcj4=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3976, + "top": 2551, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B0hqaVO884=", + "_parent": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "model": { + "$ref": "AAAAAAGL3B0hp6VJcj4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4011, + "top": 2579, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3B0hqKVLIeI=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "tail": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "lineStyle": 1, + "points": "3908:2576;4000:2576;4064:2496", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3B0hqaVMQzU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3B0hqaVNgVQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3B0hqaVO884=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3B3/zPI/wtk=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJAevY=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "font": "Arial;13;0", + "left": 3838, + "top": 2031, + "width": 76.24169921875, + "height": 13, + "alpha": -0.6874078923357949, + "distance": 209.60200380721554, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 1, + "text": "#*lesUsers" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJBn8k=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3714, + "top": 2193, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJC3Oo=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3759, + "top": 2194, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJDWvc=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI8/hQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3908, + "top": 2360, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJEM5A=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI8/hQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3905, + "top": 2373, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJFcmY=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI8/hQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3913, + "top": 2333, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zPJGtMk=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI9HQU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3901, + "top": 2040, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zfJH08c=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI9HQU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3899, + "top": 2026, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3B3/zfJI3Gs=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI9HQU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3904, + "top": 2067, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3B3/zfJJbDQ=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI8/hQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3B3/zfJKKCk=", + "_parent": { + "$ref": "AAAAAAGL3B3/zPI/wtk=" + }, + "model": { + "$ref": "AAAAAAGL3B3/yvI9HQU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "tail": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "lineStyle": 1, + "points": "3935:2353;3744:2344;3744:2056;3927:2062", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3B3/zPJAevY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3B3/zPJBn8k=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3B3/zPJC3Oo=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3B3/zPJDWvc=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3B3/zPJEM5A=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3B3/zPJFcmY=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3B3/zPJGtMk=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3B3/zfJH08c=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3B3/zfJI3Gs=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3B3/zfJJbDQ=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3B3/zfJKKCk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3CMxnUgw9Qc=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3CMxnUgxJhM=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3CMxnUgy8AA=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgxJhM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1328, + "top": 1120, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3CMxnUgztGY=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgxJhM=" + }, + "font": "Arial;13;1", + "left": 3469, + "top": 2575, + "width": 135.47802734375, + "height": 13, + "text": "CoachAthlete" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3CMxnkg0N2A=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgxJhM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1328, + "top": 1120, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3CMxnkg1xaw=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgxJhM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1328, + "top": 1120, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3464, + "top": 2568, + "width": 145.47802734375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3CMxnUgy8AA=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3CMxnUgztGY=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3CMxnkg0N2A=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3CMxnkg1xaw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3CMxnkg25RI=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "font": "Arial;13;0", + "left": 3464, + "top": 2593, + "width": 145.47802734375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3CMxnkg3D5k=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "font": "Arial;13;0", + "left": 3464, + "top": 2603, + "width": 145.47802734375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3CMxnkg4o/Y=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3CMxnkg5gG4=", + "_parent": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "model": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3464, + "top": 2568, + "width": 145.47802734375, + "height": 58, + "nameCompartment": { + "$ref": "AAAAAAGL3CMxnUgxJhM=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3CMxnkg25RI=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3CMxnkg3D5k=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3CMxnkg4o/Y=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3CMxnkg5gG4=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL3CS00llKDD4=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3CS00FlI+OY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3CS001lLo9U=", + "_parent": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "model": { + "$ref": "AAAAAAGL3CS00FlI+OY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3678, + "top": 2565, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3CS01FlMCgk=", + "_parent": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "model": { + "$ref": "AAAAAAGL3CS00FlI+OY=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3677, + "top": 2550, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3CS01FlNYLY=", + "_parent": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "model": { + "$ref": "AAAAAAGL3CS00FlI+OY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3681, + "top": 2594, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3CS00llKDD4=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3BtJt/VYyF0=" + }, + "tail": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "lineStyle": 1, + "points": "3609:2591;3751:2581", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3CS001lLo9U=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3CS01FlMCgk=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3CS01FlNYLY=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3DH0VM3eelw=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3DH0VM3fysc=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3DH0VM3gY5o=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3fysc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7526, + "top": 5046, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DH0VM3hGX8=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3fysc=" + }, + "font": "Arial;13;1", + "left": 4253, + "top": 2983, + "width": 185.3388671875, + "height": 13, + "text": "Activite" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DH0VM3iMEw=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3fysc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7526, + "top": 5046, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DH0VM3j6No=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3fysc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7526, + "top": 5046, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4248, + "top": 2976, + "width": 195.3388671875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DH0VM3gY5o=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3DH0VM3hGX8=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3DH0VM3iMEw=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DH0VM3j6No=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3DH0VM3kbjc=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3lc5Y=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLpCXSK/WOLkA=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3006, + "width": 185.3388671875, + "height": 13, + "text": "-idActivite: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3mS/0=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxCVfeebjRQ=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3021, + "width": 185.3388671875, + "height": 13, + "text": "-type: string", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3n7eQ=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxCvKejL/fw=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3036, + "width": 185.3388671875, + "height": 13, + "text": "-date: Date", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3oMXE=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxDHu+n7GHc=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3051, + "width": 185.3388671875, + "height": 13, + "text": "-heureDebut: time", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3pTPo=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxDu8esr6vo=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3066, + "width": 185.3388671875, + "height": 13, + "text": "-heureFin: time", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3q4W0=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxEIwOxboHI=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3081, + "width": 185.3388671875, + "height": 13, + "text": "-effortRessenti: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3rtcU=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxJXpe2Lor0=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3096, + "width": 185.3388671875, + "height": 13, + "text": "-variabilite: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3s3TU=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxKISe67v6E=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3111, + "width": 185.3388671875, + "height": 13, + "text": "-variance: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3tB54=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxKpzu/rHo4=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3126, + "width": 185.3388671875, + "height": 13, + "text": "-ecartType: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3uR/M=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxLaO/Ebr8k=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3141, + "width": 185.3388671875, + "height": 13, + "text": "-moyenne: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3v9vo=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxL5PfJLk04=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3156, + "width": 185.3388671875, + "height": 13, + "text": "-maximum: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3wYUA=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxM0SfWY9pQ=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3171, + "width": 185.3388671875, + "height": 13, + "text": "-minimum: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DH0VM3xJcc=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGLrxNQCvbIr2U=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3186, + "width": 185.3388671875, + "height": 13, + "text": "-TemperatureMoyenne: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGMBkKgGyoAcM4=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "model": { + "$ref": "AAAAAAGMBkKf7yn3AyI=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3201, + "width": 185.3388671875, + "height": 13, + "text": "-pause: bool", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 4248, + "top": 3001, + "width": 195.3388671875, + "height": 218 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3DH0VM3yGA4=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3DQ2l6ufcOo=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3yGA4=" + }, + "model": { + "$ref": "AAAAAAGL3DQ2catj1/Q=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3224, + "width": 185.3388671875, + "height": 13, + "text": "+getActivite(): Activite", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3DTgR8iexiI=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3yGA4=" + }, + "model": { + "$ref": "AAAAAAGL3DTgKchiipU=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3239, + "width": 185.3388671875, + "height": 13, + "text": "+getAnalyse(a1: Activite): String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3DXeXM52u3o=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3yGA4=" + }, + "model": { + "$ref": "AAAAAAGL3DXeGc46SeI=" + }, + "font": "Arial;13;0", + "left": 4253, + "top": 3254, + "width": 185.3388671875, + "height": 13, + "text": "+toString(Activite): String", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 4248, + "top": 3219, + "width": 195.3388671875, + "height": 53 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3DH0VM3zpCE=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3504, + "top": 1728, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3DH0VM30Qm4=", + "_parent": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "model": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3504, + "top": 1728, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4248, + "top": 2976, + "width": 195.3388671875, + "height": 296, + "nameCompartment": { + "$ref": "AAAAAAGL3DH0VM3fysc=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3DH0VM3kbjc=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3DH0VM3yGA4=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3DH0VM3zpCE=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3DH0VM30Qm4=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3DJHyBCPzHA=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3DJHyBCQzFI=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3DJHyRCRIbE=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCQzFI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7468, + "top": 3944, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DJHyRCSG8Y=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCQzFI=" + }, + "font": "Arial;13;1", + "left": 4581, + "top": 2471, + "width": 177.39794921875, + "height": 13, + "text": "Statistique" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DJHyRCTKdI=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCQzFI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7468, + "top": 3944, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DJHyRCUC6A=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCQzFI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 7468, + "top": 3944, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4576, + "top": 2464, + "width": 187.39794921875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DJHyRCRIbE=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3DJHyRCSG8Y=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3DJHyRCTKdI=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DJHyRCUC6A=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3DJHyRCVwdU=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCWvV0=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwixuGGJpE4=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2494, + "width": 177.39794921875, + "height": 13, + "text": "-idStatistique: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCXojk=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwlhdmOIz0E=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2509, + "width": 177.39794921875, + "height": 13, + "text": "-distanceTotale: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCYR9w=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwmwgWUPuog=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2524, + "width": 177.39794921875, + "height": 13, + "text": "-poids: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCZ9DA=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwnYLWYeNa4=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2539, + "width": 177.39794921875, + "height": 13, + "text": "-tempsTotal: time", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCavHw=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwoPTGct0ws=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2554, + "width": 177.39794921875, + "height": 13, + "text": "-FCmoyenne: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCbZAA=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwps72g8dI8=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2569, + "width": 177.39794921875, + "height": 13, + "text": "-FCmin: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCc4c8=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwqb7mlLpYw=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2584, + "width": 177.39794921875, + "height": 13, + "text": "-FCmax: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DJHyRCd7DA=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "model": { + "$ref": "AAAAAAGLrwq/JGpaMCs=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2599, + "width": 177.39794921875, + "height": 13, + "text": "-caloriesBrulées: int", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 4576, + "top": 2489, + "width": 187.39794921875, + "height": 128 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3DJHyRCealo=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3EVASgrSjt4=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCealo=" + }, + "model": { + "$ref": "AAAAAAGL3EVAEQqWm2c=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2622, + "width": 177.39794921875, + "height": 13, + "text": "+getStatistique(): Statistique", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3EWyfxByyz4=", + "_parent": { + "$ref": "AAAAAAGL3DJHyRCealo=" + }, + "model": { + "$ref": "AAAAAAGL3EWydxA200E=" + }, + "font": "Arial;13;0", + "left": 4581, + "top": 2637, + "width": 177.39794921875, + "height": 13, + "text": "+__toString(Statistique): String", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 4576, + "top": 2617, + "width": 187.39794921875, + "height": 38 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3DJHyRCfEJM=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3488, + "top": 1456, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3DJHyRCggVc=", + "_parent": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "model": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3488, + "top": 1456, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4576, + "top": 2464, + "width": 187.39794921875, + "height": 191, + "nameCompartment": { + "$ref": "AAAAAAGL3DJHyBCQzFI=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3DJHyRCVwdU=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3DJHyRCealo=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3DJHyRCfEJM=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3DJHyRCggVc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3DLQlyYtiTQ=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3DLQlyYubF0=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3DLQlyYvw2U=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYubF0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 6878, + "top": 3818, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DLQmCYwFXU=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYubF0=" + }, + "font": "Arial;13;1", + "left": 3997, + "top": 2807, + "width": 196.193359375, + "height": 13, + "text": "SourceDonnee" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DLQmCYxQMk=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYubF0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 6878, + "top": 3818, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DLQmCYyi5c=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYubF0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 6878, + "top": 3818, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3992, + "top": 2800, + "width": 206.193359375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DLQlyYvw2U=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3DLQmCYwFXU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3DLQmCYxQMk=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DLQmCYyi5c=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3DLQmCYzLJk=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DLQmCY0y+0=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "model": { + "$ref": "AAAAAAGLrxTIICbUAdU=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2830, + "width": 196.193359375, + "height": 13, + "text": "-idSource: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DLQmCY1DTA=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "model": { + "$ref": "AAAAAAGLrxTswiiLUpA=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2845, + "width": 196.193359375, + "height": 13, + "text": "-Type: enum", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DLQmCY2rE8=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "model": { + "$ref": "AAAAAAGLrxVKVSm7bms=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2860, + "width": 196.193359375, + "height": 13, + "text": "-modele: string", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DLQmCY31Ao=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "model": { + "$ref": "AAAAAAGLrxV3+SrrCr8=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2875, + "width": 196.193359375, + "height": 13, + "text": "-precision: enum", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DLQmCY46yk=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "model": { + "$ref": "AAAAAAGLrxWfnSwbQ58=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2890, + "width": 196.193359375, + "height": 13, + "text": "-dateDerniereUtilisation: Date", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3992, + "top": 2825, + "width": 206.193359375, + "height": 83 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3DLQmCY54P8=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3EcVKzvuuFk=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCY54P8=" + }, + "model": { + "$ref": "AAAAAAGL3EcVFjuykz0=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2913, + "width": 196.193359375, + "height": 13, + "text": "+getSD(SourceDonnee): String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3Eee900OLuk=", + "_parent": { + "$ref": "AAAAAAGL3DLQmCY54P8=" + }, + "model": { + "$ref": "AAAAAAGL3EeezUzS6YA=" + }, + "font": "Arial;13;0", + "left": 3997, + "top": 2928, + "width": 196.193359375, + "height": 13, + "text": "+to_String(SourceDonnee): String", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3992, + "top": 2908, + "width": 206.193359375, + "height": 38 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3DLQmCY6OQc=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3280, + "top": 1352, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3DLQmCY7Ngc=", + "_parent": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "model": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3280, + "top": 1352, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3992, + "top": 2800, + "width": 206.193359375, + "height": 146, + "nameCompartment": { + "$ref": "AAAAAAGL3DLQlyYubF0=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3DLQmCYzLJk=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3DLQmCY54P8=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3DLQmCY6OQc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3DLQmCY7Ngc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3DMzZkmwpP8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3DMzZkmx2TA=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3DMzZkmyRDk=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmx2TA=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2885, + "width": 165.115234375, + "height": 13, + "text": "«abstract»" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DMzZkmzoys=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmx2TA=" + }, + "font": "Arial;13;1", + "left": 3357, + "top": 2900, + "width": 165.115234375, + "height": 13, + "text": "Entrainement" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DMzZkm0anw=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmx2TA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4809, + "top": 2930, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3DMzZkm1g4k=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmx2TA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4809, + "top": 2930, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3352, + "top": 2880, + "width": 175.115234375, + "height": 38, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DMzZkmyRDk=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3DMzZkmzoys=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3DMzZkm0anw=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DMzZkm1g4k=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3DMzZkm2VYs=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DMzZkm3yLU=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGLrxcxm0yu9ck=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2923, + "width": 165.115234375, + "height": 13, + "text": "+idEntrainement: int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DMzZkm45Gk=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGLrxdjg05lkd0=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2938, + "width": 165.115234375, + "height": 13, + "text": "+date: Date", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL7QbRQNBhx7c=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGL7QbRBNAl41g=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2953, + "width": 165.115234375, + "height": 13, + "text": "+latitude: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DMzZkm59RQ=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGLrxeDFU+VhpI=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2968, + "width": 165.115234375, + "height": 13, + "text": "+longitude: float", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DMzZkm6JIs=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGLrxezwlDFkh4=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2983, + "width": 165.115234375, + "height": 13, + "text": "+description: text", + "horizontalAlignment": 0 + }, + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL3DMzZkm7L1c=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "model": { + "$ref": "AAAAAAGLrxfiTFH1ArI=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 2998, + "width": 165.115234375, + "height": 13, + "text": "+feedback: text", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3352, + "top": 2918, + "width": 175.115234375, + "height": 98 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3DMzZkm8ngY=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL3D2GBgECc9M=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL3D2F3gDGuRs=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3021, + "width": 165.115234375, + "height": 13, + "text": "+getId(): int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++UQVUMgtH4=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL++UQDELkhBM=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3036, + "width": 165.115234375, + "height": 13, + "text": "+getDate(): DateTime", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++U2mUfQLgw=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL++U2j0eU938=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3051, + "width": 165.115234375, + "height": 13, + "text": "+getLocation(): String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++Vh8UyAceA=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL++Vh50xEGPg=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3066, + "width": 165.115234375, + "height": 13, + "text": "+getDescription(): Text", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++WjXFEwtks=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL++WjUVD03ak=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3081, + "width": 165.115234375, + "height": 13, + "text": "+getFeedBack(): String", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL++XHPVXggdY=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "model": { + "$ref": "AAAAAAGL++XHM1Wk8GA=" + }, + "font": "Arial;13;0", + "left": 3357, + "top": 3096, + "width": 165.115234375, + "height": 13, + "text": "+__toString(): String", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3352, + "top": 3016, + "width": 175.115234375, + "height": 98 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3DMzZkm9E/c=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2472, + "top": 1024, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3DMzZkm+Ato=", + "_parent": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "model": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2472, + "top": 1024, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3352, + "top": 2880, + "width": 175.115234375, + "height": 234, + "nameCompartment": { + "$ref": "AAAAAAGL3DMzZkmx2TA=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3DMzZkm2VYs=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3DMzZkm8ngY=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3DMzZkm9E/c=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3DMzZkm+Ato=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3DO5DGG3okQ=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG4Vxk=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "font": "Arial;13;0", + "left": 4326, + "top": 2927, + "width": 77.669921875, + "height": 13, + "alpha": 0.4974685789155705, + "distance": 97.8008179924892, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 1, + "text": "-*activiteList" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG5mQE=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4334, + "top": 2845, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG6kmk=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4290, + "top": 2852, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG7U68=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWG0ZOw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4306, + "top": 2754, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG8UHU=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWG0ZOw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4320, + "top": 2754, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG9eyk=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWG0ZOw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4278, + "top": 2754, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG+1dY=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CmG1yFk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4334, + "top": 2941, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWG/mG8=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CmG1yFk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4346, + "top": 2936, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DO5DWHAtAE=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CmG1yFk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4307, + "top": 2949, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DO5DWHBZf0=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CWG0ZOw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DO5DWHC8CY=", + "_parent": { + "$ref": "AAAAAAGL3DO5DGG3okQ=" + }, + "model": { + "$ref": "AAAAAAGL3DO5CmG1yFk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "tail": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "lineStyle": 1, + "points": "4288:2737;4323:2975", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3DO5DWG4Vxk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DO5DWG5mQE=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DO5DWG6kmk=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3DO5DWG7U68=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3DO5DWG8UHU=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3DO5DWG9eyk=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3DO5DWG+1dY=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3DO5DWG/mG8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3DO5DWHAtAE=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3DO5DWHBZf0=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3DO5DWHC8CY=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3DdoAArKtwk=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArLq4o=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "font": "Arial;13;0", + "left": 4162, + "top": 2788, + "width": 47.328125, + "height": 13, + "alpha": 1.0433323237988876, + "distance": 28.653097563788805, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 1, + "text": "-*sdList" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArM1RQ=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4198, + "top": 2780, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArN2G8=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4163, + "top": 2752, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArOnkE=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grHlaI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4194, + "top": 2760, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArPOz4=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grHlaI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4204, + "top": 2770, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArQnj0=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grHlaI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4175, + "top": 2740, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArRcIQ=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grIS6Y=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4178, + "top": 2781, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArS3XI=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grIS6Y=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4190, + "top": 2787, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DdoAArT1Uk=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grIS6Y=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4154, + "top": 2768, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DdoAArU9sw=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grHlaI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DdoAArVCNA=", + "_parent": { + "$ref": "AAAAAAGL3DdoAArKtwk=" + }, + "model": { + "$ref": "AAAAAAGL3Ddn/grIS6Y=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "tail": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "lineStyle": 1, + "points": "4199:2737;4151:2799", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3DdoAArLq4o=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DdoAArM1RQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DdoAArN2G8=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3DdoAArOnkE=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3DdoAArPOz4=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3DdoAArQnj0=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3DdoAArRcIQ=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3DdoAArS3XI=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3DdoAArT1Uk=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3DdoAArU9sw=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3DdoAArVCNA=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3DewVyCoB1Q=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCp9IE=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4196, + "top": 2989, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCqFY4=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4185, + "top": 3000, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCrus4=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4217, + "top": 2968, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCsgRA=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViClTrY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4218, + "top": 3011, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCttCE=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViClTrY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4207, + "top": 3019, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCuzq0=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViClTrY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4240, + "top": 2994, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCv920=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViCmmWs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4175, + "top": 2968, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCwtKA=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViCmmWs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4168, + "top": 2980, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DewWCCxEwU=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViCmmWs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4192, + "top": 2946, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DewWCCy+4I=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViClTrY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DewWCCzXsQ=", + "_parent": { + "$ref": "AAAAAAGL3DewVyCoB1Q=" + }, + "model": { + "$ref": "AAAAAAGL3DewViCmmWs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DLQlyYtiTQ=" + }, + "tail": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "lineStyle": 1, + "points": "4247:3025;4168:2946", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3DewWCCp9IE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DewWCCqFY4=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DewWCCrus4=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3DewWCCsgRA=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3DewWCCttCE=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3DewWCCuzq0=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3DewWCCv920=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3DewWCCwtKA=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3DewWCCxEwU=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3DewWCCy+4I=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3DewWCCzXsQ=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3DgOnTog8NI=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjohHis=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "font": "Arial;13;0", + "left": 4509, + "top": 2559, + "width": 60.33447265625, + "height": 13, + "alpha": 0.2589997153205553, + "distance": 76.96752561957543, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 1, + "text": "-*statsList" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjoiojs=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4464, + "top": 2563, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjojT9Y=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4472, + "top": 2607, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjokvV8=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDodXGk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4388, + "top": 2595, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjolI+M=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDodXGk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4388, + "top": 2581, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjom8EQ=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDodXGk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4389, + "top": 2622, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjonKzk=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDoedKI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4546, + "top": 2562, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjoobA8=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDoedKI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4541, + "top": 2549, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3DgOnjopwyY=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDoedKI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4556, + "top": 2588, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DgOnjoqPJw=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDodXGk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3DgOnjora1c=", + "_parent": { + "$ref": "AAAAAAGL3DgOnTog8NI=" + }, + "model": { + "$ref": "AAAAAAGL3DgOnDoedKI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 664, + "top": 560, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DJHyBCPzHA=" + }, + "tail": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "lineStyle": 1, + "points": "4366:2621;4575:2578", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3DgOnjohHis=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3DgOnjoiojs=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3DgOnjojT9Y=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3DgOnjokvV8=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3DgOnjolI+M=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3DgOnjom8EQ=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3DgOnjonKzk=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3DgOnjoobA8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3DgOnjopwyY=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3DgOnjoqPJw=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3DgOnjora1c=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3EA5py45w5E=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3EA5py46RZs=", + "_parent": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3EA5py47qQ4=", + "_parent": { + "$ref": "AAAAAAGL3EA5py46RZs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2784, + "top": 48, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EA5py48ztA=", + "_parent": { + "$ref": "AAAAAAGL3EA5py46RZs=" + }, + "font": "Arial;13;1", + "left": 4221, + "top": 1175, + "width": 93.18994140625, + "height": 13, + "text": "CoachManager" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EA5qC499bk=", + "_parent": { + "$ref": "AAAAAAGL3EA5py46RZs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2784, + "top": 48, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EA5qC4+erY=", + "_parent": { + "$ref": "AAAAAAGL3EA5py46RZs=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2784, + "top": 48, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4216, + "top": 1168, + "width": 103.18994140625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EA5py47qQ4=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3EA5py48ztA=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3EA5qC499bk=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EA5qC4+erY=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3EA5qC4/sY4=", + "_parent": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "font": "Arial;13;0", + "left": 4216, + "top": 1193, + "width": 103.18994140625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3EA5qC5AD5k=", + "_parent": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "font": "Arial;13;0", + "left": 4216, + "top": 1203, + "width": 103.18994140625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3EA5qC5B3KQ=", + "_parent": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1392, + "top": 24, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3EA5qC5CL3c=", + "_parent": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "model": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1392, + "top": 24, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4216, + "top": 1168, + "width": 103.18994140625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL3EA5py46RZs=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3EA5qC4/sY4=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3EA5qC5AD5k=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3EA5qC5B3KQ=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3EA5qC5CL3c=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3EC6NugSKAY=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3EC6NugTD+k=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NugUf44=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugTD+k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2881, + "top": -777, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NugVIHM=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugTD+k=" + }, + "font": "Arial;13;1", + "left": 2878, + "top": 822, + "width": 61.38818359375, + "height": 13, + "text": "index.php" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NugW6ig=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugTD+k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2881, + "top": -777, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NugXQtk=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugTD+k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2881, + "top": -777, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 2873, + "top": 815, + "width": 71.38818359375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6NugUf44=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3EC6NugVIHM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3EC6NugW6ig=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NugXQtk=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3EC6NugYR90=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "font": "Arial;13;0", + "left": 2873, + "top": 840, + "width": 71.38818359375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3EC6NugZZ5k=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "font": "Arial;13;0", + "left": 2873, + "top": 850, + "width": 71.38818359375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3EC6Nugaz2E=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2209, + "top": -49, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3EC6NugbE8o=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "model": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2209, + "top": -49, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 2873, + "top": 815, + "width": 71.38818359375, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL3EC6NugTD+k=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3EC6NugYR90=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3EC6NugZZ5k=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3EC6Nugaz2E=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3EC6NugbE8o=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3EC6NugccSE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3EC6NugdYDM=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NugedV8=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugdYDM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3553, + "top": -889, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nugfy9g=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugdYDM=" + }, + "font": "Arial;13;1", + "left": 3286, + "top": 838, + "width": 78.71728515625, + "height": 13, + "text": "Console.php" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nugg3/Q=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugdYDM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3553, + "top": -889, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NughFjQ=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugdYDM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3553, + "top": -889, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3281, + "top": 831, + "width": 88.71728515625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6NugedV8=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3EC6Nugfy9g=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3EC6Nugg3/Q=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NughFjQ=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3EC6NugilgA=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "font": "Arial;13;0", + "left": 3281, + "top": 856, + "width": 88.71728515625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3EC6NugjjkY=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "font": "Arial;13;0", + "left": 3281, + "top": 866, + "width": 88.71728515625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3EC6NugkPS4=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2545, + "top": -105, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3EC6NuglsZk=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "model": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2545, + "top": -105, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3281, + "top": 831, + "width": 88.71728515625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL3EC6NugdYDM=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3EC6NugilgA=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3EC6NugjjkY=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3EC6NugkPS4=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3EC6NuglsZk=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL3EC6Nugm4CE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6Nugnevw=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3112, + "top": 823, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NugoFWs=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3113, + "top": 808, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NugpkNw=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3111, + "top": 852, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NugqVoQ=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGB1i0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2970, + "top": 818, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6Nugr4Fs=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGB1i0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2973, + "top": 804, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NugscZs=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGB1i0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2965, + "top": 845, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NugtRDc=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGCpVw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3254, + "top": 829, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuguAY0=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGCpVw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3252, + "top": 815, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6Nugv3Bs=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGCpVw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3257, + "top": 856, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3EC6NugwZMg=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGB1i0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2649, + "top": 111, + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL3EC6Nugxzvc=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugm4CE=" + }, + "model": { + "$ref": "AAAAAAGLw7pt1PGCpVw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2649, + "top": 111, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6NugSKAY=" + }, + "lineStyle": 1, + "points": "2944:838;3280:851", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3EC6Nugnevw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6NugoFWs=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NugpkNw=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL3EC6NugqVoQ=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL3EC6Nugr4Fs=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL3EC6NugscZs=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL3EC6NugtRDc=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL3EC6NuguAY0=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL3EC6Nugv3Bs=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL3EC6NugwZMg=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL3EC6Nugxzvc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3EC6NugywOI=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3EC6Nugz9NQ=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug0I+c=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugz9NQ=" + }, + "font": "Arial;13;0", + "left": 3590, + "top": 844, + "width": 81.63720703125, + "height": 13, + "text": "«abstract»" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug1sZU=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugz9NQ=" + }, + "font": "Arial;13;1", + "left": 3590, + "top": 859, + "width": 81.63720703125, + "height": 13, + "text": "DataManager" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug2Jf8=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugz9NQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3041, + "top": -585, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug3TP0=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nugz9NQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3041, + "top": -585, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3585, + "top": 839, + "width": 91.63720703125, + "height": 38, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6Nug0I+c=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3EC6Nug1sZU=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3EC6Nug2Jf8=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6Nug3TP0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3EC6Nug47Vw=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "font": "Arial;13;0", + "left": 3585, + "top": 877, + "width": 91.63720703125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3EC6Nug5yqc=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "font": "Arial;13;0", + "left": 3585, + "top": 887, + "width": 91.63720703125, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3EC6Nug6/JU=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2289, + "top": 47, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3EC6Nug7Jso=", + "_parent": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "model": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2289, + "top": 47, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3585, + "top": 839, + "width": 91.63720703125, + "height": 58, + "nameCompartment": { + "$ref": "AAAAAAGL3EC6Nugz9NQ=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3EC6Nug47Vw=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3EC6Nug5yqc=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3EC6Nug6/JU=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3EC6Nug7Jso=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL3EC6Nug8Ro0=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL3EC6Nug9ngw=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug+fE0=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug9ngw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3679, + "top": -695, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6Nug/ut4=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug9ngw=" + }, + "font": "Arial;13;1", + "left": 3565, + "top": 991, + "width": 41.919921875, + "height": 13, + "text": "Stub" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NuhA9+g=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug9ngw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3679, + "top": -695, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL3EC6NuhBHQ0=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug9ngw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3679, + "top": -695, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3560, + "top": 984, + "width": 51.919921875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6Nug+fE0=" + }, + "nameLabel": { + "$ref": "AAAAAAGL3EC6Nug/ut4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL3EC6NuhA9+g=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NuhBHQ0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL3EC6NuhC6ng=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "font": "Arial;13;0", + "left": 3560, + "top": 1009, + "width": 51.919921875, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL3EC6NuhDUz0=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "font": "Arial;13;0", + "left": 3560, + "top": 1019, + "width": 51.919921875, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL3EC6NuhEj+Y=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2608, + "top": -8, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL3EC6NuhFxZI=", + "_parent": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "model": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 2608, + "top": -8, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3560, + "top": 984, + "width": 51.919921875, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL3EC6Nug9ngw=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL3EC6NuhC6ng=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL3EC6NuhDUz0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL3EC6NuhEj+Y=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL3EC6NuhFxZI=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL3EC6NuhGMoE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw7xJLQpG+ik=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhHoNM=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "model": { + "$ref": "AAAAAAGLw7xJLQpG+ik=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3591, + "top": 929, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhI1H0=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "model": { + "$ref": "AAAAAAGLw7xJLQpG+ik=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3577, + "top": 924, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhJlKQ=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "model": { + "$ref": "AAAAAAGLw7xJLQpG+ik=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3620, + "top": 938, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhGMoE=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "lineStyle": 1, + "points": "3592:983;3620:897", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3EC6NuhHoNM=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6NuhI1H0=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NuhJlKQ=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAGL3EC6NuhKhx0=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGLw8OfyokBM5A=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhLBMA=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "model": { + "$ref": "AAAAAAGLw8OfyokBM5A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3477, + "top": 839, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhMeaQ=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "model": { + "$ref": "AAAAAAGLw8OfyokBM5A=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3478, + "top": 824, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EC6NuhN5ak=", + "_parent": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "model": { + "$ref": "AAAAAAGLw8OfyokBM5A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3476, + "top": 868, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EC6NuhKhx0=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6NugccSE=" + }, + "lineStyle": 1, + "points": "3370:855;3584:865", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3EC6NuhLBMA=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EC6NuhMeaQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EC6NuhN5ak=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAGL3EhnLQk/wU8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL3EhnKwk9Pw0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EhnLQlAeLk=", + "_parent": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "model": { + "$ref": "AAAAAAGL3EhnKwk9Pw0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3773, + "top": 2707, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EhnLglBTew=", + "_parent": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "model": { + "$ref": "AAAAAAGL3EhnKwk9Pw0=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3770, + "top": 2692, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL3EhnLglC42U=", + "_parent": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "model": { + "$ref": "AAAAAAGL3EhnKwk9Pw0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3778, + "top": 2736, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL3EhnLQk/wU8=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3BsTqaEI6W8=" + }, + "tail": { + "$ref": "AAAAAAGL3CMxnUgw9Qc=" + }, + "lineStyle": 1, + "points": "3591:2626;3776:2728;4183:2656", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL3EhnLQlAeLk=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL3EhnLglBTew=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL3EhnLglC42U=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL8e8PL0VmSkQ=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL8e8PMEVnGz8=", + "_parent": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL8e8PMEVoIWg=", + "_parent": { + "$ref": "AAAAAAGL8e8PMEVnGz8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1408, + "top": 992, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e8PMUVpAU4=", + "_parent": { + "$ref": "AAAAAAGL8e8PMEVnGz8=" + }, + "font": "Arial;13;1", + "left": 3965, + "top": 1799, + "width": 96.80810546875, + "height": 13, + "text": "UserRepository" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e8PMUVqQ5g=", + "_parent": { + "$ref": "AAAAAAGL8e8PMEVnGz8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1408, + "top": 992, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e8PMUVrcd4=", + "_parent": { + "$ref": "AAAAAAGL8e8PMEVnGz8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1408, + "top": 992, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3960, + "top": 1792, + "width": 106.80810546875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL8e8PMEVoIWg=" + }, + "nameLabel": { + "$ref": "AAAAAAGL8e8PMUVpAU4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL8e8PMUVqQ5g=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8e8PMUVrcd4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL8e8PMUVsK2E=", + "_parent": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "subViews": [ + { + "_type": "UMLAttributeView", + "_id": "AAAAAAGL+8w3rCz3EQg=", + "_parent": { + "$ref": "AAAAAAGL8e8PMUVsK2E=" + }, + "model": { + "$ref": "AAAAAAGL+8w3liysleM=" + }, + "font": "Arial;13;0", + "left": 3965, + "top": 1822, + "width": 96.80810546875, + "height": 13, + "text": "-users: array", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3960, + "top": 1817, + "width": 106.80810546875, + "height": 23 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL8e8PMUVtEH0=", + "_parent": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "font": "Arial;13;0", + "left": 3960, + "top": 1840, + "width": 106.80810546875, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL8e8PMUVurv4=", + "_parent": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 704, + "top": 496, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL8e8PMUVvyqI=", + "_parent": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "model": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 704, + "top": 496, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3960, + "top": 1792, + "width": 106.80810546875, + "height": 71, + "nameCompartment": { + "$ref": "AAAAAAGL8e8PMEVnGz8=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL8e8PMUVsK2E=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL8e8PMUVtEH0=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL8e8PMUVurv4=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL8e8PMUVvyqI=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL8e9J0ldJrjo=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL8e9J01dKxDk=", + "_parent": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL8e9J01dLMhE=", + "_parent": { + "$ref": "AAAAAAGL8e9J01dKxDk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "top": -704, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e9J01dMxu0=", + "_parent": { + "$ref": "AAAAAAGL8e9J01dKxDk=" + }, + "font": "Arial;13;1", + "left": 4061, + "top": 959, + "width": 75.86083984375, + "height": 13, + "text": "AuthService" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e9J01dN/AA=", + "_parent": { + "$ref": "AAAAAAGL8e9J01dKxDk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "top": -704, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8e9J01dOzTw=", + "_parent": { + "$ref": "AAAAAAGL8e9J01dKxDk=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1952, + "top": -704, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4056, + "top": 952, + "width": 85.86083984375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL8e9J01dLMhE=" + }, + "nameLabel": { + "$ref": "AAAAAAGL8e9J01dMxu0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL8e9J01dN/AA=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8e9J01dOzTw=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL8e9J01dPxyE=", + "_parent": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "font": "Arial;13;0", + "left": 4056, + "top": 977, + "width": 85.86083984375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL8e9J01dQhvI=", + "_parent": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "font": "Arial;13;0", + "left": 4056, + "top": 987, + "width": 85.86083984375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL8e9J01dRnSs=", + "_parent": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 976, + "top": -352, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL8e9J01dSt+8=", + "_parent": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "model": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 976, + "top": -352, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4056, + "top": 952, + "width": 85.86083984375, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL8e9J01dKxDk=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL8e9J01dPxyE=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL8e9J01dQhvI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL8e9J01dRnSs=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL8e9J01dSt+8=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL8fAHTpcfcxQ=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL8fAHTpcgm1k=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL8fAHT5chwjE=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcgm1k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1248, + "top": -416, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8fAHT5ciXp0=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcgm1k=" + }, + "font": "Arial;13;1", + "left": 3685, + "top": 1175, + "width": 82.3671875, + "height": 13, + "text": "UserManager" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8fAHT5cjZF4=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcgm1k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1248, + "top": -416, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8fAHT5cki6A=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcgm1k=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 1248, + "top": -416, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3680, + "top": 1168, + "width": 92.3671875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL8fAHT5chwjE=" + }, + "nameLabel": { + "$ref": "AAAAAAGL8fAHT5ciXp0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL8fAHT5cjZF4=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8fAHT5cki6A=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL8fAHT5clCB0=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "font": "Arial;13;0", + "left": 3680, + "top": 1193, + "width": 92.3671875, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL8fAHT5cmKsU=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "font": "Arial;13;0", + "left": 3680, + "top": 1203, + "width": 92.3671875, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL8fAHT5cnzVg=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 624, + "top": -208, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL8fAHT5cobGg=", + "_parent": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "model": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 624, + "top": -208, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3680, + "top": 1168, + "width": 92.3671875, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL8fAHTpcgm1k=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL8fAHT5clCB0=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL8fAHT5cmKsU=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL8fAHT5cnzVg=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL8fAHT5cobGg=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL8kwWNOvs/ko=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL8kwWNevt7h4=", + "_parent": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL8kwWNevuGgw=", + "_parent": { + "$ref": "AAAAAAGL8kwWNevt7h4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -544, + "top": 432, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8kwWNevv/0Y=", + "_parent": { + "$ref": "AAAAAAGL8kwWNevt7h4=" + }, + "font": "Arial;13;1", + "left": 3189, + "top": 2743, + "width": 150.97265625, + "height": 13, + "text": "EntrainementRepository" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8kwWNevwRpI=", + "_parent": { + "$ref": "AAAAAAGL8kwWNevt7h4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -544, + "top": 432, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL8kwWNevx3X0=", + "_parent": { + "$ref": "AAAAAAGL8kwWNevt7h4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -544, + "top": 432, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3184, + "top": 2736, + "width": 160.97265625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL8kwWNevuGgw=" + }, + "nameLabel": { + "$ref": "AAAAAAGL8kwWNevv/0Y=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL8kwWNevwRpI=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8kwWNevx3X0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL8kwWNevy7vE=", + "_parent": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "font": "Arial;13;0", + "left": 3184, + "top": 2761, + "width": 160.97265625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL8kwWNevzRQQ=", + "_parent": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "font": "Arial;13;0", + "left": 3184, + "top": 2771, + "width": 160.97265625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL8kwWNev0nPo=", + "_parent": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -272, + "top": 216, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL8kwWNev1L3w=", + "_parent": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "model": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -272, + "top": 216, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3184, + "top": 2736, + "width": 160.97265625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL8kwWNevt7h4=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL8kwWNevy7vE=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL8kwWNevzRQQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL8kwWNev0nPo=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL8kwWNev1L3w=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL8lO7+WPDWLU=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPEK6o=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4021, + "top": 1909, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPF070=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4036, + "top": 1910, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPGdnA=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3992, + "top": 1908, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPHYXo=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPAblU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4023, + "top": 1883, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPIjKE=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPAblU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4036, + "top": 1886, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPJ378=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPAblU=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3996, + "top": 1877, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPK26w=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPBs+g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4020, + "top": 1935, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPLcXE=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPBs+g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4033, + "top": 1934, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lO7+mPMY/Y=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPBs+g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3992, + "top": 1938, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL8lO7+mPN9/A=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPAblU=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL8lO7+mPOJ04=", + "_parent": { + "$ref": "AAAAAAGL8lO7+WPDWLU=" + }, + "model": { + "$ref": "AAAAAAGL8lO7+GPBs+g=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3Bpk6Nh7nd8=" + }, + "tail": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "lineStyle": 1, + "points": "4010:1863;4004:1967", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL8lO7+mPEK6o=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL8lO7+mPF070=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8lO7+mPGdnA=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL8lO7+mPHYXo=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL8lO7+mPIjKE=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL8lO7+mPJ378=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL8lO7+mPK26w=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL8lO7+mPLcXE=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL8lO7+mPMY/Y=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL8lO7+mPN9/A=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL8lO7+mPOJ04=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL8lXBS67DYgg=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBS67EK3I=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3869, + "top": 900, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBS67F6AQ=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3872, + "top": 885, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBS67Gc4s=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3862, + "top": 929, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7HYIA=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7AoxY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3705, + "top": 863, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7Ivfo=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7AoxY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3710, + "top": 850, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7JxMA=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7AoxY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3695, + "top": 888, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7KBwQ=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7B00o=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4032, + "top": 937, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7LPto=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7B00o=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4033, + "top": 924, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL8lXBTK7MGZo=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7B00o=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4031, + "top": 965, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL8lXBTK7NaZA=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7AoxY=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL8lXBTK7OIvI=", + "_parent": { + "$ref": "AAAAAAGL8lXBS67DYgg=" + }, + "model": { + "$ref": "AAAAAAGL8lXBSa7B00o=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6NugywOI=" + }, + "lineStyle": 1, + "points": "3677:878;4055:964", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL8lXBS67EK3I=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL8lXBS67F6AQ=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL8lXBS67Gc4s=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL8lXBTK7HYIA=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL8lXBTK7Ivfo=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL8lXBTK7JxMA=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL8lXBTK7KBwQ=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL8lXBTK7LPto=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL8lXBTK7MGZo=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL8lXBTK7NaZA=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL8lXBTK7OIvI=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL+8rOIEknLJI=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUko0e8=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4170, + "top": 1085, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkpnxA=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4158, + "top": 1094, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkqzew=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4193, + "top": 1066, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkrcbw=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kk5Us=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4221, + "top": 1149, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUks864=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kk5Us=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4209, + "top": 1156, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUktsAY=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kk5Us=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4245, + "top": 1136, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkuZk8=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kl1Ag=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4120, + "top": 1020, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkv5a8=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kl1Ag=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4111, + "top": 1030, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8rOIUkwAc4=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kl1Ag=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4139, + "top": 1000, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+8rOIUkx/wo=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kk5Us=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+8rOIUkyAUc=", + "_parent": { + "$ref": "AAAAAAGL+8rOIEknLJI=" + }, + "model": { + "$ref": "AAAAAAGL+8rOH0kl1Ag=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "tail": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "lineStyle": 1, + "points": "4249:1167;4116:997", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+8rOIUko0e8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+8rOIUkpnxA=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+8rOIUkqzew=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL+8rOIUkrcbw=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL+8rOIUks864=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL+8rOIUktsAY=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL+8rOIUkuZk8=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL+8rOIUkv5a8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL+8rOIUkwAc4=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL+8rOIUkx/wo=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL+8rOIUkyAUc=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL+8tZ+K7c/nM=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7digU=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4369, + "top": 1116, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7eLHc=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4354, + "top": 1119, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7fiuQ=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4398, + "top": 1111, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7gF+o=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967ZQD0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3799, + "top": 1176, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7hbVM=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967ZQD0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3802, + "top": 1163, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7iO2M=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967ZQD0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3792, + "top": 1203, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7j0rE=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967azMY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4167, + "top": 985, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7kGIo=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967azMY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4169, + "top": 999, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+8tZ+a7lIZQ=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967azMY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4164, + "top": 958, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+8tZ+a7mZBU=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967ZQD0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+8tZ+a7nWnA=", + "_parent": { + "$ref": "AAAAAAGL+8tZ+K7c/nM=" + }, + "model": { + "$ref": "AAAAAAGL+8tZ967azMY=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "tail": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "lineStyle": 1, + "points": "3772:1195;4408:1256;4360:984;4142:976", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+8tZ+a7digU=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+8tZ+a7eLHc=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+8tZ+a7fiuQ=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL+8tZ+a7gF+o=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL+8tZ+a7hbVM=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL+8tZ+a7iO2M=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL+8tZ+a7j0rE=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL+8tZ+a7kGIo=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL+8tZ+a7lIZQ=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL+8tZ+a7mZBU=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL+8tZ+a7nWnA=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL+82j3FEcyoc=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL+82j3FEdnM8=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL+82j3VEef7E=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEdnM8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -64, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+82j3VEfYy0=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEdnM8=" + }, + "font": "Arial;13;1", + "left": 3605, + "top": 1295, + "width": 665.8564453125, + "height": 13, + "text": "IGenericRepository" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+82j3VEgwrw=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEdnM8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -64, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+82j3VEha1o=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEdnM8=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -64, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3600, + "top": 1288, + "width": 675.8564453125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL+82j3VEef7E=" + }, + "nameLabel": { + "$ref": "AAAAAAGL+82j3VEfYy0=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL+82j3VEgwrw=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+82j3VEha1o=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL+82j3VEiTxc=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "font": "Arial;13;0", + "left": 3600, + "top": 1313, + "width": 675.8564453125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL+82j3VEjiyg=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "subViews": [ + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+84t2m6K78I=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+84tpm4nUBQ=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1328, + "width": 665.8564453125, + "height": 13, + "text": "+getItemById(id: int)", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86cfHnTO3k=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86cPHlwc+E=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1343, + "width": 665.8564453125, + "height": 13, + "text": "+getNbItems(): int", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86fd305Cww=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1358, + "width": 665.8564453125, + "height": 13, + "text": "+getItems(index: int, count: int, orderingPropertyName: ?String, descending: bool): array", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86ns4CfwV0=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1373, + "width": 665.8564453125, + "height": 13, + "text": "+getItemsByName(substring: String, index: int, count: int, orderingPropertyName: ?String, descending: bool): ?array", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86qHYQFmS4=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1388, + "width": 665.8564453125, + "height": 13, + "text": "+getItemsByName(substring: String, index: int, count: int, orderingPropertyName: ?String, descending: bool)", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86sjYdrzkU=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86sTYcItmQ=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1403, + "width": 665.8564453125, + "height": 13, + "text": "+updateItem(oldItem, newItem): void", + "horizontalAlignment": 0 + }, + { + "_type": "UMLOperationView", + "_id": "AAAAAAGL+86uxIrRU/g=", + "_parent": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "model": { + "$ref": "AAAAAAGL+86ui4puvnk=" + }, + "font": "Arial;13;0", + "left": 3605, + "top": 1418, + "width": 665.8564453125, + "height": 13, + "text": "+deleteItem(item): bool", + "horizontalAlignment": 0 + } + ], + "font": "Arial;13;0", + "left": 3600, + "top": 1323, + "width": 675.8564453125, + "height": 113 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL+82j3VEkf/0=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -32, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL+82j3VEleEk=", + "_parent": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "model": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -32, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3600, + "top": 1288, + "width": 675.8564453125, + "height": 148, + "nameCompartment": { + "$ref": "AAAAAAGL+82j3FEdnM8=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL+82j3VEiTxc=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL+82j3VEjiyg=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL+82j3VEkf/0=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL+82j3VEleEk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL+9O3Fr8A9kM=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL+9O3F78BOMg=", + "_parent": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL+9O3F78CrIE=", + "_parent": { + "$ref": "AAAAAAGL+9O3F78BOMg=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9O3F78DySM=", + "_parent": { + "$ref": "AAAAAAGL+9O3F78BOMg=" + }, + "font": "Arial;13;1", + "left": 3709, + "top": 1519, + "width": 122.07177734375, + "height": 13, + "text": "ITrainingRepository" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9O3F78EMdg=", + "_parent": { + "$ref": "AAAAAAGL+9O3F78BOMg=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9O3F78FN9A=", + "_parent": { + "$ref": "AAAAAAGL+9O3F78BOMg=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3704, + "top": 1512, + "width": 132.07177734375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9O3F78CrIE=" + }, + "nameLabel": { + "$ref": "AAAAAAGL+9O3F78DySM=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL+9O3F78EMdg=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9O3F78FN9A=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL+9O3F78GjZg=", + "_parent": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "font": "Arial;13;0", + "left": 3704, + "top": 1537, + "width": 132.07177734375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL+9O3F78H6KE=", + "_parent": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "font": "Arial;13;0", + "left": 3704, + "top": 1547, + "width": 132.07177734375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL+9O3F78IiiI=", + "_parent": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL+9O3GL8J2/s=", + "_parent": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "model": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3704, + "top": 1512, + "width": 132.07177734375, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL+9O3F78BOMg=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL+9O3F78GjZg=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL+9O3F78H6KE=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL+9O3F78IiiI=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL+9O3GL8J2/s=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL+9PoNNQIuXw=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL+9PoNdQJC5U=", + "_parent": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL+9PoNdQKlXY=", + "_parent": { + "$ref": "AAAAAAGL+9PoNdQJC5U=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 848, + "top": 48, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9PoNdQLUfI=", + "_parent": { + "$ref": "AAAAAAGL+9PoNdQJC5U=" + }, + "font": "Arial;13;1", + "left": 4085, + "top": 1527, + "width": 100.419921875, + "height": 13, + "text": "IUserRepository" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9PoNdQM5Ew=", + "_parent": { + "$ref": "AAAAAAGL+9PoNdQJC5U=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 848, + "top": 48, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL+9PoNdQN2fA=", + "_parent": { + "$ref": "AAAAAAGL+9PoNdQJC5U=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 848, + "top": 48, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4080, + "top": 1520, + "width": 110.419921875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9PoNdQKlXY=" + }, + "nameLabel": { + "$ref": "AAAAAAGL+9PoNdQLUfI=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL+9PoNdQM5Ew=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9PoNdQN2fA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL+9PoNdQOmYg=", + "_parent": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "font": "Arial;13;0", + "left": 4080, + "top": 1545, + "width": 110.419921875, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL+9PoNdQPg/M=", + "_parent": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "font": "Arial;13;0", + "left": 4080, + "top": 1555, + "width": 110.419921875, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL+9PoNdQQOeE=", + "_parent": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 424, + "top": 24, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL+9PoNdQRN8A=", + "_parent": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "model": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 424, + "top": 24, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4080, + "top": 1520, + "width": 110.419921875, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL+9PoNdQJC5U=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL+9PoNdQOmYg=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL+9PoNdQPg/M=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL+9PoNdQQOeE=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL+9PoNdQRN8A=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL+9RSGxB+nHc=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9RSGRB8+vM=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RSGxB/KpY=", + "_parent": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "model": { + "$ref": "AAAAAAGL+9RSGRB8+vM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3816, + "top": 1456, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RSGxCAPdg=", + "_parent": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "model": { + "$ref": "AAAAAAGL+9RSGRB8+vM=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3805, + "top": 1445, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RSGxCBVsg=", + "_parent": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "model": { + "$ref": "AAAAAAGL+9RSGRB8+vM=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3837, + "top": 1477, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9RSGxB+nHc=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "tail": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "lineStyle": 1, + "points": "3791:1511;3864:1436", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9RSGxB/KpY=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9RSGxCAPdg=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9RSGxCBVsg=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL+9RdJRsYynw=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9RdJBsWH7s=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RdJRsZl4s=", + "_parent": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "model": { + "$ref": "AAAAAAGL+9RdJBsWH7s=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4053, + "top": 1482, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RdJhsaMvs=", + "_parent": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "model": { + "$ref": "AAAAAAGL+9RdJBsWH7s=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4043, + "top": 1493, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9RdJhsbpBU=", + "_parent": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "model": { + "$ref": "AAAAAAGL+9RdJBsWH7s=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4074, + "top": 1459, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9RdJRsYynw=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "tail": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "lineStyle": 1, + "points": "4109:1519;4019:1436", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9RdJRsZl4s=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9RdJhsaMvs=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9RdJhsbpBU=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL+9Ru2jbFEaA=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9Ru2TbDJ+A=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Ru2zbGfmg=", + "_parent": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "model": { + "$ref": "AAAAAAGL+9Ru2TbDJ+A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4061, + "top": 1666, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Ru2zbHIig=", + "_parent": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "model": { + "$ref": "AAAAAAGL+9Ru2TbDJ+A=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4047, + "top": 1660, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Ru2zbIGgw=", + "_parent": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "model": { + "$ref": "AAAAAAGL+9Ru2TbDJ+A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4088, + "top": 1677, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9Ru2jbFEaA=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL+9PoNNQIuXw=" + }, + "tail": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "lineStyle": 1, + "points": "4027:1791;4124:1565", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9Ru2zbGfmg=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9Ru2zbHIig=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9Ru2zbIGgw=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL+9Se8smboVw=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9Se8MmZLdo=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Se8smclxw=", + "_parent": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "model": { + "$ref": "AAAAAAGL+9Se8MmZLdo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3357, + "top": 1895, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Se8smdmXM=", + "_parent": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "model": { + "$ref": "AAAAAAGL+9Se8MmZLdo=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3347, + "top": 1884, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9Se8smeaGk=", + "_parent": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "model": { + "$ref": "AAAAAAGL+9Se8MmZLdo=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3378, + "top": 1916, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9Se8smboVw=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL+9O3Fr8A9kM=" + }, + "tail": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "lineStyle": 1, + "points": "3266:2735;3368:1912;3745:1557", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9Se8smclxw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9Se8smdmXM=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9Se8smeaGk=" + } + }, + { + "_type": "UMLDependencyView", + "_id": "AAAAAAGL+9V6x0TV/+Y=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9V6xkTTcHA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9V6yETWAtw=", + "_parent": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "model": { + "$ref": "AAAAAAGL+9V6xkTTcHA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3526, + "top": 1588, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9V6yETXVbY=", + "_parent": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "model": { + "$ref": "AAAAAAGL+9V6xkTTcHA=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3532, + "top": 1574, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9V6yETYeeg=", + "_parent": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "model": { + "$ref": "AAAAAAGL+9V6xkTTcHA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3513, + "top": 1615, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9V6x0TV/+Y=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8e8PL0VmSkQ=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "lineStyle": 1, + "points": "3583:1029;3520:1608;3959:1803", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9V6yETWAtw=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9V6yETXVbY=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9V6yETYeeg=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL+9YU3awXKn8=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwY2s8=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4041, + "top": 1141, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwZHX0=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4055, + "top": 1147, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwaaAc=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4014, + "top": 1130, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwbL8I=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wUZOY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4091, + "top": 1020, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwcWnI=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wUZOY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4103, + "top": 1027, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwd9bg=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wUZOY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4068, + "top": 1006, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwe/3E=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wVXhc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3991, + "top": 1262, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwfUbg=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wVXhc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4004, + "top": 1265, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9YU3qwgFmc=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wVXhc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3964, + "top": 1256, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9YU3qwhe/Y=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wUZOY=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9YU3qwiTuU=", + "_parent": { + "$ref": "AAAAAAGL+9YU3awXKn8=" + }, + "model": { + "$ref": "AAAAAAGL+9YU26wVXhc=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL+82j3FEcyoc=" + }, + "tail": { + "$ref": "AAAAAAGL8e9J0ldJrjo=" + }, + "lineStyle": 1, + "points": "4088:997;3968:1287", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9YU3qwY2s8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9YU3qwZHX0=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9YU3qwaaAc=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL+9YU3qwbL8I=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL+9YU3qwcWnI=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL+9YU3qwd9bg=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL+9YU3qwe/3E=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL+9YU3qwfUbg=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL+9YU3qwgFmc=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL+9YU3qwhe/Y=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL+9YU3qwiTuU=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL+9lB22JQZ5E=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JRtlE=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3666, + "top": 1082, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JSZXA=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3678, + "top": 1073, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JT9HQ=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3643, + "top": 1101, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JUfvg=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJNfVI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3630, + "top": 1034, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JV6mA=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJNfVI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3642, + "top": 1028, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JWWlA=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJNfVI=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3606, + "top": 1047, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JX5gk=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJO1RQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3704, + "top": 1131, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JYWWM=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJO1RQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3713, + "top": 1121, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lB22JZ4j0=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJO1RQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3684, + "top": 1151, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9lB22JagX4=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJNfVI=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9lB3GJbP0E=", + "_parent": { + "$ref": "AAAAAAGL+9lB22JQZ5E=" + }, + "model": { + "$ref": "AAAAAAGL+9lB2WJO1RQ=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8fAHTpcfcxQ=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "lineStyle": 1, + "points": "3603:1029;3708:1167", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9lB22JRtlE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9lB22JSZXA=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9lB22JT9HQ=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL+9lB22JUfvg=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL+9lB22JV6mA=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL+9lB22JWWlA=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL+9lB22JX5gk=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL+9lB22JYWWM=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL+9lB22JZ4j0=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL+9lB22JagX4=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL+9lB3GJbP0E=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL+9lQ0XokzqM=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0XolXG4=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3916, + "top": 1073, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0Xomv/A=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3920, + "top": 1059, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0XoniIU=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3909, + "top": 1102, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0XoorW0=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3ohaCY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3640, + "top": 999, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0Xop+7o=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3ohaCY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3646, + "top": 987, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0noqobQ=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3ohaCY=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3629, + "top": 1024, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0norYrs=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3oiCYc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4193, + "top": 1148, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0nosRNA=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3oiCYc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4195, + "top": 1135, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL+9lQ0notl+k=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3oiCYc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4190, + "top": 1176, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9lQ0nou4Os=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3ohaCY=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL+9lQ0nov3ao=", + "_parent": { + "$ref": "AAAAAAGL+9lQ0XokzqM=" + }, + "model": { + "$ref": "AAAAAAGL+9lQz3oiCYc=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3EA5py45w5E=" + }, + "tail": { + "$ref": "AAAAAAGL3EC6Nug8Ro0=" + }, + "lineStyle": 1, + "points": "3612:1013;4215:1176", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL+9lQ0XolXG4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL+9lQ0Xomv/A=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL+9lQ0XoniIU=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL+9lQ0XoorW0=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL+9lQ0Xop+7o=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL+9lQ0noqobQ=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL+9lQ0norYrs=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL+9lQ0nosRNA=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL+9lQ0notl+k=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL+9lQ0nou4Os=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL+9lQ0nov3ao=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL++Z1Ierpd8M=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1Iurq+hE=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "font": "Arial;13;0", + "left": 3351, + "top": 2848, + "width": 121.03076171875, + "height": 13, + "alpha": 0.6921845475682045, + "distance": 98.95453501482385, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 1, + "text": "-entrainementList" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1Iurrux4=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3340, + "top": 2806, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1IursKqY=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3303, + "top": 2832, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1IurtNUc=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrmj24=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3307, + "top": 2787, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1IuruW3k=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrmj24=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3319, + "top": 2781, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1Iurv9ho=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrmj24=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3282, + "top": 2799, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1Iurw9sk=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrnew4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3348, + "top": 2843, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1Iurx+J8=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrnew4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3358, + "top": 2833, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++Z1IuryFxs=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrnew4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3329, + "top": 2862, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL++Z1Iurz82s=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrmj24=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL++Z1Iur0tvc=", + "_parent": { + "$ref": "AAAAAAGL++Z1Ierpd8M=" + }, + "model": { + "$ref": "AAAAAAGL++Z1IOrnew4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "tail": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "lineStyle": 1, + "points": "3280:2781;3352:2879", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL++Z1Iurq+hE=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL++Z1Iurrux4=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL++Z1IursKqY=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL++Z1IurtNUc=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL++Z1IuruW3k=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL++Z1Iurv9ho=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL++Z1Iurw9sk=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL++Z1Iurx+J8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL++Z1IuryFxs=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL++Z1Iurz82s=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL++Z1Iur0tvc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGL++aCHApuNNY=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGL++aCHApv9g0=", + "_parent": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGL++aCHApwYGY=", + "_parent": { + "$ref": "AAAAAAGL++aCHApv9g0=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL++aCHApxh8E=", + "_parent": { + "$ref": "AAAAAAGL++aCHApv9g0=" + }, + "font": "Arial;13;1", + "left": 3397, + "top": 3215, + "width": 124.95361328125, + "height": 13, + "text": "EntrainementSportif" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL++aCHApytmc=", + "_parent": { + "$ref": "AAAAAAGL++aCHApv9g0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGL++aCHApzgMU=", + "_parent": { + "$ref": "AAAAAAGL++aCHApv9g0=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 3392, + "top": 3208, + "width": 134.95361328125, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGL++aCHApwYGY=" + }, + "nameLabel": { + "$ref": "AAAAAAGL++aCHApxh8E=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGL++aCHApytmc=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL++aCHApzgMU=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGL++aCHAp0YNk=", + "_parent": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "font": "Arial;13;0", + "left": 3392, + "top": 3233, + "width": 134.95361328125, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGL++aCHQp1bng=", + "_parent": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "font": "Arial;13;0", + "left": 3392, + "top": 3243, + "width": 134.95361328125, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGL++aCHQp2hLc=", + "_parent": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGL++aCHQp3KP0=", + "_parent": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "model": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 3392, + "top": 3208, + "width": 134.95361328125, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGL++aCHApv9g0=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGL++aCHAp0YNk=" + }, + "operationCompartment": { + "$ref": "AAAAAAGL++aCHQp1bng=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGL++aCHQp2hLc=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGL++aCHQp3KP0=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGL++arOhiEW1s=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL++arORiCGus=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++arOxiFTMI=", + "_parent": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "model": { + "$ref": "AAAAAAGL++arORiCGus=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3437, + "top": 3154, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++arOxiGkAc=", + "_parent": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "model": { + "$ref": "AAAAAAGL++arORiCGus=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3422, + "top": 3155, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++arOxiHKFc=", + "_parent": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "model": { + "$ref": "AAAAAAGL++arORiCGus=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3466, + "top": 3153, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL++arOhiEW1s=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL3DMzZkmwpP8=" + }, + "tail": { + "$ref": "AAAAAAGL++aCHApuNNY=" + }, + "lineStyle": 1, + "points": "3456:3207;3449:3114", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL++arOxiFTMI=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL++arOxiGkAc=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL++arOxiHKFc=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGL++iBH/dTm1o=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBH/dUZHc=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "font": "Arial;13;0", + "left": 3352, + "top": 2440, + "width": 145.60888671875, + "height": 13, + "alpha": 3.678431948894711, + "distance": 42, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 1, + "text": "#entrainementRepository" + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdVuVs=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 3449, + "top": 2497, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdW3Xk=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3411, + "top": 2474, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdXmHU=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdQzLE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3911, + "top": 2415, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdY5+E=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdQzLE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3911, + "top": 2428, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdZNqU=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdQzLE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3911, + "top": 2387, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdaKH4=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdR3xE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3303, + "top": 2714, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdblc8=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdR3xE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3315, + "top": 2719, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGL++iBIPdcVS0=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdR3xE=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 3277, + "top": 2704, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL++iBIPddals=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdQzLE=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGL++iBIPdem5g=", + "_parent": { + "$ref": "AAAAAAGL++iBH/dTm1o=" + }, + "model": { + "$ref": "AAAAAAGL++iBHvdR3xE=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGL8kwWNOvs/ko=" + }, + "tail": { + "$ref": "AAAAAAGL3BqoCyTo5V4=" + }, + "lineStyle": 1, + "points": "3935:2402;3424:2488;3277:2735", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGL++iBH/dUZHc=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGL++iBIPdVuVs=" + }, + "propertyLabel": { + "$ref": "AAAAAAGL++iBIPdW3Xk=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGL++iBIPdXmHU=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGL++iBIPdY5+E=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGL++iBIPdZNqU=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGL++iBIPdaKH4=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGL++iBIPdblc8=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGL++iBIPdcVS0=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGL++iBIPddals=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGL++iBIPdem5g=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGMBpdAZwuU9Ko=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGMBpdAaAuVC8E=", + "_parent": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGMBpdAaAuWiv8=", + "_parent": { + "$ref": "AAAAAAGMBpdAaAuVC8E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpdAaAuXB5Q=", + "_parent": { + "$ref": "AAAAAAGMBpdAaAuVC8E=" + }, + "font": "Arial;13;1", + "left": 4613, + "top": 815, + "width": 70.08447265625, + "height": 13, + "text": "IFileReader" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpdAaAuY0IM=", + "_parent": { + "$ref": "AAAAAAGMBpdAaAuVC8E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpdAaAuZ2rI=", + "_parent": { + "$ref": "AAAAAAGMBpdAaAuVC8E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -16, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4608, + "top": 808, + "width": 80.08447265625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGMBpdAaAuWiv8=" + }, + "nameLabel": { + "$ref": "AAAAAAGMBpdAaAuXB5Q=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGMBpdAaAuY0IM=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBpdAaAuZ2rI=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGMBpdAaQuaSkI=", + "_parent": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "font": "Arial;13;0", + "left": 4608, + "top": 833, + "width": 80.08447265625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGMBpdAaQubhRA=", + "_parent": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "font": "Arial;13;0", + "left": 4608, + "top": 843, + "width": 80.08447265625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGMBpdAaQucVWQ=", + "_parent": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -8, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGMBpdAaQudKxk=", + "_parent": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "model": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -8, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4608, + "top": 808, + "width": 80.08447265625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGMBpdAaAuVC8E=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGMBpdAaQuaSkI=" + }, + "operationCompartment": { + "$ref": "AAAAAAGMBpdAaQubhRA=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGMBpdAaQucVWQ=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGMBpdAaQudKxk=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGMBpd9jA67nyk=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGMBpd9jA68eic=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGMBpd9jA69DEg=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA68eic=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpd9jA6++N4=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA68eic=" + }, + "font": "Arial;13;1", + "left": 4573, + "top": 1175, + "width": 75.1181640625, + "height": 13, + "text": "AthlketeMgr" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpd9jA6/8qY=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA68eic=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpd9jA7AJO0=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA68eic=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4568, + "top": 1168, + "width": 85.1181640625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGMBpd9jA69DEg=" + }, + "nameLabel": { + "$ref": "AAAAAAGMBpd9jA6++N4=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGMBpd9jA6/8qY=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBpd9jA7AJO0=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGMBpd9jA7B6Ps=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "font": "Arial;13;0", + "left": 4568, + "top": 1193, + "width": 85.1181640625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGMBpd9jQ7CylI=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "font": "Arial;13;0", + "left": 4568, + "top": 1203, + "width": 85.1181640625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGMBpd9jQ7DFus=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGMBpd9jQ7EUI0=", + "_parent": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "model": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4568, + "top": 1168, + "width": 85.1181640625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGMBpd9jA68eic=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGMBpd9jA7B6Ps=" + }, + "operationCompartment": { + "$ref": "AAAAAAGMBpd9jQ7CylI=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGMBpd9jQ7DFus=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGMBpd9jQ7EUI0=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGMBperHCDV/Mc=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDWjP4=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4613, + "top": 1002, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDXrqs=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4598, + "top": 1000, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDYm6E=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4642, + "top": 1005, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDZ0hM=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDSkv4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4599, + "top": 1133, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDa9C0=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDSkv4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4586, + "top": 1129, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHCDbV2Q=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDSkv4=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4626, + "top": 1140, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHSDcI7U=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDT2kA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4627, + "top": 871, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHSDdRYk=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDT2kA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4613, + "top": 872, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBperHSDee18=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDT2kA=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4655, + "top": 869, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGMBperHSDfwBk=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDSkv4=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGMBperHSDgy0c=", + "_parent": { + "$ref": "AAAAAAGMBperHCDV/Mc=" + }, + "model": { + "$ref": "AAAAAAGMBperGiDT2kA=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "tail": { + "$ref": "AAAAAAGMBpd9jA67nyk=" + }, + "lineStyle": 1, + "points": "4612:1167;4645:853", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGMBperHCDWjP4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGMBperHCDXrqs=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBperHCDYm6E=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGMBperHCDZ0hM=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGMBperHCDa9C0=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGMBperHCDbV2Q=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGMBperHSDcI7U=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGMBperHSDdRYk=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGMBperHSDee18=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGMBperHSDfwBk=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGMBperHSDgy0c=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGMBpe7/iSd2yE=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGMBpe7/iSeTew=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGMBpe7/iSfpKY=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSeTew=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpe7/iSg9/o=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSeTew=" + }, + "font": "Arial;13;1", + "left": 4845, + "top": 999, + "width": 41.919921875, + "height": 13, + "text": "Fit" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpe7/iShO0o=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSeTew=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpe7/iSizgA=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSeTew=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4840, + "top": 992, + "width": 51.919921875, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGMBpe7/iSfpKY=" + }, + "nameLabel": { + "$ref": "AAAAAAGMBpe7/iSg9/o=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGMBpe7/iShO0o=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBpe7/iSizgA=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGMBpe7/iSjG28=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "font": "Arial;13;0", + "left": 4840, + "top": 1017, + "width": 51.919921875, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGMBpe7/iSkAzo=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "font": "Arial;13;0", + "left": 4840, + "top": 1027, + "width": 51.919921875, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGMBpe7/ySlufY=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGMBpe7/ySmCFQ=", + "_parent": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "model": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4840, + "top": 992, + "width": 51.919921875, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGMBpe7/iSeTew=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGMBpe7/iSjG28=" + }, + "operationCompartment": { + "$ref": "AAAAAAGMBpe7/iSkAzo=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGMBpe7/ySlufY=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGMBpe7/ySmCFQ=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGMBpfYWy3ZgGs=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBpfYWi3Xomc=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBpfYXC3aIX8=", + "_parent": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "model": { + "$ref": "AAAAAAGMBpfYWi3Xomc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4746, + "top": 927, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBpfYXC3btwY=", + "_parent": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "model": { + "$ref": "AAAAAAGMBpfYWi3Xomc=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4736, + "top": 938, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBpfYXC3c538=", + "_parent": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "model": { + "$ref": "AAAAAAGMBpfYWi3Xomc=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4765, + "top": 904, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBpfYWy3ZgGs=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGMBpdAZwuU9Ko=" + }, + "tail": { + "$ref": "AAAAAAGMBpe7/iSd2yE=" + }, + "lineStyle": 1, + "points": "4839:992;4674:853", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGMBpfYXC3aIX8=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGMBpfYXC3btwY=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBpfYXC3c538=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGMBpo0VtxckhI=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGMBpo0V9xdlNU=", + "_parent": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGMBpo0V9xe4j4=", + "_parent": { + "$ref": "AAAAAAGMBpo0V9xdlNU=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpo0V9xfU9w=", + "_parent": { + "$ref": "AAAAAAGMBpo0V9xdlNU=" + }, + "font": "Arial;13;1", + "left": 4805, + "top": 3055, + "width": 66.47265625, + "height": 13, + "text": "IAnalyseur" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpo0V9xgOy8=", + "_parent": { + "$ref": "AAAAAAGMBpo0V9xdlNU=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBpo0V9xhYak=", + "_parent": { + "$ref": "AAAAAAGMBpo0V9xdlNU=" + }, + "visible": false, + "font": "Arial;13;0", + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4800, + "top": 3048, + "width": 76.47265625, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGMBpo0V9xe4j4=" + }, + "nameLabel": { + "$ref": "AAAAAAGMBpo0V9xfU9w=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGMBpo0V9xgOy8=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBpo0V9xhYak=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGMBpo0V9xinDc=", + "_parent": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "font": "Arial;13;0", + "left": 4800, + "top": 3073, + "width": 76.47265625, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGMBpo0V9xjdcE=", + "_parent": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "font": "Arial;13;0", + "left": 4800, + "top": 3083, + "width": 76.47265625, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGMBpo0V9xk5v8=", + "_parent": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGMBpo0V9xl6vk=", + "_parent": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "model": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4800, + "top": 3048, + "width": 76.47265625, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGMBpo0V9xdlNU=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGMBpo0V9xinDc=" + }, + "operationCompartment": { + "$ref": "AAAAAAGMBpo0V9xjdcE=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGMBpo0V9xk5v8=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGMBpo0V9xl6vk=" + } + }, + { + "_type": "UMLAssociationView", + "_id": "AAAAAAGMBppPXOnSowQ=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenT8H4=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4619, + "top": 3072, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenUjNw=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4617, + "top": 3057, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenVYiY=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4622, + "top": 3101, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenWrjU=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunPg3A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4467, + "top": 3088, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenXSC0=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunPg3A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4468, + "top": 3074, + "height": 13, + "alpha": 0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenY2s0=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunPg3A=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4465, + "top": 3116, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "edgePosition": 2 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenZWUM=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunQr5E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4771, + "top": 3055, + "height": 13, + "alpha": -0.5235987755982988, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenavXk=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunQr5E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4767, + "top": 3042, + "height": 13, + "alpha": -0.7853981633974483, + "distance": 40, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + } + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBppPXenbBMk=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunQr5E=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4778, + "top": 3082, + "height": 13, + "alpha": 0.5235987755982988, + "distance": 25, + "hostEdge": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + } + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGMBppPXunclvs=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunPg3A=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + }, + { + "_type": "UMLQualifierCompartmentView", + "_id": "AAAAAAGMBppPXundICc=", + "_parent": { + "$ref": "AAAAAAGMBppPXOnSowQ=" + }, + "model": { + "$ref": "AAAAAAGMBppPWunQr5E=" + }, + "visible": false, + "font": "Arial;13;0", + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "tail": { + "$ref": "AAAAAAGL3DH0VM3eelw=" + }, + "lineStyle": 1, + "points": "4443:3112;4799:3074", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGMBppPXenT8H4=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGMBppPXenUjNw=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBppPXenVYiY=" + }, + "showEndOrder": "hide", + "tailRoleNameLabel": { + "$ref": "AAAAAAGMBppPXenWrjU=" + }, + "tailPropertyLabel": { + "$ref": "AAAAAAGMBppPXenXSC0=" + }, + "tailMultiplicityLabel": { + "$ref": "AAAAAAGMBppPXenY2s0=" + }, + "headRoleNameLabel": { + "$ref": "AAAAAAGMBppPXenZWUM=" + }, + "headPropertyLabel": { + "$ref": "AAAAAAGMBppPXenavXk=" + }, + "headMultiplicityLabel": { + "$ref": "AAAAAAGMBppPXenbBMk=" + }, + "tailQualifiersCompartment": { + "$ref": "AAAAAAGMBppPXunclvs=" + }, + "headQualifiersCompartment": { + "$ref": "AAAAAAGMBppPXundICc=" + } + }, + { + "_type": "UMLClassView", + "_id": "AAAAAAGMBqILMi7wY5A=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "subViews": [ + { + "_type": "UMLNameCompartmentView", + "_id": "AAAAAAGMBqILMi7xX9g=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "subViews": [ + { + "_type": "LabelView", + "_id": "AAAAAAGMBqILMi7yY/E=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7xX9g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -496, + "top": 224, + "height": 13 + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBqILMi7zRDg=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7xX9g=" + }, + "font": "Arial;13;1", + "left": 4805, + "top": 3191, + "width": 62.86083984375, + "height": 13, + "text": "Analyseur" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBqILMi70pg8=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7xX9g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -496, + "top": 224, + "width": 73.67724609375, + "height": 13, + "text": "(from Model)" + }, + { + "_type": "LabelView", + "_id": "AAAAAAGMBqILMi71Nx4=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7xX9g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -496, + "top": 224, + "height": 13, + "horizontalAlignment": 1 + } + ], + "font": "Arial;13;0", + "left": 4800, + "top": 3184, + "width": 72.86083984375, + "height": 25, + "stereotypeLabel": { + "$ref": "AAAAAAGMBqILMi7yY/E=" + }, + "nameLabel": { + "$ref": "AAAAAAGMBqILMi7zRDg=" + }, + "namespaceLabel": { + "$ref": "AAAAAAGMBqILMi70pg8=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBqILMi71Nx4=" + } + }, + { + "_type": "UMLAttributeCompartmentView", + "_id": "AAAAAAGMBqILMi72bC0=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "font": "Arial;13;0", + "left": 4800, + "top": 3209, + "width": 72.86083984375, + "height": 10 + }, + { + "_type": "UMLOperationCompartmentView", + "_id": "AAAAAAGMBqILMy73IbQ=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "font": "Arial;13;0", + "left": 4800, + "top": 3219, + "width": 72.86083984375, + "height": 10 + }, + { + "_type": "UMLReceptionCompartmentView", + "_id": "AAAAAAGMBqILMy74L7c=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -248, + "top": 112, + "width": 10, + "height": 10 + }, + { + "_type": "UMLTemplateParameterCompartmentView", + "_id": "AAAAAAGMBqILMy75p6M=", + "_parent": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "model": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "visible": false, + "font": "Arial;13;0", + "left": -248, + "top": 112, + "width": 10, + "height": 10 + } + ], + "font": "Arial;13;0", + "containerChangeable": true, + "left": 4800, + "top": 3184, + "width": 72.86083984375, + "height": 45, + "nameCompartment": { + "$ref": "AAAAAAGMBqILMi7xX9g=" + }, + "attributeCompartment": { + "$ref": "AAAAAAGMBqILMi72bC0=" + }, + "operationCompartment": { + "$ref": "AAAAAAGMBqILMy73IbQ=" + }, + "receptionCompartment": { + "$ref": "AAAAAAGMBqILMy74L7c=" + }, + "templateParameterCompartment": { + "$ref": "AAAAAAGMBqILMy75p6M=" + } + }, + { + "_type": "UMLGeneralizationView", + "_id": "AAAAAAGMBsEyOiaLjws=", + "_parent": { + "$ref": "AAAAAAFF+qBtyKM79qY=" + }, + "model": { + "$ref": "AAAAAAGMBsEyOCaJKLw=" + }, + "subViews": [ + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBsEyOiaMm/Q=", + "_parent": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "model": { + "$ref": "AAAAAAGMBsEyOCaJKLw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4821, + "top": 3131, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBsEyOiaNpAg=", + "_parent": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "model": { + "$ref": "AAAAAAGMBsEyOCaJKLw=" + }, + "visible": null, + "font": "Arial;13;0", + "left": 4806, + "top": 3131, + "height": 13, + "alpha": 1.5707963267948966, + "distance": 30, + "hostEdge": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "edgePosition": 1 + }, + { + "_type": "EdgeLabelView", + "_id": "AAAAAAGMBsEyOiaOgTs=", + "_parent": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "model": { + "$ref": "AAAAAAGMBsEyOCaJKLw=" + }, + "visible": false, + "font": "Arial;13;0", + "left": 4850, + "top": 3132, + "height": 13, + "alpha": -1.5707963267948966, + "distance": 15, + "hostEdge": { + "$ref": "AAAAAAGMBsEyOiaLjws=" + }, + "edgePosition": 1 + } + ], + "font": "Arial;13;0", + "head": { + "$ref": "AAAAAAGMBpo0VtxckhI=" + }, + "tail": { + "$ref": "AAAAAAGMBqILMi7wY5A=" + }, + "lineStyle": 1, + "points": "4835:3183;4837:3093", + "showVisibility": true, + "nameLabel": { + "$ref": "AAAAAAGMBsEyOiaMm/Q=" + }, + "stereotypeLabel": { + "$ref": "AAAAAAGMBsEyOiaNpAg=" + }, + "propertyLabel": { + "$ref": "AAAAAAGMBsEyOiaOgTs=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLo/fkFXnWSO0=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Utilisateur", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLpAecPh2uaoQ=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "source": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "target": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + } + }, + { + "_type": "UMLConstraint", + "_id": "AAAAAAGLpAxpgR4ZI4c=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "Constraint1" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8Girlz2pU0=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8Girlz3DrY=", + "_parent": { + "$ref": "AAAAAAGLw8Girlz2pU0=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8Girlz43FQ=", + "_parent": { + "$ref": "AAAAAAGLw8Girlz2pU0=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3BrkDnIc/Ag=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "role", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3BrkD3IdNgc=", + "_parent": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3BrkD3IeED0=", + "_parent": { + "$ref": "AAAAAAGL3BrkDnIc/Ag=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "navigable": "navigable" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL+9pa8rlijfg=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "id", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL4p5pjeQNzxA=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "username", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAD5vx0yijE=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "id", + "type": "" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAHrOB1Dmpw=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "nom", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAHubx1JTgc=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "prenom", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAHxSR1PUSs=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "email", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAH0SB1VgF8=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "sexe", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAH2wh1b3Gg=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "taille", + "visibility": "private", + "type": "Float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAH5dB1h8j4=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "poids", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAH8Jx1ngTU=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "motDePasse", + "visibility": "private", + "type": "String" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpAH+3B1t8HQ=", + "_parent": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "name": "dateNaissance", + "visibility": "private", + "type": "Date" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpAZHmx2CSnc=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Coach", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLpAzL8h4kabg=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "source": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "target": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCliuwcCjzg=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCliuwcDUVw=", + "_parent": { + "$ref": "AAAAAAGLpCliuwcCjzg=" + }, + "reference": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCliuwcEgfY=", + "_parent": { + "$ref": "AAAAAAGLpCliuwcCjzg=" + }, + "reference": { + "$ref": "AAAAAAGLpCIKk+d152w=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrxtF+5qFc8A=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtF+5qGyTw=", + "_parent": { + "$ref": "AAAAAAGLrxtF+5qFc8A=" + }, + "reference": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtF+5qHrhY=", + "_parent": { + "$ref": "AAAAAAGLrxtF+5qFc8A=" + }, + "reference": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLrxumQrU4vyI=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "source": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "target": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw8G3EmoOXHk=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "source": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "target": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3BvCOTlsc2M=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "name": "*lesAthletes", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3BvCOjltmkU=", + "_parent": { + "$ref": "AAAAAAGL3BvCOTlsc2M=" + }, + "reference": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3BvCOjluKwE=", + "_parent": { + "$ref": "AAAAAAGL3BvCOTlsc2M=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL3B0hp6VJcj4=", + "_parent": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "source": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + }, + "target": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + } + ], + "stereotype": "abstract" + }, + { + "_type": "UMLInterface", + "_id": "AAAAAAGLpAwf8B3QX1g=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Interface1" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpAzboB41ECQ=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Athlete", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLpAz8rx5frvk=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCNbyef3xVM=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCNbyuf4TUk=", + "_parent": { + "$ref": "AAAAAAGLpCNbyef3xVM=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCNbyuf5Owk=", + "_parent": { + "$ref": "AAAAAAGLpCNbyef3xVM=" + }, + "reference": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLpCUhQfKy6BM=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrw2ZlZxbXCg=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrw2ZlZxcFvQ=", + "_parent": { + "$ref": "AAAAAAGLrw2ZlZxbXCg=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrw2ZlZxdZjo=", + "_parent": { + "$ref": "AAAAAAGLrw2ZlZxbXCg=" + }, + "reference": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrxtvS62Q1yw=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtvS62RQtA=", + "_parent": { + "$ref": "AAAAAAGLrxtvS62Q1yw=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtvTK2SVQE=", + "_parent": { + "$ref": "AAAAAAGLrxtvS62Q1yw=" + }, + "reference": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLrx7/fTi27wg=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrx/5OVEi78k=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrx/5OVEjXTE=", + "_parent": { + "$ref": "AAAAAAGLrx/5OVEi78k=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrx/5OVEkE+s=", + "_parent": { + "$ref": "AAAAAAGLrx/5OVEi78k=" + }, + "reference": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLryAmY1g6f3w=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw8HHMXjjv4w=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL3B0TsZu6iEw=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "source": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "target": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3DO5CWGzYdk=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "*activiteList", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DO5CWG0ZOw=", + "_parent": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DO5CmG1yFk=", + "_parent": { + "$ref": "AAAAAAGL3DO5CWGzYdk=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "navigable": "navigable" + }, + "visibility": "private" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3Ddn/grGOiw=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "*sdList", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3Ddn/grHlaI=", + "_parent": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3Ddn/grIS6Y=", + "_parent": { + "$ref": "AAAAAAGL3Ddn/grGOiw=" + }, + "reference": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "navigable": "navigable" + }, + "visibility": "private" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3DgOmzocF5c=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "*statsList", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DgOnDodXGk=", + "_parent": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DgOnDoedKI=", + "_parent": { + "$ref": "AAAAAAGL3DgOmzocF5c=" + }, + "reference": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "navigable": "navigable" + }, + "visibility": "private" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3D32NRysQcE=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3D32NRytcgc=", + "_parent": { + "$ref": "AAAAAAGL3D32NRysQcE=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3D32NRyuVZo=", + "_parent": { + "$ref": "AAAAAAGL3D32NRysQcE=" + }, + "name": "ent", + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + } + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3Cav216fXX4=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "getAthlete", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3CbrLmGdRT8=", + "_parent": { + "$ref": "AAAAAAGL3Cav216fXX4=" + }, + "type": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3CcA1GT//kE=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "getActivite", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3Cg0I2bvypE=", + "_parent": { + "$ref": "AAAAAAGL3CcA1GT//kE=" + }, + "type": "lesActivite", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3DDNcZtsRlI=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "getStatistiques", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DEvup1chzs=", + "_parent": { + "$ref": "AAAAAAGL3DDNcZtsRlI=" + }, + "type": "lesStats", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3EaRsi0pEF4=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "getSourceDonnees", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EbayDAnCWI=", + "_parent": { + "$ref": "AAAAAAGL3EaRsi0pEF4=" + }, + "type": "lesSD", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3DEwGp4As4s=", + "_parent": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "name": "__toString", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DGxWJ/xM/c=", + "_parent": { + "$ref": "AAAAAAGL3DEwGp4As4s=" + }, + "type": "String", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpCIKk+d152w=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Analyse", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpDFQTUb/JFU=", + "_parent": { + "$ref": "AAAAAAGLpCIKk+d152w=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpDFQTUcAb8I=", + "_parent": { + "$ref": "AAAAAAGLpDFQTUb/JFU=" + }, + "reference": { + "$ref": "AAAAAAGLpCIKk+d152w=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpDFQTUcBF6U=", + "_parent": { + "$ref": "AAAAAAGLpDFQTUb/JFU=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpCJOKOeiXS4=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Activite", + "ownedElements": [ + { + "_type": "UMLDependency", + "_id": "AAAAAAGLpCQyD+pd5dY=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "source": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "target": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCkkyQISTtc=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCkkyQIT3V8=", + "_parent": { + "$ref": "AAAAAAGLpCkkyQISTtc=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCkkyQIUk7c=", + "_parent": { + "$ref": "AAAAAAGLpCkkyQISTtc=" + }, + "reference": { + "$ref": "AAAAAAGLpCIKk+d152w=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCrtIwt6IIM=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCrtJAt7teE=", + "_parent": { + "$ref": "AAAAAAGLpCrtIwt6IIM=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCrtJAt8tqE=", + "_parent": { + "$ref": "AAAAAAGLpCrtIwt6IIM=" + }, + "reference": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3DewVSCksyY=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DewViClTrY=", + "_parent": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DewViCmmWs=", + "_parent": { + "$ref": "AAAAAAGL3DewVSCksyY=" + }, + "reference": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGMBppPWenO/AQ=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGMBppPWunPg3A=", + "_parent": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGMBppPWunQr5E=", + "_parent": { + "$ref": "AAAAAAGMBppPWenO/AQ=" + }, + "reference": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + }, + "navigable": "navigable" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLpCXSK/WOLkA=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "idActivite", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxCVfeebjRQ=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "type", + "visibility": "private", + "type": "string" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxCvKejL/fw=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "date", + "visibility": "private", + "type": "Date" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxDHu+n7GHc=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "heureDebut", + "visibility": "private", + "type": "time" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxDu8esr6vo=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "heureFin", + "visibility": "private", + "type": "time" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxEIwOxboHI=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "effortRessenti", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxJXpe2Lor0=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "variabilite", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxKISe67v6E=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "variance", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxKpzu/rHo4=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "ecartType", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxLaO/Ebr8k=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "moyenne", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxL5PfJLk04=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "maximum", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxM0SfWY9pQ=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "minimum", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxNQCvbIr2U=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "TemperatureMoyenne", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGMBkKf7yn3AyI=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "pause", + "visibility": "private", + "type": "bool" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3DQ2catj1/Q=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "getActivite", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DSrMq6LST8=", + "_parent": { + "$ref": "AAAAAAGL3DQ2catj1/Q=" + }, + "type": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3DTgKchiipU=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "getAnalyse", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DXHucptwRw=", + "_parent": { + "$ref": "AAAAAAGL3DTgKchiipU=" + }, + "name": "a1", + "type": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + } + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DXHuspuz9Q=", + "_parent": { + "$ref": "AAAAAAGL3DTgKchiipU=" + }, + "type": "String", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3DXeGc46SeI=", + "_parent": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "name": "toString", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DYdBdBF0T4=", + "_parent": { + "$ref": "AAAAAAGL3DXeGc46SeI=" + }, + "name": "Activite", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3DYdBtBGMg8=", + "_parent": { + "$ref": "AAAAAAGL3DXeGc46SeI=" + }, + "type": "String", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpCMdQOfM2Wo=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Activitheque", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCN16+h8aQ0=", + "_parent": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + }, + "name": "lesActivites", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCN17+h9pms=", + "_parent": { + "$ref": "AAAAAAGLpCN16+h8aQ0=" + }, + "reference": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCN17+h+bfw=", + "_parent": { + "$ref": "AAAAAAGLpCN16+h8aQ0=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "navigable": "navigable" + }, + "visibility": "private" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpCTkfe4C0zU=", + "_parent": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + }, + "name": "*lesActivites", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCTkfu4DUbA=", + "_parent": { + "$ref": "AAAAAAGLpCTkfe4C0zU=" + }, + "reference": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpCTkfu4EADw=", + "_parent": { + "$ref": "AAAAAAGLpCTkfe4C0zU=" + }, + "reference": { + "$ref": "AAAAAAGLpCJOKOeiXS4=" + }, + "navigable": "navigable" + } + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGLpCVoW/TUDTs=", + "_parent": { + "$ref": "AAAAAAGLpCMdQOfM2Wo=" + }, + "name": "Operation1" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpCqsVQhTM54=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "SourceDonnee", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxTIICbUAdU=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "idSource", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxTswiiLUpA=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "Type", + "visibility": "private", + "type": "enum" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxVKVSm7bms=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "modele", + "visibility": "private", + "type": "string" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxV3+SrrCr8=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "precision", + "visibility": "private", + "type": "enum" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxWfnSwbQ58=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "dateDerniereUtilisation", + "visibility": "private", + "type": "Date" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3EcVFjuykz0=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "getSD", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3Ed/tEBUogw=", + "_parent": { + "$ref": "AAAAAAGL3EcVFjuykz0=" + }, + "name": "SourceDonnee", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3Ed/tUBVIpo=", + "_parent": { + "$ref": "AAAAAAGL3EcVFjuykz0=" + }, + "type": "String", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3EeezUzS6YA=", + "_parent": { + "$ref": "AAAAAAGLpCqsVQhTM54=" + }, + "name": "to_String", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EfxCE/QIC8=", + "_parent": { + "$ref": "AAAAAAGL3EeezUzS6YA=" + }, + "name": "SourceDonnee", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EfxCk/RWz4=", + "_parent": { + "$ref": "AAAAAAGL3EeezUzS6YA=" + }, + "type": "String", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpC6+3hxaFwM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Notification", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpC8ityhF+Rs=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpC8iuChGpgc=", + "_parent": { + "$ref": "AAAAAAGLpC8ityhF+Rs=" + }, + "reference": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpC8iuChHuYc=", + "_parent": { + "$ref": "AAAAAAGLpC8ityhF+Rs=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "navigable": "navigable" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwTQNkoBs18=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "idNotification", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwWAclJrDg4=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "message", + "visibility": "private", + "type": "text" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwXMTFPyfWM=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "date", + "visibility": "private", + "type": "Date" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwXq6FUBKfs=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "statut", + "visibility": "private", + "type": "boolean" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwhVcFox6nk=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "Urgence", + "visibility": "private", + "type": "enum" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGLrwVqf1F1q2A=", + "_parent": { + "$ref": "AAAAAAGLpC6+3hxaFwM=" + }, + "name": "Operation1" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpDCydyvBWA4=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Statistique", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLpDDf2zNOiFs=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpDDf2zNP3wA=", + "_parent": { + "$ref": "AAAAAAGLpDDf2zNOiFs=" + }, + "reference": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLpDDf2zNQzDU=", + "_parent": { + "$ref": "AAAAAAGLpDDf2zNOiFs=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "navigable": "navigable" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwixuGGJpE4=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "idStatistique", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwlhdmOIz0E=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "distanceTotale", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwmwgWUPuog=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "poids", + "visibility": "private", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwnYLWYeNa4=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "tempsTotal", + "visibility": "private", + "type": "time" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwoPTGct0ws=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "FCmoyenne", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwps72g8dI8=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "FCmin", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwqb7mlLpYw=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "FCmax", + "visibility": "private", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrwq/JGpaMCs=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "caloriesBrulées", + "visibility": "private", + "type": "int" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3EVAEQqWm2c=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "getStatistique", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EWyFw84O9s=", + "_parent": { + "$ref": "AAAAAAGL3EVAEQqWm2c=" + }, + "type": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3EWydxA200E=", + "_parent": { + "$ref": "AAAAAAGLpDCydyvBWA4=" + }, + "name": "__toString", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EX7bBOIgbw=", + "_parent": { + "$ref": "AAAAAAGL3EWydxA200E=" + }, + "name": "Statistique", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3EX7bROJu3A=", + "_parent": { + "$ref": "AAAAAAGL3EWydxA200E=" + }, + "type": "String", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpDGNPV37CeU=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Main", + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGLpDG1k1/VDfE=", + "_parent": { + "$ref": "AAAAAAGLpDGNPV37CeU=" + }, + "name": "Operation1" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpDN9jGOcNzo=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Afficheur" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpDOU2mUWdIY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Saissiseur" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLpDO85Wao3Xs=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Suppresseur" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLrxb6dUqeBKo=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Entrainement", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL++OFOjnitkY=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "source": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "target": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + } + } + ], + "stereotype": "abstract", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxcxm0yu9ck=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "idEntrainement", + "type": "int" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxdjg05lkd0=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "date", + "type": "Date" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL7QbRBNAl41g=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "latitude", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxeDFU+VhpI=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "longitude", + "type": "float" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxezwlDFkh4=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "description", + "type": "text" + }, + { + "_type": "UMLAttribute", + "_id": "AAAAAAGLrxfiTFH1ArI=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "feedback", + "type": "text" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3D2F3gDGuRs=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "getId", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3D3LVQdJ3C4=", + "_parent": { + "$ref": "AAAAAAGL3D2F3gDGuRs=" + }, + "type": "int", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++UQDELkhBM=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "getDate", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++U2OEZpVpc=", + "_parent": { + "$ref": "AAAAAAGL++UQDELkhBM=" + }, + "type": "DateTime", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++U2j0eU938=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "getLocation", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++VhlEsZBcw=", + "_parent": { + "$ref": "AAAAAAGL++U2j0eU938=" + }, + "type": "String", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++Vh50xEGPg=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "getDescription", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++Wi6k/JzIU=", + "_parent": { + "$ref": "AAAAAAGL++Vh50xEGPg=" + }, + "type": "Text", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++WjUVD03ak=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "getFeedBack", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++XGtVR5vT8=", + "_parent": { + "$ref": "AAAAAAGL++WjUVD03ak=" + }, + "type": "String", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++XHM1Wk8GA=", + "_parent": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "name": "__toString", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++XvGlkp8eA=", + "_parent": { + "$ref": "AAAAAAGL++XHM1Wk8GA=" + }, + "type": "String", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLrxlW1I2zOyU=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Groupe", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrxtgF6RW9mw=", + "_parent": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtgF6RXHhs=", + "_parent": { + "$ref": "AAAAAAGLrxtgF6RW9mw=" + }, + "reference": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxtgF6RY8Ic=", + "_parent": { + "$ref": "AAAAAAGLrxtgF6RW9mw=" + }, + "reference": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLrxxzThcUhGA=", + "_parent": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxxzThcVL6o=", + "_parent": { + "$ref": "AAAAAAGLrxxzThcUhGA=" + }, + "reference": { + "$ref": "AAAAAAGLrxlW1I2zOyU=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLrxxzThcWPZ8=", + "_parent": { + "$ref": "AAAAAAGLrxxzThcUhGA=" + }, + "reference": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw7nD48sOfVM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "index.php", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw7pt1PGAP1c=", + "_parent": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7pt1PGB1i0=", + "_parent": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "reference": { + "$ref": "AAAAAAGLw7nD48sOfVM=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7pt1PGCpVw=", + "_parent": { + "$ref": "AAAAAAGLw7pt1PGAP1c=" + }, + "reference": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw7oXg9WQpWI=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Console.php", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw7x8nxMcncI=", + "_parent": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7x8nxMdRU0=", + "_parent": { + "$ref": "AAAAAAGLw7x8nxMcncI=" + }, + "reference": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7x8nxMeKxY=", + "_parent": { + "$ref": "AAAAAAGLw7x8nxMcncI=" + }, + "reference": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLw8OfyokBM5A=", + "_parent": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "source": { + "$ref": "AAAAAAGLw7oXg9WQpWI=" + }, + "target": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw7v65PPlleU=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "DataManager", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw739qDtrDhg=", + "_parent": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw739qDtsLsw=", + "_parent": { + "$ref": "AAAAAAGLw739qDtrDhg=" + }, + "reference": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw739qDtt8oQ=", + "_parent": { + "$ref": "AAAAAAGLw739qDtrDhg=" + }, + "reference": { + "$ref": "AAAAAAGLw722NTGx6eY=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3EEppBTCx28=", + "_parent": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3EEppBTDPCs=", + "_parent": { + "$ref": "AAAAAAGL3EEppBTCx28=" + }, + "reference": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3EEppBTE3EY=", + "_parent": { + "$ref": "AAAAAAGL3EEppBTCx28=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lXBSa6/2w4=", + "_parent": { + "$ref": "AAAAAAGLw7v65PPlleU=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lXBSa7AoxY=", + "_parent": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "reference": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lXBSa7B00o=", + "_parent": { + "$ref": "AAAAAAGL8lXBSa6/2w4=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "navigable": "navigable" + } + } + ], + "stereotype": "abstract" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw7wcvPtpS0g=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Stub", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw7xJLQpG+ik=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "source": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "target": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw79ywHVPvfw=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw79ywHVQcT8=", + "_parent": { + "$ref": "AAAAAAGLw79ywHVPvfw=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw79ywHVRW1U=", + "_parent": { + "$ref": "AAAAAAGLw79ywHVPvfw=" + }, + "reference": { + "$ref": "AAAAAAGLw722NTGx6eY=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLw8O3vpcZDOs=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "source": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "target": { + "$ref": "AAAAAAGLw722NTGx6eY=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8e3m2zur3i0=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8e3m3DusHLI=", + "_parent": { + "$ref": "AAAAAAGL8e3m2zur3i0=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8e3m3Dut15M=", + "_parent": { + "$ref": "AAAAAAGL8e3m2zur3i0=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lNA6tzH31s=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNA6tzIag0=", + "_parent": { + "$ref": "AAAAAAGL8lNA6tzH31s=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNA6tzJ0wg=", + "_parent": { + "$ref": "AAAAAAGL8lNA6tzH31s=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+8owjNKG+JM=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8owjNKHXMk=", + "_parent": { + "$ref": "AAAAAAGL+8owjNKG+JM=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8owjNKIBW4=", + "_parent": { + "$ref": "AAAAAAGL+8owjNKG+JM=" + }, + "reference": { + "$ref": "AAAAAAGL+8nHIFKZGGE=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGL+9V6xkTTcHA=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "source": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "target": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+9lB2GJMfIE=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9lB2WJNfVI=", + "_parent": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9lB2WJO1RQ=", + "_parent": { + "$ref": "AAAAAAGL+9lB2GJMfIE=" + }, + "reference": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+9lQz3og1pg=", + "_parent": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9lQz3ohaCY=", + "_parent": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "reference": { + "$ref": "AAAAAAGLw7wcvPtpS0g=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9lQz3oiCYc=", + "_parent": { + "$ref": "AAAAAAGL+9lQz3og1pg=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw722NTGx6eY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IUserManager", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw77Um1toR1M=", + "_parent": { + "$ref": "AAAAAAGLw722NTGx6eY=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw77Um1tpvS8=", + "_parent": { + "$ref": "AAAAAAGLw77Um1toR1M=" + }, + "reference": { + "$ref": "AAAAAAGLw722NTGx6eY=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw77Um1tqTz8=", + "_parent": { + "$ref": "AAAAAAGLw77Um1toR1M=" + }, + "reference": { + "$ref": "AAAAAAGLw75/NVNSG5E=" + }, + "navigable": "navigable" + } + } + ], + "stereotype": "sbtract" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw74acUM+FsM=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "UserManager", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw75J1lDRG8o=", + "_parent": { + "$ref": "AAAAAAGLw74acUM+FsM=" + }, + "source": { + "$ref": "AAAAAAGLw74acUM+FsM=" + }, + "target": { + "$ref": "AAAAAAGLw722NTGx6eY=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw7+J/n3/B1Y=", + "_parent": { + "$ref": "AAAAAAGLw74acUM+FsM=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7+J/n4AoQo=", + "_parent": { + "$ref": "AAAAAAGLw7+J/n3/B1Y=" + }, + "reference": { + "$ref": "AAAAAAGLw74acUM+FsM=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw7+J/n4BrBk=", + "_parent": { + "$ref": "AAAAAAGLw7+J/n3/B1Y=" + }, + "reference": { + "$ref": "AAAAAAGLw75/NVNSG5E=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGLw8PRbqZ11JM=", + "_parent": { + "$ref": "AAAAAAGLw74acUM+FsM=" + }, + "source": { + "$ref": "AAAAAAGLw74acUM+FsM=" + }, + "target": { + "$ref": "AAAAAAGLw75/NVNSG5E=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw75/NVNSG5E=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IAuthService", + "stereotype": "abstract" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw77mx15mj/c=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "AuthService", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw78az2rf0JI=", + "_parent": { + "$ref": "AAAAAAGLw77mx15mj/c=" + }, + "source": { + "$ref": "AAAAAAGLw77mx15mj/c=" + }, + "target": { + "$ref": "AAAAAAGLw75/NVNSG5E=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8AdI58up9U=", + "_parent": { + "$ref": "AAAAAAGLw77mx15mj/c=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8AdI58v8mI=", + "_parent": { + "$ref": "AAAAAAGLw8AdI58up9U=" + }, + "reference": { + "$ref": "AAAAAAGLw77mx15mj/c=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8AdI58w4bI=", + "_parent": { + "$ref": "AAAAAAGLw8AdI58up9U=" + }, + "reference": { + "$ref": "AAAAAAGLw7+uCZK14Kw=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8DsaAT3Z3E=", + "_parent": { + "$ref": "AAAAAAGLw77mx15mj/c=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8DsaQT4sn8=", + "_parent": { + "$ref": "AAAAAAGLw8DsaAT3Z3E=" + }, + "reference": { + "$ref": "AAAAAAGLw77mx15mj/c=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8DsaQT5+dg=", + "_parent": { + "$ref": "AAAAAAGLw8DsaAT3Z3E=" + }, + "reference": { + "$ref": "AAAAAAGLw8CsTvtt06M=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw7+uCZK14Kw=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IHashPasswd", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8CDXMoYIRA=", + "_parent": { + "$ref": "AAAAAAGLw7+uCZK14Kw=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8CDXMoZH4o=", + "_parent": { + "$ref": "AAAAAAGLw8CDXMoYIRA=" + }, + "reference": { + "$ref": "AAAAAAGLw7+uCZK14Kw=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8CDXMoaWgc=", + "_parent": { + "$ref": "AAAAAAGLw8CDXMoYIRA=" + }, + "reference": { + "$ref": "AAAAAAGLw8A1cbelFNg=" + }, + "navigable": "navigable" + } + } + ], + "stereotype": "abstract" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw8A1cbelFNg=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "HashPasswd", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGLw8P2P7Eq0Zg=", + "_parent": { + "$ref": "AAAAAAGLw8A1cbelFNg=" + }, + "source": { + "$ref": "AAAAAAGLw8A1cbelFNg=" + }, + "target": { + "$ref": "AAAAAAGLw7+uCZK14Kw=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw8CsTvtt06M=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IUserRepository", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8E4dyjMplk=", + "_parent": { + "$ref": "AAAAAAGLw8CsTvtt06M=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8E4dyjNt00=", + "_parent": { + "$ref": "AAAAAAGLw8E4dyjMplk=" + }, + "reference": { + "$ref": "AAAAAAGLw8CsTvtt06M=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8E4dyjOpGg=", + "_parent": { + "$ref": "AAAAAAGLw8E4dyjMplk=" + }, + "reference": { + "$ref": "AAAAAAGLw8ERdB3gYJY=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw8ERdB3gYJY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "UserRepository", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGLw8FINzNWfKU=", + "_parent": { + "$ref": "AAAAAAGLw8ERdB3gYJY=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8FINzNXfFM=", + "_parent": { + "$ref": "AAAAAAGLw8FINzNWfKU=" + }, + "reference": { + "$ref": "AAAAAAGLw8ERdB3gYJY=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGLw8FINzNYczE=", + "_parent": { + "$ref": "AAAAAAGLw8FINzNWfKU=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGLw8GJdFMAfwk=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Role", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3B3/yvI7wq4=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "*lesUsers", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3B3/yvI8/hQ=", + "_parent": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3B3/yvI9HQU=", + "_parent": { + "$ref": "AAAAAAGL3B3/yvI7wq4=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + }, + "visibility": "protected" + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lAAXUGgrrQ=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lAAXUGh/wI=", + "_parent": { + "$ref": "AAAAAAGL8lAAXUGgrrQ=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lAAXUGi4/c=", + "_parent": { + "$ref": "AAAAAAGL8lAAXUGgrrQ=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lKzBWBVyb4=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lKzBWBWoKM=", + "_parent": { + "$ref": "AAAAAAGL8lKzBWBVyb4=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lKzBWBXFpY=", + "_parent": { + "$ref": "AAAAAAGL8lKzBWBVyb4=" + }, + "reference": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++ZRWq9wC2Q=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++ZRWq9xmHA=", + "_parent": { + "$ref": "AAAAAAGL++ZRWq9wC2Q=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++ZRWq9yVyo=", + "_parent": { + "$ref": "AAAAAAGL++ZRWq9wC2Q=" + }, + "reference": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++iBHvdP07A=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "entrainementRepository", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++iBHvdQzLE=", + "_parent": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "reference": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++iBHvdR3xE=", + "_parent": { + "$ref": "AAAAAAGL++iBHvdP07A=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + }, + "visibility": "protected" + } + ], + "stereotype": "abstract", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL3EO77J2JFbo=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "id", + "visibility": "protected", + "type": "int" + } + ], + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL8lDIQHjxa7g=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "getUsersList", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9z2Wk7Rkl0=", + "_parent": { + "$ref": "AAAAAAGL8lDIQHjxa7g=" + }, + "type": "?array", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+91tC2YUaHo=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "getUserList", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+93WVmslMmk=", + "_parent": { + "$ref": "AAAAAAGL+91tC2YUaHo=" + }, + "name": "user", + "type": "User" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+93WWGsme7k=", + "_parent": { + "$ref": "AAAAAAGL+91tC2YUaHo=" + }, + "type": "?User", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+93v8Z0NH0E=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "getEntrainement", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+95FxaCSyVw=", + "_parent": { + "$ref": "AAAAAAGL+93v8Z0NH0E=" + }, + "type": "?EntrainementRepository", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+90Kble5JDw=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "getEntrainementsList", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+91Bwls+tYg=", + "_parent": { + "$ref": "AAAAAAGL+90Kble5JDw=" + }, + "type": "?array", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+95b8qX+sig=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "getEntrainementList", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+97c6amDCSE=", + "_parent": { + "$ref": "AAAAAAGL+95b8qX+sig=" + }, + "name": "entrainement", + "type": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+97c66mEPPE=", + "_parent": { + "$ref": "AAAAAAGL+95b8qX+sig=" + }, + "type": "?EntrainementSportif", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL8lQnmhRLfho=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "checkAdd", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lRFEBfQcoA=", + "_parent": { + "$ref": "AAAAAAGL8lQnmhRLfho=" + }, + "type": "bool", + "direction": "return" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lTMXSaTy7k=", + "_parent": { + "$ref": "AAAAAAGL8lQnmhRLfho=" + }, + "name": "user", + "type": "User" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL8lROwx08WBA=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "chackAddEntrainement", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lSScCDBz5M=", + "_parent": { + "$ref": "AAAAAAGL8lROwx08WBA=" + }, + "name": "entrainement", + "type": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lSSciDCofo=", + "_parent": { + "$ref": "AAAAAAGL8lROwx08WBA=" + }, + "type": "bool", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL3B61dD33CBk=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "addUser", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3CF8BUD1MaE=", + "_parent": { + "$ref": "AAAAAAGL3B61dD33CBk=" + }, + "name": "user", + "type": "User" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL3CF8BkD2uFE=", + "_parent": { + "$ref": "AAAAAAGL3B61dD33CBk=" + }, + "type": "bool", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL58RPF/SE7Hs=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "removeUser", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL58SDNfeCYS0=", + "_parent": { + "$ref": "AAAAAAGL58RPF/SE7Hs=" + }, + "name": "user", + "type": "User" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL58SDN/eDi6M=", + "_parent": { + "$ref": "AAAAAAGL58RPF/SE7Hs=" + }, + "type": "bool", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL8lBBHXFLScI=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "addEntrainement", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lCF13QufIw=", + "_parent": { + "$ref": "AAAAAAGL8lBBHXFLScI=" + }, + "name": "entr", + "type": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL8lCF2HQvGso=", + "_parent": { + "$ref": "AAAAAAGL8lBBHXFLScI=" + }, + "type": "bool", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL++Fe3CpxsSg=", + "_parent": { + "$ref": "AAAAAAGLw8GJdFMAfwk=" + }, + "name": "removeEntrainement", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++GDKi32bTY=", + "_parent": { + "$ref": "AAAAAAGL++Fe3CpxsSg=" + }, + "name": "entr", + "type": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL++GDKy3305U=", + "_parent": { + "$ref": "AAAAAAGL++Fe3CpxsSg=" + }, + "type": "bool", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL3CMxnEguLCQ=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "CoachAthlete", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL3CS00FlI+OY=", + "_parent": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "source": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "target": { + "$ref": "AAAAAAGLpAZHmx2CSnc=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3DzrydAwEjA=", + "_parent": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "name": "ent", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DzrydAx3B4=", + "_parent": { + "$ref": "AAAAAAGL3DzrydAwEjA=" + }, + "reference": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3DzrydAyGD8=", + "_parent": { + "$ref": "AAAAAAGL3DzrydAwEjA=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLDependency", + "_id": "AAAAAAGL3EhnKwk9Pw0=", + "_parent": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "source": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "target": { + "$ref": "AAAAAAGLpAzboB41ECQ=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++fe3kQi84s=", + "_parent": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++fe3kQjPRk=", + "_parent": { + "$ref": "AAAAAAGL++fe3kQi84s=" + }, + "reference": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++fe3kQkqMw=", + "_parent": { + "$ref": "AAAAAAGL++fe3kQi84s=" + }, + "reference": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++hbOMaLLhI=", + "_parent": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++hbOMaMnnU=", + "_parent": { + "$ref": "AAAAAAGL++hbOMaLLhI=" + }, + "reference": { + "$ref": "AAAAAAGL3CMxnEguLCQ=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++hbOMaN3HA=", + "_parent": { + "$ref": "AAAAAAGL++hbOMaLLhI=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL3EA5pS43tRY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "CoachManager", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL3EE9vyQmH2s=", + "_parent": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3EE9wCQnjEA=", + "_parent": { + "$ref": "AAAAAAGL3EE9vyQmH2s=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL3EE9wCQorTo=", + "_parent": { + "$ref": "AAAAAAGL3EE9vyQmH2s=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lOXnTwD+Jk=", + "_parent": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lOXnTwEKpY=", + "_parent": { + "$ref": "AAAAAAGL8lOXnTwD+Jk=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lOXnTwFBh4=", + "_parent": { + "$ref": "AAAAAAGL8lOXnTwD+Jk=" + }, + "reference": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+8nwg3agVXE=", + "_parent": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "source": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "target": { + "$ref": "AAAAAAGL+8nHIFKZGGE=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+8rOHkkjQa8=", + "_parent": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8rOH0kk5Us=", + "_parent": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8rOH0kl1Ag=", + "_parent": { + "$ref": "AAAAAAGL+8rOHkkjQa8=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9dNnjZFrD0=", + "_parent": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "source": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "target": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8e8PLkVkOWg=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "UserRepository", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lO7+GO/UQE=", + "_parent": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lO7+GPAblU=", + "_parent": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "reference": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lO7+GPBs+g=", + "_parent": { + "$ref": "AAAAAAGL8lO7+GO/UQE=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9Ru2TbDJ+A=", + "_parent": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "source": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "target": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + } + } + ], + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL+8w3liysleM=", + "_parent": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "name": "users", + "visibility": "private", + "type": "array" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8e9J0FdHmso=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "AuthService", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lNUk/Ru41c=", + "_parent": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNUk/RvtFM=", + "_parent": { + "$ref": "AAAAAAGL8lNUk/Ru41c=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNUk/RwcBM=", + "_parent": { + "$ref": "AAAAAAGL8lNUk/Ru41c=" + }, + "reference": { + "$ref": "AAAAAAGL3EA5pS43tRY=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lNl2wXc834=", + "_parent": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNl2wXdgpY=", + "_parent": { + "$ref": "AAAAAAGL8lNl2wXc834=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNl2wXekOo=", + "_parent": { + "$ref": "AAAAAAGL8lNl2wXc834=" + }, + "reference": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+8pYQv2ZiyI=", + "_parent": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8pYQv2aok8=", + "_parent": { + "$ref": "AAAAAAGL+8pYQv2ZiyI=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8pYQv2bihk=", + "_parent": { + "$ref": "AAAAAAGL+8pYQv2ZiyI=" + }, + "reference": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+9YU26wTNo0=", + "_parent": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9YU26wUZOY=", + "_parent": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+9YU26wVXhc=", + "_parent": { + "$ref": "AAAAAAGL+9YU26wTNo0=" + }, + "reference": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8fAHTJcd2Kc=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "UserManager", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lNzphcjVzA=", + "_parent": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNzphckA0Q=", + "_parent": { + "$ref": "AAAAAAGL8lNzphcjVzA=" + }, + "reference": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lNzphcloeU=", + "_parent": { + "$ref": "AAAAAAGL8lNzphcjVzA=" + }, + "reference": { + "$ref": "AAAAAAGLo/fkFXnWSO0=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lOuHlPLHnQ=", + "_parent": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lOuHlPMMOQ=", + "_parent": { + "$ref": "AAAAAAGL8lOuHlPLHnQ=" + }, + "reference": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lOuHlPNza4=", + "_parent": { + "$ref": "AAAAAAGL8lOuHlPLHnQ=" + }, + "reference": { + "$ref": "AAAAAAGL8e8PLkVkOWg=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+8oAEIaDan4=", + "_parent": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "source": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "target": { + "$ref": "AAAAAAGL+8nHIFKZGGE=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL+8tZ967YT0Q=", + "_parent": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8tZ967ZQD0=", + "_parent": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "reference": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL+8tZ967azMY=", + "_parent": { + "$ref": "AAAAAAGL+8tZ967YT0Q=" + }, + "reference": { + "$ref": "AAAAAAGL8e9J0FdHmso=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9c7CRuveJk=", + "_parent": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "source": { + "$ref": "AAAAAAGL8fAHTJcd2Kc=" + }, + "target": { + "$ref": "AAAAAAGLw7v65PPlleU=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8kwWMOvqRNg=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "EntrainementRepository", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8kz1eGm5YVc=", + "_parent": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "name": "*lesEntrainements", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8kz1eGm6iIc=", + "_parent": { + "$ref": "AAAAAAGL8kz1eGm5YVc=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8kz1eWm7nGc=", + "_parent": { + "$ref": "AAAAAAGL8kz1eGm5YVc=" + }, + "reference": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9Se8MmZLdo=", + "_parent": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "source": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "target": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++NtKh6cvUs=", + "_parent": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++NtKh6dcW8=", + "_parent": { + "$ref": "AAAAAAGL++NtKh6cvUs=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++NtKh6eGOg=", + "_parent": { + "$ref": "AAAAAAGL++NtKh6cvUs=" + }, + "reference": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + }, + "navigable": "navigable" + } + }, + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL++Z1IOrl2bA=", + "_parent": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "name": "entrainementList", + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++Z1IOrmj24=", + "_parent": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL++Z1IOrnew4=", + "_parent": { + "$ref": "AAAAAAGL++Z1IOrl2bA=" + }, + "reference": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + }, + "navigable": "navigable" + }, + "visibility": "private" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8lJC3yKeddk=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Entrainement", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGL8lLYKYP6eHU=", + "_parent": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lLYKYP7ejM=", + "_parent": { + "$ref": "AAAAAAGL8lLYKYP6eHU=" + }, + "reference": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGL8lLYKYP8bHc=", + "_parent": { + "$ref": "AAAAAAGL8lLYKYP6eHU=" + }, + "reference": { + "$ref": "AAAAAAGL8kwWMOvqRNg=" + }, + "navigable": "navigable" + } + } + ], + "stereotype": "interfaces", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL++Q3gS35XNs=", + "_parent": { + "$ref": "AAAAAAGL8lJC3yKeddk=" + }, + "name": "Attribute1", + "type": "" + } + ] + }, + { + "_type": "UMLModel", + "_id": "AAAAAAGL8oOYXQr/AQc=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Models" + }, + { + "_type": "UMLPackage", + "_id": "AAAAAAGL8oPx1E8rJeI=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Package1" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL8qWWJj6joa0=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Responsabilité", + "attributes": [ + { + "_type": "UMLAttribute", + "_id": "AAAAAAGL8qXHfUcNtPA=", + "_parent": { + "$ref": "AAAAAAGL8qWWJj6joa0=" + }, + "name": "But principale de la classe", + "type": "" + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+8nHIFKZGGE=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "DataManager" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+82j2lEaUGY=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IGenericRepository", + "operations": [ + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+84tpm4nUBQ=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "getItemById", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+86GNHNuQcE=", + "_parent": { + "$ref": "AAAAAAGL+84tpm4nUBQ=" + }, + "name": "id", + "type": "int" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86cPHlwc+E=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "getNbItems", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+88J8ZbWW34=", + "_parent": { + "$ref": "AAAAAAGL+86cPHlwc+E=" + }, + "type": "int", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86fO3zWI0s=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "getItems", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9DcKZwZz84=", + "_parent": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "name": "index", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9DcLJwaaCk=", + "_parent": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "name": "count", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9DcLJwbnOI=", + "_parent": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "name": "orderingPropertyName", + "type": "?String" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9DcLZwcFiA=", + "_parent": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "name": "descending", + "type": "bool" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9DcLZwdTV8=", + "_parent": { + "$ref": "AAAAAAGL+86fO3zWI0s=" + }, + "type": "array", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86ncIA8/pY=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "getItemsByName", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4NaLkbQE=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "name": "substring", + "type": "String" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4N6Llqjg=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "name": "index", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4N6LmObw=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "name": "count", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4N6LnQEw=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "name": "orderingPropertyName", + "type": "?String" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4OKLo8r8=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "name": "descending", + "type": "bool" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9H4OKLph44=", + "_parent": { + "$ref": "AAAAAAGL+86ncIA8/pY=" + }, + "type": "?array", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86p3oOiaNc=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "getItemsByName", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9JcOrExLOI=", + "_parent": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "name": "substring", + "type": "String" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9JcPLEybNk=", + "_parent": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "name": "index", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9JcPbEz+zo=", + "_parent": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "name": "count", + "type": "int" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9JcPbE0XQI=", + "_parent": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "name": "orderingPropertyName", + "type": "?String" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9JcPbE1q0s=", + "_parent": { + "$ref": "AAAAAAGL+86p3oOiaNc=" + }, + "name": "descending", + "type": "bool" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86sTYcItmQ=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "updateItem", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9LXLLf8t0A=", + "_parent": { + "$ref": "AAAAAAGL+86sTYcItmQ=" + }, + "name": "oldItem", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9LXLrf9C5A=", + "_parent": { + "$ref": "AAAAAAGL+86sTYcItmQ=" + }, + "name": "newItem", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9LXLrf+Tzg=", + "_parent": { + "$ref": "AAAAAAGL+86sTYcItmQ=" + }, + "type": "void", + "direction": "return" + } + ] + }, + { + "_type": "UMLOperation", + "_id": "AAAAAAGL+86ui4puvnk=", + "_parent": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + }, + "name": "deleteItem", + "parameters": [ + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9MCVL4Dc40=", + "_parent": { + "$ref": "AAAAAAGL+86ui4puvnk=" + }, + "name": "item", + "type": "" + }, + { + "_type": "UMLParameter", + "_id": "AAAAAAGL+9MCVb4E2Hk=", + "_parent": { + "$ref": "AAAAAAGL+86ui4puvnk=" + }, + "type": "bool", + "direction": "return" + } + ] + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+9O3E77+iB4=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "ITrainingRepository", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9RSGRB8+vM=", + "_parent": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "source": { + "$ref": "AAAAAAGL+9O3E77+iB4=" + }, + "target": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+9PlDtA7iBo=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Class1" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+9PoMtQG54g=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IUserRepository", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL+9RdJBsWH7s=", + "_parent": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "source": { + "$ref": "AAAAAAGL+9PoMtQG54g=" + }, + "target": { + "$ref": "AAAAAAGL+82j2lEaUGY=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL+9Qa4uFEN74=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Class2" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGL++aCGgpsPN4=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "EntrainementSportif", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGL++arORiCGus=", + "_parent": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "source": { + "$ref": "AAAAAAGL++aCGgpsPN4=" + }, + "target": { + "$ref": "AAAAAAGLrxb6dUqeBKo=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGMBpdAZQuSkhA=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IFileReader" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGMBpd9ig65uB8=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "AthlketeMgr", + "ownedElements": [ + { + "_type": "UMLAssociation", + "_id": "AAAAAAGMBperGiDRgno=", + "_parent": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + }, + "end1": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGMBperGiDSkv4=", + "_parent": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "reference": { + "$ref": "AAAAAAGMBpd9ig65uB8=" + } + }, + "end2": { + "_type": "UMLAssociationEnd", + "_id": "AAAAAAGMBperGiDT2kA=", + "_parent": { + "$ref": "AAAAAAGMBperGiDRgno=" + }, + "reference": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + }, + "navigable": "navigable" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGMBpe7/CSbj9A=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Fit", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGMBpfYWi3Xomc=", + "_parent": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "source": { + "$ref": "AAAAAAGMBpe7/CSbj9A=" + }, + "target": { + "$ref": "AAAAAAGMBpdAZQuSkhA=" + } + } + ] + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGMBpo0VdxaKM0=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "IAnalyseur" + }, + { + "_type": "UMLClass", + "_id": "AAAAAAGMBqILMC7uP0g=", + "_parent": { + "$ref": "AAAAAAFF+qBWK6M3Z8Y=" + }, + "name": "Analyseur", + "ownedElements": [ + { + "_type": "UMLGeneralization", + "_id": "AAAAAAGMBsEyOCaJKLw=", + "_parent": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "source": { + "$ref": "AAAAAAGMBqILMC7uP0g=" + }, + "target": { + "$ref": "AAAAAAGMBpo0VdxaKM0=" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_accesDonnees.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_accesDonnees.md new file mode 100644 index 00000000..3a49ce14 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_accesDonnees.md @@ -0,0 +1,91 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Diagramme de la Couche d'Accès aux Données + +Bienvenue dans le cœur de notre système, où les données prennent vie à travers des ensembles de données (repositories) structurés et performants. Ce diagramme met en lumière la conception de la couche d'accès aux données de notre application, offrant un aperçu clair de la gestion des entités clées telles que les utilisateurs, les notifications, les demandes de relations et les entraînements. + +**Principes Fondamentaux :** + +- **IGenericRepository :** Une abstraction générique établissant les contrats essentiels pour l'accès aux données. Définissant des opérations standardisées telles que la récupération, la mise à jour, l'ajout et la suppression d'entités. + +- **Interfaces Spécialisées :** Des interfaces telles que `IUserRepository`, `INotificationRepository`, `IRelationshipRequestRepository` et `ITrainingRepository` étendent les fonctionnalités génériques pour répondre aux besoins spécifiques de chaque entité. + +**Repositories Concrets :** + +- **UserRepository :** Gère les données relatives aux utilisateurs, permettant des opérations de récupération, de mise à jour et de suppression avec une efficacité optimale. + +- **NotificationRepository :** Responsable de la gestion des notifications, assurant un accès structuré et une manipulation sécurisée de ces informations cruciales. + +- **RelationshipRequestRepository :** Facilite la gestion des demandes de relations entre utilisateurs, garantissant une interaction claire et ordonnée. + +- **TrainingRepository :** Permet l'accès et la manipulation des données liées aux entraînements, facilitant le suivi des performances athlétiques. + +Explorez ce diagramme pour découvrir la robustesse de notre architecture de gestion des données, mettant en œuvre des pratiques de développement solides pour assurer une expérience utilisateur fiable et évolutive. + +```plantuml +@startuml couche_acces_aux_donnees +abstract class IGenericRepository { + + getItemById(int id) : object + + getNbItems() : int + + getItems(int index, int count, string orderingPropertyName, bool descending) : array + + getItemsByName(string substring, int index, int count, string orderingPropertyName, bool descending) : array + + getItemByName(string substring, int index, int count, string orderingPropertyName, bool descending) : object + + updateItem(oldItem, newItem) : void + + addItem(item) : void + + deleteItem(item) : bool +} +abstract class IUserRepository extends IGenericRepository { +} +interface INotificationRepository extends IGenericRepository { +} +interface IRelationshipRequestRepository extends IGenericRepository { +} +interface ITrainingRepository extends IGenericRepository { +} +class NotificationRepository implements INotificationRepository { + - notifications : array + + getItemById(int id) : object + + getNbItems() : int + + getItems(int index, int count, string orderingPropertyName, bool descending) : array + + getItemsByName(string substring, int index, int count, string orderingPropertyName, bool descending) : array + + getItemByName(string substring, int index, int count, string orderingPropertyName, bool descending) : object + + updateItem(oldItem, newItem) : void + + addItem(item) : void + + deleteItem(item) : bool +} +class RelationshipRequestRepository implements IRelationshipRequestRepository { + - requests : array + + getItemById(int id) : object + + getNbItems() : int + + getItems(int index, int count, string orderingPropertyName, bool descending) : array + + getItemsByName(string substring, int index, int count, string orderingPropertyName, bool descending) : array + + getItemByName(string substring, int index, int count, string orderingPropertyName, bool descending) : object + + updateItem(oldItem, newItem) : void + + addItem(item) : void + + deleteItem(item) : bool +} +class TrainingRepository implements ITrainingRepository { + - trainings : array + + getItemById(int id) : object + + getNbItems() : int + + getItems(int index, int count, string orderingPropertyName, bool descending) : array + + getItemsByDate(date, int index, int count, string orderingPropertyName, bool descending) : array + + updateItem(oldItem, newItem) : void + + addItem(item) : void + + deleteItem(item) : bool +} +class UserRepository implements IUserRepository { + - users : array + + getItemById(int id) : object + + getNbItems() : int + + getItems(int index, int count, string orderingPropertyName, bool descending) : array + + getItemsByName(string substring, int index, int count, string orderingPropertyName, bool descending) : array + + getItemByName(string substring, int index, int count, string orderingPropertyName, bool descending) : object + + updateItem(oldItem, newItem) : void + + addItem(item) : void + + deleteItem(item) : bool +} +@enduml +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_ajoutAmi.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_ajoutAmi.md new file mode 100644 index 00000000..e673bc60 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_ajoutAmi.md @@ -0,0 +1,91 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Diagramme de Classes : Gestion des Utilisateurs et Notifications + +Bienvenue dans le cœur de notre système, où la gestion des utilisateurs et des notifications prend vie à travers ce diagramme de classes. Explorez les relations et les fonctionnalités essentielles qui orchestrent l'interaction entre les utilisateurs, les demandes d'amis, et les notifications. + +**Entités Principales :** + +- **Utilisateur (User) :** Représente les individus inscrits sur notre plateforme, caractérisés par leur nom et établissant des liens d'amitié avec d'autres utilisateurs. + +- **Notification (Notification) :** Contient le texte informatif des notifications qui peuvent être émises par le système. + +- **Demande d'Ami (Ask) :** Modélise une demande d'amitié émise par un utilisateur en direction d'un autre. + +**Interfaces et Classes Abstraites :** + +- **INotifier :** Interface définissant la méthode `notify()`, implémentée par des classes concrètes pour gérer la notification aux observateurs. + +- **Observer :** Interface définissant la méthode `update()`, implémentée par les classes qui souhaitent être informées des changements dans un sujet observé. + +- **UserManager :** Classe abstraite gérant la logique métier liée aux utilisateurs, tels que l'ajout ou la suppression d'amis, la réponse aux demandes d'amis, et la récupération de la liste d'amis. + +- **IUserRepository :** Interface définissant les méthodes pour la recherche d'utilisateurs et l'ajout d'un nouvel utilisateur. + +**Relations Clés :** + +- Les utilisateurs peuvent avoir plusieurs amis et plusieurs notifications. + +- La classe UserManager est connectée à IUserRepository pour gérer les opérations liées aux utilisateurs. + +- Observer et Subject sont des composants du modèle de conception "Observer", permettant la notification efficace des changements dans le système. + +Plongez-vous dans ce diagramme pour découvrir comment notre application crée un écosystème social dynamique, permettant aux utilisateurs d'interagir, de rester informés et de développer des liens significatifs au sein de la communauté. + +```plantuml +class User { + + name : string +} + +User "1" --> "*" User: friends +User "1" --> "*" Notification: notifications +User "1" --> "*" Ask: friendRequests +class Notification { + - text : string +} + +interface INotifier { + + notify() : void +} + +INotifier --|> Observer + +abstract class UserManager { + - currentUser : User + + deleteFriend(userId : int) : void + + addFriend(userId : int) : void + + respondToFriendRequest(requestId : int, choice : bool) : void + + getFriends(userId : int) : User[] +} + +class Ask { + - fromUser : int + - toUser : int +} + +Ask --|> Subject + +abstract class Subject { + + attach(o : Observer) : void + + detach(o : Observer) : void + + notify() : void +} + +Subject "1" --> "*" Observer +interface Observer { + + update() : void +} + +UserManager ..> User +UserManager o-- IUserRepository +UserManager o-- INotifier + +interface IUserRepository { + + findByUsername(username : string) : User + + addUser(user : User) : bool +} + +IUserRepository ..> User +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue016.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue016.md new file mode 100644 index 00000000..611db30a --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue016.md @@ -0,0 +1,158 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +## Diagramme de classe +```plantuml +class Athlete { + - array statsList + - array activityList + - array dataSourcesList + - TrainingRepository trainingRepository + - array usersList + + __construct(trainingRepository: ?TrainingRepository) + + getAthlete(): Athlete + + getStatistic(): ?array + + getActivite(): ?array + + getDataSource(): ?array + + getUsersList(): array + + getUserList(user: User): User + + getTraining(): ?TrainingRepository + + getTrainingList(training: Training): ?Training + + setTrainingsList(newTrainingsList: array): void + + CheckAdd(user: User): bool + + CheckAddTraining(training: Training): bool + + addUser(user: User): bool + + removeUser(user: User): bool + + delUser(user: User): bool + + addTraining(training: Training): bool + + removeTraining(training: Training): bool + + getTrainingsList(): ?array +} + +Athlete --|> Role +Athlete *-- TrainingRepository +Athlete *-- User +Athlete *-- Training + +abstract class Coach { + + abstract __construct(trainingRepository: ?TrainingRepository) + + abstract getUsersList(): ?array + + abstract getUserList(user: User): User + + abstract getTraining(): ?TrainingRepository + + abstract getTrainingsList(): ?array + + abstract getTrainingList(training: Training): ?Training + + abstract CheckAdd(user: User): bool + + abstract CheckAddTraining(training: Training): bool + + abstract addUser(user: User): bool + + abstract removeUser(user: User): bool + + abstract addTraining(training: Training): bool + + abstract removeTraining(training: Training): bool +} + +Coach --|> Role +Coach *-- User +Coach *-- TrainingRepository +Coach *-- Training + +class CoachAthlete { + - TrainingRepository trainingRepository + - array usersList + + __construct(trainingRepository: ?TrainingRepository) + + getUsersList(): ?array + + getUserList(user: User): User + + getTraining(): TrainingRepository + + getTrainingsList(): ?array + + getTrainingList(training: Training): ?Training + + CheckAdd(user: User): bool + + CheckAddTraining(training: Training): bool + + addUser(user: User): bool + + removeUser(user: User): bool + + addTraining(training: Training): bool + + removeTraining(training: Training): bool +} + +CoachAthlete --|> Coach +CoachAthlete *-- User +CoachAthlete *-- TrainingRepository +CoachAthlete *-- Training + +abstract class Role { + - int id + - array usersList + - TrainingRepository trainingRepository + + abstract __construct(trainingRepository: ?TrainingRepository) + + abstract getUsersList(): ?array + + abstract getUserList(user: User): User + + abstract getTraining(): ?TrainingRepository + + abstract getTrainingsList(): ?array + + abstract getTrainingList(training: Training): ?Training + + abstract CheckAdd(user: User): bool + + abstract CheckAddTraining(training: Training): bool + + abstract addUser(user: User): bool + + abstract removeUser(user: User): bool + + abstract addTraining(training: Training): bool + + abstract removeTraining(training: Training): bool +} + +Role *-- User +Role *-- Training +Role *-- TrainingRepository + +class Training { + - int idTraining + - DateTime date + - float latitude + - float longitude + - String description + - String feedback + + __construct(idTraining: int, date: DateTime, latitude: float, longitude: float, description: ?String = null, feedback: ?String = null) + + getId(): int + + getDate(): DateTime + + getLocation(): String + + getDescription(): String + + getFeedback(): String + + __toString(): String +} + +class User { + - int id + - String username + - string nom + - string prenom + - string email + - string motDePasse + - string sexe + - float taille + - float poids + - DateTime dateNaissance + - Role role + + __construct(id: int, username: String, nom: string, prenom: string, email: string, motDePasse: string, sexe: string, taille: float, poids: float, dateNaissance: DateTime, role: Role) + + getId(): int + + setId(id: int): void + + getUsername(): String + + setUsername(username: int): void + + getNom(): string + + setNom(nom: string): void + + getPrenom(): string + + setPrenom(prenom: string): void + + getEmail(): string + + setEmail(email: string): void + + getMotDePasse(): string + + setMotDePasse(motDePasse: string): void + + getSexe(): string + + setSexe(sexe: string): void + + getTaille(): float + + setTaille(taille: float): void + + getPoids(): float + + setPoids(poids: float): void + + getDateNaissance(): DateTime + + setDateNaissance(dateNaissance: DateTime): void + + getRole(): Role + + setRole(role: Role): void + + isValidPassword(password: string): bool + + __toString(): String +} + +User *-- Role +```` diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue021.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue021.md new file mode 100644 index 00000000..f78a8996 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue021.md @@ -0,0 +1,22 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +## Diagramme de séquence systeme +- Création de compte +```plantuml +actor User as u +u->Systeme : demandePageConnexion() +alt User déjà connecté + Systeme-->u : redirectionPageCompte() +end +Systeme-->u : PageConnexion() +alt User possède déjà un compte + u->Systeme:InfosConnexion() +else + u->Systeme:CreerCompte() + Systeme-->u :PageCreationCompte() + u->Systeme:InfosCreationCompte() +end +Systeme-->u :Connecter() +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue022.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue022.md new file mode 100644 index 00000000..ed9b6fd8 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue022.md @@ -0,0 +1,153 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +## Diagramme de classe +- Ajout d'amis +```plantuml +class User { + + name : string +} + +User "1" --> "*" User: friends +User "1" --> "*" Notification: notifications +User "1" --> "*" Ask: friendRequests +class Notification { + - text : string +} + +interface INotifier { + + notify() : void +} + +INotifier --|> Observer + +abstract class UserManager { + - currentUser : User + + deleteFriend(userId : int) : void + + addFriend(userId : int) : void + + respondToFriendRequest(requestId : int, choice : bool) : void + + getFriends(userId : int) : User[] +} + +class Ask { + - fromUser : int + - toUser : int +} + +Ask --|> Subject + +abstract class Subject { + + attach(o : Observer) : void + + detach(o : Observer) : void + + notify() : void +} + +Subject "1" --> "*" Observer +interface Observer { + + update() : void +} + +UserManager ..> User +UserManager o-- IUserRepository +UserManager o-- INotifier + +interface IUserRepository { + + findByUsername(username : string) : User + + addUser(user : User) : bool +} + +IUserRepository ..> User +``` + +## Diagrammes de séquence +- Envoi de demande d'ami : +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +u->v:/Friend +v->c:Get : /Friends +c->m:getFriends(userId) +m-->c::friends : User[] +c-->v:renderView(Friends) +v-->u: +u->v:input : name +v->c:Get : searchFriends? pseudo=name +c->m:searchUser(name:string) +m->m:notify(from : user, to : user, action : action) +m-->c:OK +c-->v:OK +v-->u:OK +``` +- Accepter une demande d'ami : +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +m->c:RecevoirDemandeAmi(idUser) +c->v:AfficherDemandeAmi(idUser) +v->u:PageDemandeAmi(idUser) +u-->v:RepondreDemandeAmi(bool) +v-->c:EnregistrerReponse(bool) +c-->m:EnvoyerReponse(bool) +``` + +- Supprimer un ami : +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +u->v: Request Friends Page +v->c: Get /Friends +c->m: getFriends(userId) +alt successful retrieval + m-->c: friendsList: User[] +else retrieval failed + m-->c: error +end +c-->v: renderView(friendsList) +v-->u: Display Friends + +u->v: clickDeleteFriend(idUser) +v->c: Post: deleteFriend(idUser) +c->m: deleteFriend(idUser) +alt successful deletion + m-->c: updatedFriendsList: User[] +else deletion failed + m-->c: error +end +c-->v: renderView(updatedFriendsList) +v-->u: Display Updated Friends +``` + +## Diagrammes de cas d'utilisation +- Gestion du compte et des amitiés +```plantuml +left to right direction +:Athlete: as a + +a --> (Ajouter un ami) +a --> (Supprimer un ami) +a --> (Voir mes amis) +a --> (Modifier mes informations) +(Ajouter un ami)->(Saisir le nom de l'ami) +(Supprimer un ami)..>(S'authentifier) : <> +(Ajouter un ami)..>(S'authentifier) : <> +(Voir mes amis)..>(S'authentifier) : <> +(Voir mes amis)..>(Lister les amis) : <> +(Modifier mes informations)..>(Informations personnelles) : <> +(Modifier mes informations)..>(Informations de connexion) : <> +(Lister les amis)..>(Voir son profil) : <> +(Voir son profil)..>(Voir ses activités) : <> +(Voir son profil)..>(Voir ses statistiques) : <> +(S'authentifier)..>(S'inscrire) : <> +(S'authentifier)..>(Se connecter) : <> +(S'inscrire)..>(Inscription Athlète) : <> +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue028.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue028.md new file mode 100644 index 00000000..b029361f --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeClasses/README_issue028.md @@ -0,0 +1,137 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Diagramme de classes pour l'importation de fichiers .fit + +Bienvenue dans le monde de la gestion d'activités sportives avec notre application innovante ! Cette user story se concentre sur une fonctionnalité essentielle qui améliorera l'expérience des utilisateurs : l'importation de fichiers .fit. Nous avons conçu un diagramme de classes pour vous offrir une vision claire et structurée de la manière dont cette fonctionnalité est implémentée au sein de notre application. + +**Acteurs Principaux :** + +- Utilisateur (User) : Représente un individu inscrit sur notre plateforme, avec la capacité d'importer des fichiers .fit. +- Athlète (Athlete) : Un type spécialisé d'utilisateur, bénéficiant de fonctionnalités supplémentaires liées à la gestion d'activités sportives. + +**Entités Clés :** + +- Activité (Activity) : Représente une session d'activité physique, avec des détails tels que le type, la date, la durée, et plus encore. +- Gestionnaires (Managers) : Gérant différentes facettes de l'application, notamment les utilisateurs, les activités et les fichiers. + +**Fonctionnalité Clé :** + +- Importation de fichiers .fit : Permet aux utilisateurs de charger des données provenant de fichiers .fit, générés par des dispositifs de suivi d'activité. Ces fichiers contiennent des informations précieuses telles que la fréquence cardiaque, la distance parcourue et d'autres métriques essentielles. + +**Architecture :** + +- AuthService (Service d'Authentification) : Gère l'authentification des utilisateurs, garantissant un accès sécurisé à la fonction d'importation. +- UserManager (Gestionnaire d'Utilisateurs) : Gère les opérations liées aux utilisateurs, y compris l'importation de fichiers .fit. +ActivityManager (Gestionnaire d'Activités) : Responsable du stockage et de la gestion des activités importées. + +**Objectif :** + +Offrir aux utilisateurs, en particulier aux athlètes, la possibilité d'enrichir leur profil et de suivre leur performance en important des données détaillées à partir de fichiers .fit. + + +```plantuml +@startuml issue028_DiagrammeDeClasses +class Activite { + -idActivite:int + -type:String + -date:Date + -heureDebut:Date + -heureFin:Date + -effortRessenti:int + -variability:float + -variance:float + -standardDeviation:float + -average:float + -maximum:int + -minimum:int + -avrTemperature:float + -hasAutoPause:boolean + +getIdActivite():int + +getType():String + +getDate():Date + +getHeureDebut():Date + +getHeureFin():Date + +getEffortRessenti():int + +getVariability():float + +getVariance():float + +getStandardDeviation():float + +getAverage():float + +getMaximum():int + +getMinimum():int + +getAvrTemperature():float + +setType(type:String):void + +setEffortRessenti(effortRessenti:int):void + +__toString():String +} +class Role { + -id:int +} +class Athlete { + +getActivities():array + +addActivity(myActivity:Activity):boolean +} +class User { + -id:int + -username:String + -nom:String + -prenom:String + -email:String + -motDePasse:String + -sexe:String + -taille:float + -poids:float + -dateNaissance:Date + +getId():int + +setId(id:int):void + +getUsername():String + +setUsername(username:String):void + +getNom():String + +setNom(nom:String):void + +getPrenom():String + +setPrenom(prenom:String):void + +getEmail():String + +setEmail(email:String):void + +getMotDePasse():String + +setMotDePasse(motDePasse:String):void + +getSexe():String + +setSexe(sexe:String):void + +getTaille():float + +setTaille(taille:float):void + +getPoids():float + +setPoids(poids:float):void + +getDateNaissance():Date + +setDateNaissance(dateNaissance:Date):void + +getRole():Role + +setRole(role:Role):void + +isValidPassword(password:String):boolean + +__toString():String +} +class AthleteManager { + +getActivities():array +} +class ActivityManager { + +saveFitFileToJSON(monFichierFit:object):boolean + +uploadFile(type:string, effortRessenti:int, file_path_or_data:string|resource, options:array):boolean +} +class DataManager { +} +class UserManager { + +login(loginUser:string, passwordUser:string):boolean + +register(loginUser:string, passwordUser:string, data:array):boolean + +deconnecter():boolean +} + +User -> Role: role +Athlete -|> Role +DataManager -> UserManager: -userMgr +DataManager -> AthleteManager: -athleteMgr +DataManager -> ActivityManager: -activityMgr +UserManager -> AuthService: -authService +UserManager -> User: -currentUser +ActivityManager -> AuthService: -authService +Athlete -> Activite: listActivite +AthleteManager -> AuthService: -authService +@enduml +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_accepterAmi.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_accepterAmi.md new file mode 100644 index 00000000..8534de8f --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_accepterAmi.md @@ -0,0 +1,41 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Diagramme de Séquence : Gestion des Demandes d'Amis + +Bienvenue dans le processus dynamique de gestion des demandes d'amis au sein de notre application ! Ce diagramme de séquence met en évidence les étapes clés impliquées dans la gestion des demandes d'amis entre utilisateurs. + +**Acteurs Principaux :** + +- **Utilisateur (u) :** L'individu interagissant avec l'application, recevant et répondant aux demandes d'amis. + +**Flux d'Interaction :** + +1. **Réception d'une Demande d'Ami :** Lorsqu'un utilisateur reçoit une demande d'ami, le modèle (Model) notifie le contrôleur (Controller) de la nouvelle demande, spécifiant l'identifiant de l'utilisateur émetteur. + +2. **Affichage de la Demande d'Ami :** Le contrôleur transmet l'information à la vue (View), qui affiche la demande d'ami à l'utilisateur. + +3. **Affichage de la Page des Demandes d'Amis :** L'utilisateur visualise la page des demandes d'amis dans l'interface utilisateur. + +4. **Réponse à la Demande d'Ami :** L'utilisateur prend une décision quant à la demande d'ami, en répondant par un choix binaire (accepter ou refuser). + +5. **Enregistrement de la Réponse :** La vue (View) transmet la réponse de l'utilisateur au contrôleur, qui enregistre cette réponse. + +6. **Envoi de la Réponse :** Le contrôleur communique avec le modèle pour envoyer la réponse, indiquant si la demande a été acceptée (true) ou refusée (false). + +À travers ce diagramme de séquence, découvrez comment notre application gère efficacement le processus de gestion des demandes d'amis, offrant aux utilisateurs une expérience transparente et réactive lors de l'établissement de connexions sociales au sein de la plateforme. + +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +m->c:RecevoirDemandeAmi(idUser) +c->v:AfficherDemandeAmi(idUser) +v->u:PageDemandeAmi(idUser) +u-->v:RepondreDemandeAmi(bool) +v-->c:EnregistrerReponse(bool) +c-->m:EnvoyerReponse(bool) +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_demandeAmi.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_demandeAmi.md new file mode 100644 index 00000000..a5849d51 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_demandeAmi.md @@ -0,0 +1,50 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Diagramme de Séquence : Recherche d'Amis + +Bienvenue dans le processus dynamique de recherche d'amis au sein de notre application ! Ce diagramme de séquence met en lumière les étapes clés impliquées lorsque les utilisateurs recherchent des amis en utilisant un pseudo spécifique. + +**Acteurs Principaux :** + +- **Utilisateur (u) :** L'individu interagissant avec l'application, initié à la recherche d'amis. + +**Flux d'Interaction :** + +1. **Accès à la Fonctionnalité de Recherche :** L'utilisateur déclenche la fonctionnalité de recherche d'amis depuis son interface utilisateur. + +2. **Saisie du Pseudo :** L'utilisateur entre le pseudo de l'ami qu'il souhaite rechercher. + +3. **Requête de Recherche :** La vue (View) transmet la demande de recherche au contrôleur (Controller), qui déclenche une requête GET au serveur pour récupérer la liste des amis correspondant au pseudo saisi. + +4. **Traitement de la Requête :** Le modèle (Model) récupère la liste d'amis correspondante en utilisant l'identifiant de l'utilisateur et notifie le contrôleur du résultat. + +5. **Notification des Utilisateurs :** Le modèle informe également les utilisateurs concernés (émetteur et destinataire) de l'action de recherche effectuée. + +6. **Rendu de la Vue :** Le contrôleur reçoit la liste d'amis du modèle et rend cette liste à la vue. + +7. **Affichage des Résultats :** La vue affiche les résultats de la recherche à l'utilisateur, montrant les amis qui correspondent au pseudo saisi. + +À travers ce diagramme de séquence, découvrez comment notre application facilite le processus de recherche d'amis, fournissant aux utilisateurs une interface conviviale et réactive pour élargir leur réseau social au sein de la plateforme. + +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +u->v:/Friend +v->c:Get : /Friends +c->m:getFriends(userId) +m-->c::friends : User[] +c-->v:renderView(Friends) +v-->u: +u->v:input : name +v->c:Get : searchFriends? pseudo=name +c->m:searchUser(name:string) +m->m:notify(from : user, to : user, action : action) +m-->c:OK +c-->v:OK +v-->u:OK +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_suppressionAmi.md b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_suppressionAmi.md new file mode 100644 index 00000000..f741e08a --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/DiagrammeDeSequence/README_suppressionAmi.md @@ -0,0 +1,64 @@ +[retour au README.md](../../../README.md) +[Retour aux Documents](../../README_DOCUMENTS.md) +[Retour au diagramme de classes](../README_DIAGRAMMES.md) + +# Introduction au Diagramme de Séquence : Gestion des Amis + +Bienvenue dans le processus dynamique de gestion des amis au sein de notre application ! Ce diagramme de séquence met en lumière les interactions entre l'utilisateur et l'application, ainsi que le flux d'informations entre les différentes composantes du système. + +**Acteurs Principaux :** + +- **Utilisateur (u) :** L'individu interagissant avec l'application, souhaitant consulter et gérer sa liste d'amis. + +**Flux d'Interaction :** + +1. **Demande de la Page d'Amis :** L'utilisateur déclenche la demande de la page d'amis, amorçant le processus d'affichage de sa liste d'amis. + +2. **Récupération des Amis :** Le contrôleur (Controller) reçoit la demande et interagit avec le modèle (Model) pour récupérer la liste d'amis associée à l'identifiant de l'utilisateur. + + - *Cas de Récupération Réussi :* Si la récupération est réussie, le modèle transmet la liste d'amis au contrôleur. + + - *Cas d'Échec de Récupération :* En cas d'échec, une notification d'erreur est renvoyée. + +3. **Affichage de la Liste d'Amis :** Le contrôleur rend la vue (View) en utilisant la liste d'amis récupérée, qui est ensuite affichée à l'utilisateur. + +4. **Suppression d'un Ami :** L'utilisateur décide de supprimer un ami spécifique en cliquant sur l'option correspondante. + +5. **Traitement de la Suppression :** Le contrôleur, en réponse à la demande de suppression, envoie une requête au modèle pour effectuer la suppression de l'ami identifié par son identifiant utilisateur (idUser). + + - *Cas de Suppression Réussie :* Si la suppression est réussie, le modèle renvoie la liste d'amis mise à jour. + + - *Cas d'Échec de Suppression :* En cas d'échec, une notification d'erreur est renvoyée. + +6. **Affichage de la Liste d'Amis Mise à Jour :** La vue est mise à jour avec la nouvelle liste d'amis, qui est ensuite affichée à l'utilisateur. + +À travers ce diagramme de séquence, découvrez comment notre application gère de manière fluide et réactive les interactions de l'utilisateur avec sa liste d'amis, garantissant une expérience utilisateur cohérente et sans heurts. + +```plantuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +u->v: Request Friends Page +v->c: Get /Friends +c->m: getFriends(userId) +alt successful retrieval + m-->c: friendsList: User[] +else retrieval failed + m-->c: error +end +c-->v: renderView(friendsList) +v-->u: Display Friends + +u->v: clickDeleteFriend(idUser) +v->c: Post: deleteFriend(idUser) +c->m: deleteFriend(idUser) +alt successful deletion + m-->c: updatedFriendsList: User[] +else deletion failed + m-->c: error +end +c-->v: renderView(updatedFriendsList) +v-->u: Display Updated Friends +``` \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/MLD.plantuml b/Documents/Diagram/Analyse/Besoins/MLD.plantuml new file mode 100755 index 00000000..cdf6bec3 --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/MLD.plantuml @@ -0,0 +1,113 @@ +@startuml +skinparam classAttributeIconSize 0 +package MLD{ +entity "Athlète" as athlete { + {static} idAthlete + nom + prénom + email + sexe + taille + poids + motDePasse + dateNaissance +} + +entity "Amitié" as friendship{ +{static}# idAthlete1 +{static}# idAthlete2 +début +} + +entity "Notification" as notif { + {static} idNotif + message + date + statut + urgence + #athleteId +} + +entity "Coach" as coach { + {static} idCoach + // attributs spécifiques au coach + #athleteId +} + +entity "Statistique" as stats { + {static} idStatistique + poids + fcMoyenne + fcMax + caloriesBrûléesMoy + date + #athleteId +} + +entity "Entraînement" as training { + {static} idEntrainement + date + description + // Exercices + latitude + longitude + feedback + #coachId +} + +entity "Participe" as takepart { + {static} #athleteId + {static} #entrainementId +} + + +entity "SourceDonnée" as source { + {static} idSource + type + modèle + précision + #athleteId +} + +entity "Activité" as activity { + {static} idActivité + type + date + heureDeDébut + heureDeFin + effortRessent + variabilité + variance + ecartType + moyenne + maximum + minimum + temperatureMoyenne + #athleteId + #sourceId +} +entity "FréquenceCardiaque" as fc { + {static} idFc + altitude + temps : time + température + bpm + longitude + latitude + #activitéId +} + +} +activity --> athlete +activity --> source +activity <-- fc +coach --> athlete +athlete <-- source +stats --> athlete +takepart --> athlete +takepart --> training +friendship --> athlete +notif --> athlete +coach <-- training +athlete <-- friendship +@enduml \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Besoins/README_DIAGRAMMES.md b/Documents/Diagram/Analyse/Besoins/README_DIAGRAMMES.md new file mode 100644 index 00000000..1c37fa9a --- /dev/null +++ b/Documents/Diagram/Analyse/Besoins/README_DIAGRAMMES.md @@ -0,0 +1,26 @@ +[retour au README.md](../../README.md) +[Retour aux Documents](../README_DOCUMENTS.md) + +# Diagrammes nécéssaires à notre projet + +## Diagrammes de classes +- [issue016 - Statistiques coach ](DiagrammeDeClasses/README_issue016.md) +- [issue020 - Stub authentification ](DiagrammeDeClasses/README_issue020.md) +- [issue021 - Authentification ](DiagrammeDeClasses/README_issue021.md) +- [issue022 - Ajout des amis ](DiagrammeDeClasses/README_issue022.md) +- [issue023 - User Gateway ](DiagrammeDeClasses/README_issue023.md) +- [issue027 - Framework ](DiagrammeDeClasses/README_issue027.md) +- [issue028 - Importation de fichiers .fit](DiagrammeDeClasses/README_issue028.md) +- [issue030 - Cookies ](DiagrammeDeClasses/README_issue030.md) +- [couche d'accès aux données](DiagrammeDeClasses/README_accesDonnees.md) +- [Diagramme de classe pour l'ajout d'amis](DiagrammeDeClasses/README_ajoutAmi.md) + +## Diagrammes de séquence +- [Envoi de demande d'ami](DiagrammeDeSequence/README_demandeAmi.md) +- [Accepter une demande d'ami](DiagrammeDeSequence/README_accepterAmi.md) +- [Supprimer un ami](DiagrammeDeSequence/README_suppressionAmi.md) + +## Diagrammes de cas d'utilisation +- [Cas d'utilisation pour la gestion du compte et des amitiés](CasUtilisations/README_gestionCompteAmitie.md) +- [Cas d'utilisation pour la gestion des activités et données](CasUtilisations/README_gestionActivites.md) +- [Cas d'utilisation pour la suivi d'une équipe sportive](CasUtilisations/README_coachSuiviSportif.md) \ No newline at end of file diff --git a/Documents/Diagram/Analyse/Class/Social.txt b/Documents/Diagram/Analyse/Class/Social.txt new file mode 100644 index 00000000..282f1c45 --- /dev/null +++ b/Documents/Diagram/Analyse/Class/Social.txt @@ -0,0 +1,55 @@ +@startuml +class User { + + name : string +} + +User "1" --> "*" User: friends +User "1" --> "*" Notification: notifications +User "1" --> "*" Ask: friendRequests +class Notification { + - text : string +} + +interface INotifier { + + notify() : void +} + +INotifier --|> Observer + +abstract class UserManager { + - currentUser : User + + deleteFriend(userId : int) : void + + addFriend(userId : int) : void + + respondToFriendRequest(requestId : int, choice : bool) : void + + getFriends(userId : int) : User[] +} + +class Ask { + - fromUser : int + - toUser : int +} + +Ask --|> Subject + +abstract class Subject { + + attach(o : Observer) : void + + detach(o : Observer) : void + + notify() : void +} + +Subject "1" --> "*" Observer +interface Observer { + + update() : void +} + +UserManager ..> User +UserManager o-- IUserRepository +UserManager o-- INotifier + +interface IUserRepository { + + findByUsername(username : string) : User + + addUser(user : User) : bool +} + +IUserRepository ..> User +@enduml diff --git a/Documents/Diagram/Analyse/Sequence/RepondreAmis.txt b/Documents/Diagram/Analyse/Sequence/RepondreAmis.txt new file mode 100644 index 00000000..1c88290e --- /dev/null +++ b/Documents/Diagram/Analyse/Sequence/RepondreAmis.txt @@ -0,0 +1,20 @@ +@startuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +m-->c: pendingRequests: Request[] + +c-->v: DisplayPendingRequests(pendingRequests) +v-->u: Show Friend Requests + +u->v: RespondToRequest(requestId, response) +v-->c: RecordResponse(requestId, response) + + c->m: UpdateRequestStatus(requestId, response) + m-->c: updateStatus: success/failure + c-->v: NotifyUpdateResult(updateStatus) + v-->u: Show Response Result + +@enduml diff --git a/Documents/Diagram/Analyse/Sequence/SupprimerAmis.txt b/Documents/Diagram/Analyse/Sequence/SupprimerAmis.txt new file mode 100644 index 00000000..568ff971 --- /dev/null +++ b/Documents/Diagram/Analyse/Sequence/SupprimerAmis.txt @@ -0,0 +1,28 @@ +@startuml +actor User as u +boundary View as v +control Controller as c +entity Model as m + +u->v: Request Friends Page +v->c: Get /Friends +c->m: getFriends(userId) +alt successful retrieval + m-->c: friendsList: User[] +else retrieval failed + m-->c: error +end +c-->v: renderView(friendsList) +v-->u: Display Friends + +u->v: clickDeleteFriend(idUser) +v->c: Post: deleteFriend(idUser) +c->m: deleteFriend(idUser) +alt successful deletion + m-->c: updatedFriendsList: User[] +else deletion failed + m-->c: error +end +c-->v: renderView(updatedFriendsList) +v-->u: Display Updated Friends +@enduml diff --git a/Sources/composer.json b/Sources/composer.json index f8033411..b39f0d97 100755 --- a/Sources/composer.json +++ b/Sources/composer.json @@ -15,12 +15,12 @@ "src/data/stub/repository" ], "Console\\": "src/console", + "Shared\\": "src/shared", "App\\Router\\": "src/app/router", "App\\Controller\\": "src/app/controller", "App\\Router\\Response\\" : "src/app/router/response", "App\\Router\\Middleware\\" : "src/app/router/middleware", "App\\Router\\Request\\" : "src/app/router/request", - "Shared\\": "src/shared/", "Shared\\Exception\\": "src/shared/exception", "Shared\\Attributes\\": "src/shared/attributes", "App\\Views\\Directives\\" : "src/app/views/directives", diff --git a/Sources/composer.lock b/Sources/composer.lock old mode 100755 new mode 100644 index f074f5f8..9e57cd5a --- a/Sources/composer.lock +++ b/Sources/composer.lock @@ -4,8 +4,46 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c8acec96dcc23612616eedff9886528e", + "content-hash": "1887e85fc3cfddacf8d7e17588dae6f1", "packages": [ + { + "name": "adriangibbons/php-fit-file-analysis", + "version": "v3.2.4", + "source": { + "type": "git", + "url": "https://github.com/adriangibbons/php-fit-file-analysis.git", + "reference": "8efd36b1b963f01c42dc5329626519c040dec664" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/adriangibbons/php-fit-file-analysis/zipball/8efd36b1b963f01c42dc5329626519c040dec664", + "reference": "8efd36b1b963f01c42dc5329626519c040dec664", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*", + "satooshi/php-coveralls": "^2.0", + "squizlabs/php_codesniffer": "2.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "adriangibbons\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "description": "A PHP class for analysing FIT files created by Garmin GPS devices", + "homepage": "https://github.com/adriangibbons/php-fit-file-analysis", + "keywords": [ + "Fit", + "garmin" + ], + "support": { + "issues": "https://github.com/adriangibbons/php-fit-file-analysis/issues", + "source": "https://github.com/adriangibbons/php-fit-file-analysis/tree/master" + }, + "time": "2019-11-20T06:58:56+00:00" + }, { "name": "altorouter/altorouter", "version": "v1.1.0", diff --git a/Sources/config/config.php b/Sources/config/config.php index 3d030f3b..8ddae748 100755 --- a/Sources/config/config.php +++ b/Sources/config/config.php @@ -18,4 +18,4 @@ const DB_USER = 'toto'; const DB_PASSWORD = 'achanger'; //const APP_ENV = 'console'; -const DSN = "mysql:host=" . DB_HOST . ";dbname=" . DB_DATABASE; \ No newline at end of file +const DSN = "mysql:host=" . DB_HOST . ";dbname=" . DB_DATABASE; diff --git a/Sources/public/index.php b/Sources/public/index.php index 39ab3f97..ea0cfb45 100755 --- a/Sources/public/index.php +++ b/Sources/public/index.php @@ -6,14 +6,54 @@ require_once __DIR__ . '/../config/config.php'; use App\AppCreator; use App\Router\Middleware\LoggingMiddleware; use App\Router\Request\RequestFactory; +use Manager\UserManager; +use Manager\DataManager; + +use Repository\IUserRepository; use Shared\ArgumentControllerResolver; use Shared\IArgumentResolver; +use Stub\AuthService; +use Stub\NotificationRepository; +use Stub\TrainingRepository; +use Stub\UserRepository; +use Stub\RelationshipRequestRepository; +use Repository\INotificationRepository; +use App\Router\Middleware\AuthMiddleware; + + + + + +use Network\IAuthService; +use Network\IFriendRequestService; +use Network\RelationshipService; +use Network\INotificationService; +use Stub\NotificationService; + + +use Stub\StubData; use Twig\Environment; use Twig\Loader\FilesystemLoader; -use Shared\Log; +use Shared\IHashPassword; +use Shared\HashPassword; + $appFactory = new AppCreator(); $appFactory->registerService(IArgumentResolver::class, ArgumentControllerResolver::class); +$appFactory->registerService(UserManager::class, UserManager::class); +$appFactory->registerService(DataManager::class, StubData::class); +$appFactory->registerService(IAuthService::class, AuthService::class); +$appFactory->registerService(IFriendRequestService::class, RelationshipService::class); +$appFactory->registerService(IHashPassword::class, HashPassword::class); +$appFactory->registerService(INotificationService::class, NotificationService::class); +$appFactory->registerService(INotificationRepository::class, NotificationRepository::class); +$appFactory->registerService(IUserRepository::class, UserRepository::class); + + + + + + $appFactory->registerService(\Twig\Loader\LoaderInterface::class, function() { return new FilesystemLoader(__DIR__ . '/../src/app/views/Templates'); @@ -29,7 +69,7 @@ $app = $appFactory->create(); if (!is_null($app)){ // Ajout des Middleware /*$app->use(new LoggingMiddleware());*/ - + $app->use(new AuthMiddleware()); $app->mapControllers(); $app->run(RequestFactory::createFromGlobals()); } diff --git a/Sources/src/app/App.php b/Sources/src/app/App.php index c80e71f3..623e4380 100644 --- a/Sources/src/app/App.php +++ b/Sources/src/app/App.php @@ -29,6 +29,9 @@ class App private FrontController $frontController; + private Session $session; + + public function __construct(string $appName, int $version, \App\Container $diContainer) { $this->appName = $appName; @@ -36,6 +39,7 @@ class App $this->container = $diContainer; $this->router = new Router(""); $this->frontController = new FrontController($this->router,$this->container); + $this->session = Session::getInstance(); } public function use(IHttpMiddleware $middleware) diff --git a/Sources/src/app/Container.php b/Sources/src/app/Container.php index b254271f..d7c86d10 100644 --- a/Sources/src/app/Container.php +++ b/Sources/src/app/Container.php @@ -13,14 +13,13 @@ class Container implements ContainerInterface public function get(string $id) { - + if ($this->has($id)) { $entry = $this->entries[$id]; - if (is_callable($entry)) { - + if (is_callable($entry)) { return $entry($this); } - + $id = $entry; } diff --git a/Sources/src/app/controller/AthleteController.php b/Sources/src/app/controller/AthleteController.php index 54d49e87..50567921 100644 --- a/Sources/src/app/controller/AthleteController.php +++ b/Sources/src/app/controller/AthleteController.php @@ -1,177 +1,176 @@ 'John', -// 'prenom' => 'Doe', -// 'img' => 'john_doe', -// 'username' => 'johndoe', -// ], -// [ -// 'nom' => 'Alice', -// 'prenom' => 'Smith', -// 'img' => 'alice_smith', -// 'username' => 'alicesmith', -// ], -// ]; -// // if(!Validation::val_string($name)){ -// try { -// //code... -// // $model->userMgr->getUser($name); -// return $this->render('./page/addfriend.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => $utiliArray, -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [], -// 'responce' => "Notification d'ajout envoyée à $username" -// ]); -// } catch (\Throwable $th) { -// //throw $th; -// // return $this->render("addfriend.html.twig", ['tabError' => $taberror ]); -// } -// // } - -// } +class AthleteController extends BaseController +{ -// #[Route(path: '/analyses', name: 'analyses', methods: ['GET'])] -// public function analyses(): Response -// { -// return $this->render('./page/analyze.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => [], -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [] -// ]); -// } + #[Route(path: '/search-ath', name: 'search-ath', methods: ['GET'])] + public function searchUser(string $username, IRequest $req): Response + { + $taberror = []; + $utiliArray = [ + [ + 'nom' => 'John', + 'prenom' => 'Doe', + 'img' => 'john_doe', + 'username' => 'johndoe', + ], + [ + 'nom' => 'Alice', + 'prenom' => 'Smith', + 'img' => 'alice_smith', + 'username' => 'alicesmith', + ], + ]; + // if(!Validation::val_string($name)){ + try { + //code... + // $model->userMgr->getUser($name); + return $this->render('./page/addfriend.html.twig', [ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => $utiliArray, + 'infoUser' => [], + 'exos' => [], + 'member' => [], + 'responce' => "Notification d'ajout envoyée à $username" + ]); + } catch (\Throwable $th) { + //throw $th; + // return $this->render("addfriend.html.twig", ['tabError' => $taberror ]); + } + // } + } -// #[Route(path: '/exercice', name: 'exercice', methods: ['GET'])] // 8 -// public function exercice(): Response -// { -// return $this->render('./page/exercice.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => [], -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [] -// ]); -// } + #[Route(path: '/analyses', name: 'analyses', methods: ['GET'])] + public function analyses(): Response + { + return $this->render('./page/analyze.html.twig', [ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } -// #[Route(path: '/add-friend', name: 'add-friend', methods: ['POST'])] -// public function addFriend(string $username, IRequest $req): Response -// { -// $taberror = []; -// $utiliArray = [ -// [ -// 'nom' => 'John', -// 'prenom' => 'Doe', -// 'img' => 'john_doe', -// 'username' => 'johndoe', -// ], -// [ -// 'nom' => 'Alice', -// 'prenom' => 'Smith', -// 'img' => 'alice_smith', -// 'username' => 'alicesmith', -// ], -// ]; -// // if(!Validation::val_string($name)){ -// try { -// //code... -// // $model->userMgr->addFriend($name); -// return $this->render('./page/addfriend.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => $utiliArray, -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [], -// 'responce' => "Notification d'ajout envoyée à $username" -// ]); -// } catch (\Throwable $th) { -// //throw $th; -// // return $this->render("addfriend.html.twig", ['tabError' => $taberror ]); -// } -// // } - -// } -// #[Route(path: '/delete-friend', name: 'delete-friend', methods: ['POST'])] + #[Route(path: '/exercice', name: 'exercice', methods: ['GET'])] // 8 + public function exercice(): Response + { + return $this->render('./page/exercice.html.twig', [ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } + + #[Route(path: '/add-friend', name: 'add-friend', methods: ['POST'])] + public function addFriend(string $username, IRequest $req): Response + { + $taberror = []; + $utiliArray = [ + [ + 'nom' => 'John', + 'prenom' => 'Doe', + 'img' => 'john_doe', + 'username' => 'johndoe', + ], + [ + 'nom' => 'Alice', + 'prenom' => 'Smith', + 'img' => 'alice_smith', + 'username' => 'alicesmith', + ], + ]; + // if(!Validation::val_string($name)){ + try { + //code... + // $model->userMgr->addFriend($name); + return $this->render('./page/addfriend.html.twig', [ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => $utiliArray, + 'infoUser' => [], + 'exos' => [], + 'member' => [], + 'responce' => "Notification d'ajout envoyée à $username" + ]); + } catch (\Throwable $th) { + //throw $th; + // return $this->render("addfriend.html.twig", ['tabError' => $taberror ]); + } + // } + + } + -// #[Route(path: '/friend', name: 'friend', methods: ['GET'])] -// public function friend(): Response -// { -// $utiliArray = [ -// [ -// 'nom' => 'John', -// 'prenom' => 'Doe', -// 'img' => 'john_doe', -// 'username' => 'johndoe', -// ], -// [ -// 'nom' => 'Alice', -// 'prenom' => 'Smith', -// 'img' => 'alice_smith', -// 'username' => 'alicesmith', -// ], -// ]; -// // $this->Auth->getUser->role->getFriends -// return $this->render('./page/addfriend.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => $utiliArray, -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [], -// ]); -// } -// } \ No newline at end of file + #[Route(path: '/friend', name: 'friend', methods: ['GET'])] + public function friend(): Response + { + $utiliArray = [ + [ + 'nom' => 'John', + 'prenom' => 'Doe', + 'img' => 'john_doe', + 'username' => 'johndoe', + ], + [ + 'nom' => 'Alice', + 'prenom' => 'Smith', + 'img' => 'alice_smith', + 'username' => 'alicesmith', + ], + ]; + return $this->render('./page/addfriend.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => $utiliArray, + 'infoUser' => [], + 'exos' => [], + 'member' => [], + ]); + } + +} \ No newline at end of file diff --git a/Sources/src/app/controller/AuthController.php b/Sources/src/app/controller/AuthController.php index e6620fe7..c5469764 100644 --- a/Sources/src/app/controller/AuthController.php +++ b/Sources/src/app/controller/AuthController.php @@ -1,82 +1,147 @@ redirectToRoute('blog_index'); -// } - -// // this statement solves an edge-case: if you change the locale in the login -// // page, after a successful login you are redirected to a page in the previous -// // locale. This code regenerates the referrer URL whenever the login page is -// // browsed, to ensure that its locale is always the current one. -// $this->saveTargetPath($request->getSession(), 'main', $this->generateUrl('admin_index')); - -// return $this->render('security/login.html.twig', [ -// // last username entered by the user (if any) -// 'last_username' => $helper->getLastUsername(), -// // last authentication error (if any) -// 'error' => $helper->getLastAuthenticationError(), -// ]); -// } - -// #[Route('/login', name: 'login')] -// public function login(?string $username, ?string $password ,IRequest $request): Response { -// // if user is already logged in, don't display the login page again -// if ($user) { -// return $this->redirectToRoute('blog_index'); -// } - -// // this statement solves an edge-case: if you change the locale in the login -// // page, after a successful login you are redirected to a page in the previous -// // locale. This code regenerates the referrer URL whenever the login page is -// // browsed, to ensure that its locale is always the current one. -// $this->saveTargetPath($request->getSession(), 'main', $this->generateUrl('admin_index')); - -// return $this->render('security/login.html.twig', [ -// // last username entered by the user (if any) -// 'last_username' => $helper->getLastUsername(), -// // last authentication error (if any) -// 'error' => $helper->getLastAuthenticationError(), -// ]); -// } +namespace App\Controller; +use App\Container; +use App\Router\Request\IRequest; +use App\Router\Response\Response; +use App\Router\Response\IResponse; + +use Couchbase\UserManager; +use Shared\Attributes\Route; +use Shared\Validation; +use Twig\Environment; +use Data\Core\Preferences; +use Shared\Log; + +class AuthController extends BaseController +{ + + + #[Route('/login', name: 'login',methods: ['POST'])] + public function login(IRequest $request): IResponse { + + $error = []; + try { + $log=Validation::clean_string($request->getBody()['email']); + $mdp=Validation::clean_string($request->getBody()['password']); + } catch (\Throwable $th) { + $error = "Wrong cred"; + } + + if($this->container->get(UserManager::class)->login($log,$mdp)){ + return $this->redirectToRoute('/'); + } + else{ + $error [] = "Erreur de connexion. Essayez encore"; + } + return $this->render('./page/login.html.twig', ['error' => $error]); + + + + } + + #[Route('/log', name: 'baseLog',methods: ['GET'])] + public function index(IRequest $request): IResponse { + + return $this->render('./page/login.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + + } + + #[Route('/register', name: 'register' , methods:['GET'])] + public function register(IRequest $request): IResponse + { + if ($request->getMethod() == 'POST') { + $nom = $request->getBody()['nom']; + + $prenom = $request->getBody()['prenom']; + + $username = $request->getBody()['username']; -// function inscription() { -// $model = new ModelVisitor(); -// $log=Validation::clean_string($_POST['pseudo']); -// $mdp=Validation::clean_string($_POST['password']); -// if($model->createAUser($log,$mdp)){ -// if(ModelUser::login($log, $mdp)){ -// UserControler::displayView(); -// } -// } -// } -// function login() { -// $model = new ModelVisitor(); -// if(!isset($_POST['pseudo']) || !isset($_POST['password'])) throw new Exception(" some wrong with credentials !!!!!"); -// $log=Validation::clean_string($_POST['pseudo']); -// $mdp=Validation::clean_string($_POST['password']); -// if(ModelUser::login($log, $mdp)){ -// UserControler::displayView(); -// } + $email = $request->getBody()['email']; + + $motDePasse = $request->getBody()['motDePasse']; + + $sexe = $request->getBody()['sexe']; + + $taille = $request->getBody()['taille']; + + $poids = $request->getBody()['poids']; + + $dateNaissanceStr = $request->getBody()['nom']; + $dateNaissance = new \DateTime($dateNaissanceStr); + + + if (!$dateNaissance) { + throw new \Exception("Date de naissance non valide. Format attendu : YYYY-MM-DD"); + } + + $roleName = $request->getBody()['roleName']; + + + $registrationData = [ + 'nom' => $nom, + 'prenom' => $prenom, + 'username' => $username, + 'email' => $email, + 'sexe' => $sexe, + 'taille' => $taille, + 'poids' => $poids, + 'dateNaissance' => $dateNaissance, + 'roleName' => $roleName + ]; + + try { + if ($this->container->get(UserManager::class)->register($email, $motDePasse, $registrationData)) { + return $this->redirectToRoute('/'); + } else { + + $error [] = 'L\'inscription a échoué. Veuillez réessayer.'; + } + } catch (\Exception $e) { + $error [] = 'Erreur lors de l\'inscription: ' . $e->getMessage(); + } + } + + return $this->render('/register.html.twig'); + } + + #[Route(path: '/mdp', name: 'mdp', methods: ['POST'])] + public function mdp(string $ancienMotDePasse,string $nouveauMotDePasse,string $confirmerMotDePasse, IRequest $req): Response + { -// } + // CONFIRMER LES DONNESS !!!!! IMPORTANT + + return $this->render('./page/settings.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } -// } + + +} ?> \ No newline at end of file diff --git a/Sources/src/app/controller/BaseController.php b/Sources/src/app/controller/BaseController.php index 18e1a5eb..da6249a1 100644 --- a/Sources/src/app/controller/BaseController.php +++ b/Sources/src/app/controller/BaseController.php @@ -1,6 +1,7 @@ preference = new Preferences(); + } protected ContainerInterface $container; public function setContainer(ContainerInterface $container) diff --git a/Sources/src/app/controller/Controller.php b/Sources/src/app/controller/Controller.php index decd7d99..b17efa74 100644 --- a/Sources/src/app/controller/Controller.php +++ b/Sources/src/app/controller/Controller.php @@ -14,7 +14,7 @@ use Shared\Log; class Controller extends BaseController { private Environment $twig; - private Preferences $preference; + protected Preferences $preference; public function __construct() { @@ -76,23 +76,6 @@ class Controller extends BaseController ]); } - #[Route(path: '/exercice', name: 'exercice', methods: ['GET'])] // 8 - public function exercice(): Response - { - return $this->render('./page/exercice.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => [], - 'infoUser' => [], - 'exos' => [], - 'member' => [] - ]); - } #[Route(path: '/exercices', name: 'exercices', methods: ['POST'])] // 8 public function exercices(String $type, String $intensite, String $date, IRequest $req): Response @@ -286,81 +269,6 @@ class Controller extends BaseController ]); } - #[Route(path: '/add-friend', name: 'add-friend', methods: ['POST'])] - public function addFriend(string $username, IRequest $req): Response - { - $taberror = []; - $utiliArray = [ - [ - 'nom' => 'John', - 'prenom' => 'Doe', - 'img' => 'john_doe', - 'username' => 'johndoe', - ], - [ - 'nom' => 'Alice', - 'prenom' => 'Smith', - 'img' => 'alice_smith', - 'username' => 'alicesmith', - ], - ]; - // if(!Validation::val_string($name)){ - try { - //code... - // $model->userMgr->addFriend($name); - return $this->render('./page/addfriend.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => $utiliArray, - 'infoUser' => [], - 'exos' => [], - 'member' => [], - 'responce' => "Notification d'ajout envoyée à $username" - ]); - } catch (\Throwable $th) { - //throw $th; - // return $this->render("addfriend.html.twig", ['tabError' => $taberror ]); - } - // } - - } - - #[Route(path: '/friend', name: 'friend', methods: ['GET'])] - public function friend(): Response - { - $utiliArray = [ - [ - 'nom' => 'John', - 'prenom' => 'Doe', - 'img' => 'john_doe', - 'username' => 'johndoe', - ], - [ - 'nom' => 'Alice', - 'prenom' => 'Smith', - 'img' => 'alice_smith', - 'username' => 'alicesmith', - ], - ]; - return $this->render('./page/addfriend.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => $utiliArray, - 'infoUser' => [], - 'exos' => [], - 'member' => [], - ]); - } #[Route(path: '/friendlist', name: 'friendlist', methods: ['POST'])] public function friendlist(string $username, IRequest $req): Response @@ -486,23 +394,6 @@ class Controller extends BaseController ]); } - #[Route(path: '/settings', name: 'settings', methods: ['GET'])] - public function settings(IRequest $req): Response - { - return $this->render('./page/settings.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => [], - 'infoUser' => [], - 'exos' => [], - 'member' => [] - ]); - } #[Route(path: '/profile', name: 'profile', methods: ['GET'])] public function profile(): Response @@ -522,28 +413,6 @@ class Controller extends BaseController ]); } - #[Route(path: '/preferences', name: 'preferences', methods: ['POST'])] - public function preferences(string $theme, IRequest $req): Response - { - /*TODO*/ - - // VALIDER LES DONNEES - $this->preference->majCookie($theme); - - return $this->render('./page/settings.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => [], - 'infoUser' => [], - 'exos' => [], - 'member' => [] - ]); - } #[Route(path: '/psettings', name: 'psettings', methods: ['POST'])] public function psettings(string $nom,string $prenom,string $dateNaissance,string $mail,string $tel, IRequest $req): Response @@ -565,26 +434,6 @@ class Controller extends BaseController ]); } - #[Route(path: '/mdp', name: 'mdp', methods: ['POST'])] - public function mdp(string $ancienMotDePasse,string $nouveauMotDePasse,string $confirmerMotDePasse, IRequest $req): Response - { - - // CONFIRMER LES DONNESS !!!!! IMPORTANT - - return $this->render('./page/settings.html.twig',[ - 'css' => $this->preference->getCookie(), - 'pp' => "test2", - 'user' => "Doe", - 'role' => "Athlète", - 'friendship' => [], - 'analyzes' => [], - 'mails' => [], - 'users' => [], - 'infoUser' => [], - 'exos' => [], - 'member' => [] - ]); - } #[Route(path: '/login', name: 'login', methods: ['POST'])] public function login(string $username,string $mdp, IRequest $req): Response diff --git a/Sources/src/app/controller/FrontController.php b/Sources/src/app/controller/FrontController.php index 1f37a16a..7676ec67 100644 --- a/Sources/src/app/controller/FrontController.php +++ b/Sources/src/app/controller/FrontController.php @@ -47,6 +47,9 @@ class FrontController { } catch (NotFoundHttpException $e) { $this->handleError(404, $e->getMessage()); } + catch(\Throwable $e){ + $this->handleError(501, $e->getMessage()); + } } private function getController($controllerSpec) { diff --git a/Sources/src/app/controller/SocialController.php b/Sources/src/app/controller/SocialController.php index 57fe43b8..f91db3cf 100644 --- a/Sources/src/app/controller/SocialController.php +++ b/Sources/src/app/controller/SocialController.php @@ -1,17 +1,19 @@ - +render('./page/home.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } -// #[Route(path: '/', name: 'home', methods: ['GET'])] -// public function index(): Response -// { -// return $this->render('./page/home.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => [], -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [] -// ]); -// } + #[Route(path: '/settings', name: 'settings', methods: ['GET'])] + public function settings(IRequest $req): Response + { + return $this->render('./page/settings.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } -// #[Route(path: '/settings', name: 'settings', methods: ['GET'])] -// public function settings(IRequest $req): Response -// { -// return $this->render('./page/settings.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => [], -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [] -// ]); -// } + #[Route(path: '/preferences', name: 'preferences', methods: ['POST'])] + public function preferences(string $theme, IRequest $req): Response + { - -// #[Route(path: '/preferences', name: 'preferences', methods: ['POST'])] -// public function preferences(string $theme, IRequest $req): Response -// { -// /*TODO*/ - -// // VALIDER LES DONNEES -// $this->preference->majCookie($theme); + // VALIDER LES DONNEES + $this->preference->majCookie($theme); -// return $this->render('./page/settings.html.twig',[ -// 'css' => $this->preference->getCookie(), -// 'pp' => "test2", -// 'user' => "Doe", -// 'role' => "Athlète", -// 'friendship' => [], -// 'analyzes' => [], -// 'mails' => [], -// 'users' => [], -// 'infoUser' => [], -// 'exos' => [], -// 'member' => [] -// ]); -// } + return $this->render('./page/settings.html.twig',[ + 'css' => $this->preference->getCookie(), + 'pp' => "test2", + 'user' => "Doe", + 'role' => "Athlète", + 'friendship' => [], + 'analyzes' => [], + 'mails' => [], + 'users' => [], + 'infoUser' => [], + 'exos' => [], + 'member' => [] + ]); + } -// } \ No newline at end of file +} \ No newline at end of file diff --git a/Sources/src/app/router/middleware/AuthMiddleware.php b/Sources/src/app/router/middleware/AuthMiddleware.php new file mode 100644 index 00000000..806531bf --- /dev/null +++ b/Sources/src/app/router/middleware/AuthMiddleware.php @@ -0,0 +1,27 @@ +send(); + // exit; + // } +// La page n’est pas redirigée correctement + +// Firefox a détecté que le serveur redirige la demande pour cette adresse d’une manière qui n’aboutira pas. + +// La cause de ce problème peut être la désactivation ou le refus des cookies. + // if (!isset($_SESSION['user'])) { + // $resp =new RedirectResponse("/log"); + // $resp->send(); + // exit; + // } + return parent::handle($request, $next); + } +} \ No newline at end of file diff --git a/Sources/src/app/router/response/RedirectResponse.php b/Sources/src/app/router/response/RedirectResponse.php index 91c5ac6d..7a34037e 100644 --- a/Sources/src/app/router/response/RedirectResponse.php +++ b/Sources/src/app/router/response/RedirectResponse.php @@ -54,7 +54,7 @@ class RedirectResponse implements IResponse foreach ($this->headers as $name => $value) { header("$name: $value"); } - + header("Location: " . $this->url); // Optionally echo content if any diff --git a/Sources/src/app/views/Templates/page/login.html.twig b/Sources/src/app/views/Templates/page/login.html.twig index 2bfb7ce3..5554373b 100644 --- a/Sources/src/app/views/Templates/page/login.html.twig +++ b/Sources/src/app/views/Templates/page/login.html.twig @@ -11,27 +11,27 @@

Connexion

-
+
- - + +
- - + +
diff --git a/Sources/src/app/views/Templates/page/register.html.twig b/Sources/src/app/views/Templates/page/register.html.twig index 589ea888..5fbf6cd2 100644 --- a/Sources/src/app/views/Templates/page/register.html.twig +++ b/Sources/src/app/views/Templates/page/register.html.twig @@ -15,81 +15,78 @@
- - + +
- - + +
- - + +
- - -
- - + +
- - + +
- - + +
- - + +
- - + +
- - + +
-
-
+
diff --git a/Sources/src/console/Console.php b/Sources/src/console/Console.php index d766471d..7a621934 100755 --- a/Sources/src/console/Console.php +++ b/Sources/src/console/Console.php @@ -4,12 +4,16 @@ namespace Console; use DateTime; use Model\Athlete; +use Model\Coach; +use Model\RelationshipRequest; use Model\Role; +use Model\Training; +use Model\User; use Manager\DataManager; use Stub\StubData; -$model = new StubData(); // Couche d'accès au model +$model = new Model(); // Couche d'accès au model function clearScreen() { system('clear || cls'); @@ -50,7 +54,6 @@ function displayProfileMenu() echo "\n--- Profil ---\n"; echo "1. Informations de l'utilisateur\n"; echo "2. Historique d'activité\n"; - echo "Voir les statistiques de condition physique Général"; echo "3. Liste d'amis\n"; echo "4. Paramètres de confidentialité et visibilité\n"; echo "5. Ajouter une activité\n"; @@ -77,7 +80,6 @@ function displayCoachMenu() clearScreen(); echo "\n--- Menu Coach ---\n"; echo "1. Liste des athlètes\n"; - echo "2. Statistiques globales\n"; echo "3. Analyses par athlète\n"; echo "4. Gérer la liste de mes athlètes\n"; // Gérer les athlètes (comprend : Ajouter un athlète, Supprimer un athlète, Consulter les statistiques d'un athlète) @@ -86,19 +88,24 @@ function displayCoachMenu() echo "Choisissez une option: "; } -function displaySocialManagementMenu() -{ +function displaySocialManagementMenu() { clearScreen(); echo "\n--- Gestion sociale ---\n"; echo "1. Rechercher des coach\n"; echo "2. Rechercher des athletes\n"; echo "3. Gérer la liste d'amis\n"; - // Ajouter des amis - // Supprimer des amis ... echo "4. Options de partage\n"; echo "0. Retour au menu principal\n"; echo "Choisissez une option: "; } +function displaySubSocialManagementMenu(){ + clearScreen(); + echo "\n--- Gestion sociale Sub 3---\n"; + echo " 3.1. Voir les demandes d'amitié\n"; + echo " 3.2. Répondre à une demande d'amitié\n"; + echo " 3.3. Ajouter un ami\n"; + echo " 3.4. Supprimer un ami\n"; +} function displaySettingsMenu() { @@ -134,21 +141,22 @@ function displayManagementArrayTraining() echo "0. Retour au menu du coach\n"; echo "Choisissez une option: "; } + /** * Fonction permettant à un utilisateur de se connecter. * - * @param DataManager $model La couche d'accès au modèle de données. + * @param Model $model La couche d'accès au modèle de données. * @return bool Retourne true si l'utilisateur s'est connecté avec succès, sinon false. */ -function loginUser(DataManager $model) +function loginUser(Model $model): bool { try { - echo "\nEntrez votre nom d'utilisateur: "; - $username = trim(fgets(STDIN)); + echo "\nEntrez votre nom email: "; + $emailUser = trim(fgets(STDIN)); echo "Entrez votre mot de passe: "; $password = trim(fgets(STDIN)); - if ($model->userMgr->login($username, $password)) { + if ($model->userMgr->login($emailUser, $password)) { return true; } else { echo "Erreur de connexion. Essayez encore.\n"; @@ -163,13 +171,148 @@ function loginUser(DataManager $model) } } +function addFriend(Model $model) { + clearScreen(); + echo "\nEntrez le nom d'utilisateur de la personne que vous recherchez : "; + $nom = trim(fgets(STDIN)); + + $userList = $model->userMgr->searchUsersByName($nom); + if (empty($userList)) { + echo "Aucun utilisateur trouvé.\n"; + return; + } + + /** @var User $user */ + foreach ($userList as $index => $user) { + echo ($index + 1) . ". " . $user->getNom() . " " . $user->getPrenom() . "\n"; + } + + + echo "\nEntrez le numéro de la personne que vous voulez ajouter ou 0 pour annuler : "; + $choice = trim(fgets(STDIN)); + + if ($choice === '0') { + echo "Ajout d'ami annulé.\n"; + return; + } + + $selectedIndex = intval($choice) - 1; + if (!isset($userList[$selectedIndex])) { + echo "Sélection invalide.\n"; + return; + } + + $user = $userList[$selectedIndex]; + echo "Ajout de " . $user->getPrenom() . " " . $user->getNom() . "\n"; + + if ($model->userMgr->addFriend($user->getUsername())) { + echo $userList[0]->getRole()->getUsersRequests()[0]; + echo $userList[0]->getNotifications()[0]->getType(); + + sleep(2); + + echo "Notification envoyée.\n"; + } else { + echo "Problème à l'envoi de la notification, veuillez vérifier votre connexion ou réessayer plus tard.\n"; + } +} + + +function deleteFriend(Model $model) { + echo "\nListe de vos amis :\n"; + + $friendList = $model->userMgr->getCurrentUser()->getRole()->getUsersList(); + + if (empty($friendList)) { + echo "Vous n'avez aucun ami à supprimer.\n"; + return; + } + + /** @var User $friend */ + foreach ($friendList as $index => $friend) { + echo ($index + 1) . ". " . $friend->getNom() . " " . $friend->getPrenom() . "\n"; + } + + echo "\nEntrez le numéro de l'ami que vous voulez supprimer ou 0 pour annuler : "; + $choice = trim(fgets(STDIN)); + + if ($choice === '0') { + echo "Suppression d'ami annulée.\n"; + return; + } + + $selectedIndex = intval($choice) - 1; + if (!isset($friendList[$selectedIndex])) { + echo "Sélection invalide.\n"; + return; + } + + $friend = $friendList[$selectedIndex]; + if ($model->userMgr->deleteFriend($friend->getId())) { // Supposition que deleteFriend utilise l'ID de l'ami + echo "Ami " . $friend->getPrenom() . " " . $friend->getNom() . " supprimé.\n"; + } else { + echo "Problème lors de la suppression, veuillez réessayer plus tard.\n"; + } +} + +function answerAdd(Model $model) { + echo "\nListe des demandes d'ami en attente :\n"; + + $friendRequests = $model->userMgr->getCurrentUser()->getRole()->getUsersRequests(); + + if (empty($friendRequests)) { + echo "Aucune demande d'ami en attente.\n"; + return; + } + + foreach ($friendRequests as $index => $request) { + echo ($index + 1) . ". Demande de : " . $request->getId() . "\n"; + } + + echo "\nEntrez le numéro de la demande à répondre ou 0 pour annuler : "; + $choice = trim(fgets(STDIN)); + + if ($choice === '0') { + echo "Aucune action effectuée.\n"; + return; + } + + $selectedIndex = intval($choice) - 1; + if (!isset($friendRequests[$selectedIndex])) { + echo "Sélection invalide.\n"; + return; + } + /** @var RelationshipRequest $request */ + $request = $friendRequests[$selectedIndex]; + echo "Répondre à la demande de " . $request->getFromUser() . " " . $request->getToUser() . ". Accepter (oui) ou refuser (non) ? "; + $response = strtolower(trim(fgets(STDIN))); + + if ($response === 'oui') { + if ($model->userMgr->respondToFriendRequest($request->getId(),true)) { // Supposition de la méthode acceptFriendRequest + echo $model->userMgr->getCurrentUser()->getRole()->getUsersList()[0]; + echo "Demande d'ami acceptée.\n"; + } else { + echo "Problème lors de l'acceptation de la demande, veuillez réessayer plus tard.\n"; + } + } elseif ($response === 'non') { + if ($model->userMgr->respondToFriendRequest($request->getId(),false)) { // Supposition de la méthode rejectFriendRequest + echo "Demande d'ami refusée.\n"; + } else { + echo "Problème lors du refus de la demande, veuillez réessayer plus tard.\n"; + } + } else { + echo "Réponse non reconnue. Aucune action effectuée.\n"; + } +} + + /** * Fonction permettant à un utilisateur de s'inscrire. * - * @param DataManager $model La couche d'accès au modèle de données. + * @param Model $model La couche d'accès au modèle de données. * @return bool Retourne true si l'inscription a réussi, sinon false. */ -function registerUser(DataManager $model) +function registerUser(Model $model) { try { @@ -179,6 +322,9 @@ function registerUser(DataManager $model) echo "Entrez votre prénom: "; $prenom = trim(fgets(STDIN)); + echo "Entrez votre username: "; + $username = trim(fgets(STDIN)); + echo "Entrez votre adresse email: "; $email = trim(fgets(STDIN)); @@ -209,6 +355,7 @@ function registerUser(DataManager $model) $registrationData = [ 'nom' => $nom, 'prenom' => $prenom, + 'username' => $username, 'email' => $email, 'sexe' => $sexe, 'taille' => $taille, @@ -225,14 +372,360 @@ function registerUser(DataManager $model) } } catch (\Exception $e) { - + echo "Erreur lors de l'inscription : " . $e->getMessage() . "\n"; sleep(2); return false; } } -function profileMenu(DataManager $model) +function ArrayAthleteMenu(Model $model) +{ + do { + displayManagementArrayAthlete(); + $coachChoice = trim(fgets(STDIN)); + + switch ($coachChoice) { + case '1': + echo "Renseignez le surnom de l'utilisateur : "; + $username = trim(fgets(STDIN)); + + if($model->coachMgr->addUser($username)){ + echo "Ajout avec succès !"; + } else { + echo "Le user ne peut pas être ajouter en tant que athlete !"; + } + sleep(2); + break; + case '2': + echo "Renseignez le surnom de l'utilisateur : "; + $username = trim(fgets(STDIN)); + if($model->coachMgr->removeUser($username)){ + echo "Suppression avec succès !"; + } else { + echo "Pb suppression ou aucun utilisateur de ce nom !"; + } + sleep(2); + break; + case '3': + $usersArray = $model->coachMgr->getUsersList(); + if (!empty($usersArray)) { + foreach ($usersArray as $value) { + echo $value->__toString() . "\n"; + } + } else { + echo "Aucun utilisateur dans la liste\n"; + } + sleep(2); + break; + case '0': + return; + default : + echo "Option invalide. Veuillez réessayer.\n"; + sleep(2); + break; + } + } while($coachChoice); +} + +function ArrayTrainingMenu(Model $model) +{ + do { + displayManagementArrayTraining(); + $coachChoice = trim(fgets(STDIN)); + + switch ($coachChoice) { + case '1': + $existingTrainings = $model->coachMgr->getTrainingsList(); + $lastTraining = end($existingTrainings); + $lastTrainingId = $lastTraining ? $lastTraining->getId() : 0; + $newTrainingId = $lastTrainingId + 1; + + echo "L'ID de l'entraînement sera automatiquement défini sur : $newTrainingId\n"; + $date = new DateTime(); + echo "Renseignez la latitude de l'entraînement : "; + $latitude = trim(fgets(STDIN)); + echo "Renseignez la longitude de l'entraînement : "; + $longitude = trim(fgets(STDIN)); + echo "Renseignez la description de l'entraînement : "; + $description = trim(fgets(STDIN)); + + $training = new Training($newTrainingId, $date, $latitude, $longitude, $description, null); + + if($model->coachMgr->addTraining($training)){ + echo "Ajout avec succès !"; + } else { + echo "Pb ajout !"; + } + sleep(2); + break; + + case '2': + echo "Renseignez l'id de l'entrainement : "; + $idTraining = trim(fgets(STDIN)); + if($model->coachMgr->removeTraining($idTraining)){ + echo "Suppression avec succès !"; + } else { + echo "Pb suppression ou aucun entrainement de cet id !"; + } + sleep(2); + break; + case '3': + $trainingArray = $model->coachMgr->getTrainingsList(); + if (!empty($trainingArray)) { + foreach ($trainingArray as $value) { + echo $value->__toString() . "\n"; + } + } else { + echo "Aucun entrainement dans la liste\n"; + } + sleep(2); + break; + case '0': + return; + default : + echo "Option invalide. Veuillez réessayer.\n"; + sleep(2); + break; + } + } while($coachChoice); +} +function ArrayFriendManagementMenu(Model $model) { + do { + displaySubSocialManagementMenu(); + $userChoice = trim(fgets(STDIN)); + + switch ($userChoice) { + case '3.1': // Voir les demandes d'amitié + $friendRequests = $model->userMgr->getCurrentUser()->getRole()->getUsersRequests(); + if (!empty($friendRequests)) { + foreach ($friendRequests as $request) { + echo $request->__toString() . "\n"; + } + } else { + echo "Aucune demande d'amitié.\n"; + } + sleep(2); + break; + + case '3.2': // Répondre une demande d'amitié + answerAdd($model); + break; + + case '3.3': // Ajouter un ami + addFriend($model); + sleep(2); + break; + + case '3.4': // Supprimer un ami + deleteFriend($model); + sleep(2); + break; + + case '0': // Retour au menu principal + return; + + default: + echo "Option invalide. Veuillez réessayer.\n"; + sleep(2); + break; + } + } while ($userChoice); +} + +//function displayCoachMenu() +//{ +// clearScreen(); +// echo "\n--- Menu Coach ---\n"; +// echo "1. Liste des athlètes\n"; +// echo "2. Statistiques globales\n"; +// echo "3. Analyses par athlète\n"; +// echo "4. Gérer la liste de mes athlètes\n"; +// // Gérer les athlètes (comprend : Ajouter un athlète, Supprimer un athlète, Consulter les statistiques d'un athlète) +// echo "5. Gérer la liste de mes exercices\n"; +// echo "0. Retour au menu principal\n"; +// echo "Choisissez une option: "; +//} +function CoachMenu(Model $model) +{ + do { + displayCoachMenu(); + $coachChoice = trim(fgets(STDIN)); + + switch ($coachChoice) { + case '1': // echo "1. Liste des athlètes\n"; + $arrayUsers = $model->coachMgr->getUsersList(); + if (isset($arrayUsers) && !empty($arrayUsers)) { + foreach ($arrayUsers as $value) { + echo $value->__toString() . "\n"; + } + } else { + echo "Aucun utilisateur dans la liste\n"; + } + sleep(2); + break; +// case '2': // echo "2. Statistiques globales\n"; +// $arrayUsers = $model->coachMgr->getUsersList(); +// +// if (!empty($arrayUsers)) { +// do { +// clearScreen(); +// $cpt = 0; +// foreach ($arrayUsers as $value) { +// echo $cpt . " - " . $value->__toString() . "\n"; +// $cpt = $cpt + 1; +// } +// +// echo "Renseignez le numéro de l'utilisateur choisi : "; +// $usernameNumber = trim(fgets(STDIN)); +// +// // Vérifier si l'index saisi est valide +// if (isset($arrayUsers[$usernameNumber])) { +// $selectedUser = $arrayUsers[$usernameNumber]; +// if (($arrayStats = $model->coachMgr->getStatistics($selectedUser))) { +// foreach ($arrayStats as $value) { +// echo $value->__toString() . "\n"; +// } +// } else { +// echo "Pas de statistiques valides présentent !\n"; +// } +// } else { +// echo "Numéro d'utilisateur non valide.\n"; +// $cpt = 0; +// } +// } while($cpt == 0); +// } else { +// echo "Aucun utilisateur dans la liste.\n"; +// } +// sleep(2); +// break; + case '3': // echo "3. Analyses par athlète\n"; + $arrayUsers = $model->coachMgr->getUsersList(); + + if (!empty($arrayUsers)) { + do { + clearScreen(); + $cpt = 0; + foreach ($arrayUsers as $value) { + echo $cpt . " - " . $value->__toString() . "\n"; + $cpt = $cpt + 1; + } + + echo "Renseignez le numéro de l'utilisateur choisi : "; + $usernameNumber = trim(fgets(STDIN)); + + // Vérifier si l'index saisi est valide + if (isset($arrayUsers[$usernameNumber])) { + $selectedUser = $arrayUsers[$usernameNumber]; + if (($arrayStats = $model->coachMgr->getAnalyse($selectedUser))) { + foreach ($arrayStats as $value) { + echo $value->__toString() . "\n"; + } + } else { + echo "Pas d'Analyses valides présentent !\n"; + } + } else { + echo "Numéro d'utilisateur non valide.\n"; + $cpt = 0; + } + } while($cpt == 0); + } else { + echo "Aucun utilisateur dans la liste.\n"; + } + sleep(2); + break; + case '4': // echo "4. Gérer la liste de mes athlètes\n"; + ArrayAthleteMenu($model); + break; + case '5': // echo "5. Gérer la liste de mes exercices\n"; + ArrayTrainingMenu($model); + break; + case '0': // Quitter + return; + default: + echo "Option invalide. Veuillez réessayer.\n"; + sleep(2); + break; + } + } while($coachChoice); +} + +//function displaySocialManagementMenu() +//{ +// clearScreen(); +// echo "\n--- Gestion sociale ---\n"; +// echo "1. Rechercher des coach\n"; +// echo "2. Rechercher des athletes\n"; +// echo "3. Gérer la liste d'amis\n"; +// // Ajouter des amis +// // Supprimer des amis ... +// echo "4. Options de partage\n"; +// echo "0. Retour au menu principal\n"; +// echo "Choisissez une option: "; +//} +// TODO athlteMgr +function socialManagementMenu(Model $model) { + do { + displaySocialManagementMenu(); + $managementChoice = trim(fgets(STDIN)); + + switch ($managementChoice) { + case '1': + echo "Renseignez le surnom du coach que vous recherchez : "; + $coachUsername = trim(fgets(STDIN)); + $users = $model->userMgr->searchUsersByName($coachUsername); + + if (!empty($users)) { + $foundCoaches = false; + foreach ($users as $user) { + if ($user->getRole() instanceof Coach) { + echo $user->__toString(); + $foundCoaches = true; + } + } + if (!$foundCoaches) { + echo "Aucun coach de ce nom : $coachUsername\n"; + } + } else { + echo "Aucun utilisateur trouvé avec le surnom : $coachUsername\n"; + } + sleep(2); + break; + case '2': + echo "Renseignez le surnom de l'athlete que vous recherchez : "; + $athleteUsername = trim(fgets(STDIN)); + $users = $model->userMgr->searchUsersByName($athleteUsername); + + if (!empty($users)) { + $foundAthletes = false; + foreach ($users as $user) { + if ($user->getRole() instanceof Athlete) { + echo $user->__toString(); + $foundAthletes = true; + } + } + if (!$foundAthletes) { + echo "Aucun athlete de ce nom : $athleteUsername\n"; + } + } else { + echo "Aucun utilisateur trouvé avec le surnom : $athleteUsername\n"; + } + sleep(2); + break; + case '3': // 3. Gérer la liste d'amis + ArrayFriendManagementMenu($model); + return; + case '0': // echo "0. Retour au menu principal\n"; + return; + default: + echo "Option invalide. Veuillez réessayer.\n"; + sleep(2); + break; + } + } while($managementChoice); +} + +function profileMenu(Model $model) { do { displayProfileMenu(); @@ -240,20 +733,28 @@ function profileMenu(DataManager $model) switch ($athleteChoice) { case '1': - echo "Impossible pour l'instant"; + echo $model->userMgr->getCurrentUser(); sleep(2); break; case '2': - if($model->athleteMgr->getActivities()) { - foreach ($model->athleteMgr->getActivities() as $activity) { - echo $activity->__toString(); + if($model->userMgr->getCurrentUser()->getRole() instanceof Athlete) { + $activities = $model->athleteMgr->getActivities(); + if($activities !== null && count($activities) > 0) { + foreach ($activities as $activity) { + echo $activity->__toString(); + } + } else { + echo "No activities found"; } } else { - echo "Aucune activité sur votre profil"; + echo "Vous etes pas un athléte"; } sleep(2); break; - case '5': + case '3': // Liste d'amis + sleep(2); + break; + case '4': // Importer des données (FIT/GPX/TCX) echo "Veuillez renseigner le chemin du fichier :\n"; $passFile = trim(fgets(STDIN)); echo "Veuillez renseigner le type d'activité :\n"; @@ -282,18 +783,18 @@ while (true) { $choice = trim(fgets(STDIN)); switch ($choice) { - case '1': // Se connecter - $model->userMgr->login("Doe", "password123"); - $loggedIn = true; + case '1': // Se connecter + if($model->userMgr->login("john.doe@example.com", "password123")) + $loggedIn = true; -// if (loginUser($model)) { -// $loggedIn = true; -// } + /* if (loginUser($model)) { + $loggedIn = true; + }*/ break; case '2': // S'inscrire - $model->userMgr->login("athlete", "hello321"); - $loggedIn = true; + if($model->userMgr->login("bruce.lee@example.com", "hello321")) + $loggedIn = true; // if (registerUser($model)) { // $loggedIn = true; // } @@ -307,7 +808,7 @@ while (true) { echo "Option invalide. Veuillez réessayer.\n"; break; } - } + } if ($loggedIn){ while ($loggedIn) { displayMainMenu(); @@ -319,22 +820,27 @@ while (true) { break; case '2': // Profil - profileMenu($model); + profileMenu( $model); break; case '3': // Analyse de la fréquence cardiaque displayHeartRateAnalysisMenu(); $analysisChoice = trim(fgets(STDIN)); - // TODO: Ajouter la logique pour les options d'analyse ici. + // TODO WEB break; case '4': // Gestion sociale - displaySocialManagementMenu($model); + socialManagementMenu($model); // TODO: Ajouter la logique pour les options de gestion sociale ici. break; - case '5': // Athlètes (pour les Coachs seulement) - displayCoachMenu(); + case '5': // Coach + if($model->userMgr->getCurrentUser()->getRole() instanceof \Model\Coach) { + CoachMenu($model); + } else { + echo "Vous n'avez pas accès à cette section ! (il faut etre coach)\n"; + sleep(2); + } break; case '6': // Paramètres @@ -344,6 +850,7 @@ while (true) { break; case '7': // Notifications + echo "Affichage des notifications...\n"; break; diff --git a/Sources/src/data/core/AuthService.php b/Sources/src/data/core/AuthService.php new file mode 100644 index 00000000..4ddfc9fa --- /dev/null +++ b/Sources/src/data/core/AuthService.php @@ -0,0 +1,86 @@ +userRepository = $userRepository; + $this->passwordHacher = $passwordHacher; + } + + public function login(string $email, string $password): bool { + $user = $this->userRepository->getItemByEmail($email); + if ($user === null || !$this->validatePassword($password, $user->getPasswordHash())) { + return false; + } + + $this->currentUser = $user; + // Add session handling logic here + return true; + } + + public function register(string $email, string $password, array $data): bool { + if ($this->userRepository->getItemByEmail($email)) { + throw new \Exception('User already exists'); + } + + $hashedPassword = $this->passwordHacher->hashPassword($password); + $prenom = $data['prenom']; + $username = $data['username']; + $nom = $data['nom']; + $email = $data['email']; + $sexe = $data['sexe']; + $taille = $data['taille']; + $poids = $data['poids']; + $dateNaissance = $data['dateNaissance'] ; + $roleName = $data['roleName']; + $role = null; + if($roleName == "Coach"){ + $role = new CoachAthlete(); + } + else if($roleName == "Athlete"){ + $role = new Athlete(); + } + // Create a new user instance (you should expand on this with more data as needed) + $user = new User( + random_int(0, 100), + $nom, + $prenom, + $username, + $email, + $hashedPassword, + $sexe, + $taille, + $poids, + $dateNaissance, + //should use reflexion + $role + ); + $this->userRepository->addItem($user); + $this->currentUser = $user; + // Add session handling logic here + return true; + } + + public function logout(): void { + $this->currentUser = null; + // Add session handling logic here + } + + public function getCurrentUser(): ?User { + return $this->currentUser; + } + + private function validatePassword(string $password, string $hash): bool { + // Implement password validation logic (e.g., using password_verify if using bcrypt) + } +} diff --git a/Sources/src/data/core/Preferences.php b/Sources/src/data/core/Preferences.php index b809e478..d7d599aa 100644 --- a/Sources/src/data/core/Preferences.php +++ b/Sources/src/data/core/Preferences.php @@ -25,8 +25,8 @@ $this->cookie = $maj; setcookie('preferences', $maj); } - } catch (Exception $e){ - throw new ValueError; + } catch (\Exception $e){ + throw new \ValueError; } } diff --git a/Sources/src/data/core/database/ActiviteEntity.php b/Sources/src/data/core/database/ActiviteEntity.php new file mode 100644 index 00000000..a29a0a47 --- /dev/null +++ b/Sources/src/data/core/database/ActiviteEntity.php @@ -0,0 +1,127 @@ +idActivity; + } + + public function getType() { + return $this->type; + } + + public function getDate() { + return $this->date; + } + + public function getHeureDebut() { + return $this->heureDebut; + } + + public function getHeureFin() { + return $this->heureFin; + } + + public function getEffortRessenti() { + return $this->effortRessenti; + } + + public function getVariabilite() { + return $this->variabilite; + } + + public function getVariance() { + return $this->variance; + } + + public function getEcartType() { + return $this->ecartType; + } + + public function getMoyenne() { + return $this->moyenne; + } + + public function getMaximum() { + return $this->maximum; + } + + public function getMinimum() { + return $this->minimum; + } + + public function getTemperatureMoyenne() { + return $this->temperatureMoyenne; + } + + // Setters + public function setIdActivite($idActivite) { + $this->idActivity = $idActivity; + } + + public function setType($type) { + $this->type = $type; + } + + public function setDate($date) { + $this->date = $date; + } + + public function setHeureDebut($heureDebut) { + $this->heureDebut = $heureDebut; + } + + public function setHeureFin($heureFin) { + $this->heureFin = $heureFin; + } + + public function setEffortRessenti($effortRessenti) { + $this->effortRessenti = $effortRessenti; + } + + public function setVariabilite($variabilite) { + $this->variabilite = $variabilite; + } + + public function setVariance($variance) { + $this->variance = $variance; + } + + public function setEcartType($ecartType) { + $this->ecartType = $ecartType; + } + + public function setMoyenne($moyenne) { + $this->moyenne = $moyenne; + } + + public function setMaximum($maximum) { + $this->maximum = $maximum; + } + + public function setMinimum($minimum) { + $this->minimum = $minimum; + } + + public function setTemperatureMoyenne($temperatureMoyenne) { + $this->temperatureMoyenne = $temperatureMoyenne; + } +} + +?> diff --git a/Sources/src/data/core/database/ActiviteGateway.php b/Sources/src/data/core/database/ActiviteGateway.php new file mode 100644 index 00000000..853cffa0 --- /dev/null +++ b/Sources/src/data/core/database/ActiviteGateway.php @@ -0,0 +1,120 @@ +connection = $connection; + } + + public function getActivite() { + $query = "SELECT * FROM Activite"; + return $this->connection->executeWithErrorHandling($query); + } + + public function getActiviteById(int $activiteId) { + $query = "SELECT * FROM Activite WHERE idActivite = :id"; + $params = [':id' => [$activiteId, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByType(string $type) { + $query = "SELECT * FROM Activite WHERE type = :type"; + $params = [':type' => [$type, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByDate(string $date) { + $query = "SELECT * FROM Activite WHERE date = :date"; + $params = [':date' => [$date, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByTimeRange(string $startTime, string $endTime) { + $query = "SELECT * FROM Activite WHERE heureDebut >= :startTime AND heureFin <= :endTime"; + $params = [ + ':startTime' => [$startTime, PDO::PARAM_STR], + ':endTime' => [$endTime, PDO::PARAM_STR] + ]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByEffort(int $effortRessenti) { + $query = "SELECT * FROM Activite WHERE effortRessenti = :effort"; + $params = [':effort' => [$effortRessenti, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByVariability(int $variabilite) { + $query = "SELECT * FROM Activite WHERE variabilite = :variability"; + $params = [':variability' => [$variabilite, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getActiviteByTemperature(int $temperatureMoyenne) { + $query = "SELECT * FROM Activite WHERE temperatureMoyenne = :temperature"; + $params = [':temperature' => [$temperatureMoyenne, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function addActivite(ActiviteEntity $activite) { + $query = "INSERT INTO Activite (type, date, heureDebut, heureDeFin, effortRessenti, variabilite, variance, ecartType, moyenne, maximum, minimum, temperatureMoyenne) + VALUES (:type, :date, :heureDebut, :heureDeFin, :effortRessenti, :variabilite, :variance, :ecartType, :moyenne, :maximum, :minimum, :temperatureMoyenne)"; + + $params = [ + ':type' => $activite->getType(), + ':date' => $activite->getDate()->format('Y-m-d'), // Format date pour SQL + ':heureDebut' => $activite->getHeureDebut()->format('H:i:s'), // Format heure pour SQL + ':heureDeFin' => $activite->getHeureFin()->format('H:i:s'), // Format heure pour SQL + ':effortRessenti' => $activite->getEffortRessenti(), + ':variabilite' => $activite->getVariabilite(), + ':variance' => $activite->getVariance(), + ':ecartType' => $activite->getEcartType(), + ':moyenne' => $activite->getMoyenne(), + ':maximum' => $activite->getMaximum(), + ':minimum' => $activite->getMinimum(), + ':temperatureMoyenne' => $activite->getTemperatureMoyenne(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function updateActivite(ActiviteEntity $oldActivite, ActiviteEntity $newActivite) { + $query = "UPDATE Activite + SET type = :type, date = :date, heureDebut = :heureDebut, heureDeFin = :heureDeFin, + effortRessenti = :effortRessenti, variabilite = :variabilite, variance = :variance, ecartType = :ecartType, moyenne = :moyenne, maximum = :maximum, minimum = :minimum, temperatureMoyenne = :temperatureMoyenne + WHERE idActivite = :idActivite"; + + $params = [ + ':idActivite' => $oldActivite->getIdActivite(), + ':type' => $newActivite->getType(), + ':date' => $newActivite->getDate()->format('Y-m-d'), // Format date pour SQL + ':heureDebut' => $newActivite->getHeureDebut()->format('H:i:s'), // Format heure pour SQL + ':heureDeFin' => $newActivite->getHeureFin()->format('H:i:s'), // Format heure pour SQL + ':effortRessenti' => $newActivite->getEffortRessenti(), + ':variabilite' => $newActivite->getVariabilite(), + ':variance' => $newActivite->getVariance(), + ':ecartType' => $newActivite->getEcartType(), + ':moyenne' => $newActivite->getMoyenne(), + ':maximum' => $newActivite->getMaximum(), + ':minimum' => $newActivite->getMinimum(), + ':temperatureMoyenne' => $newActivite->getTemperatureMoyenne(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function deleteActivite(int $idActivite) { + $query = "DELETE FROM Activite WHERE idActivite = :idActivite"; + + $params = [ + ':idActivite' => $idActivite, + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } +} + +?> diff --git a/Sources/src/data/core/database/ActiviteMapper.php b/Sources/src/data/core/database/ActiviteMapper.php new file mode 100644 index 00000000..d2097e10 --- /dev/null +++ b/Sources/src/data/core/database/ActiviteMapper.php @@ -0,0 +1,51 @@ +setIdActivite($data['idActivite']); + $activite->setType($data['type']); + $activite->setDate($data['date']); + $activite->setHeureDebut($data['heureDebut']); + $activite->setHeureFin($data['heureFin']); + $activite->setEffortRessenti($data['effortRessenti']); + $activite->setVariabilite($data['variabilite']); + $activite->setVariance($data['variance']); + $activite->setEcartType($data['ecartType']); + $activite->setMoyenne($data['moyenne']); + $activite->setMaximum($data['maximum']); + $activite->setMinimum($data['minimum']); + $activite->setTemperatureMoyenne($data['temperatureMoyenne']); + + return $activite; + } + + //public function ActiviteEntityToModel(ActiviteEntity entity): Activite; + + public function ActiviteEntityToModel(ActiviteEntity $activiteEntity):Activite{ + + $act = new Activite( + $activiteEntity->getIdActivite(), + $activiteEntity->getType(), + $activiteEntity->getDate(), + $activiteEntity->getHeureDebut(), + $activiteEntity->getHeureFin(), + $activiteEntity->getEffortRessenti(), + $activiteEntity->getVariabilite(), + $activiteEntity->getVariance(), + $activiteEntity->getEcartType(), + $activiteEntity->getMoyenne(), + $activiteEntity->getMaximum(), + $activiteEntity->getMinimum(), + $activiteEntity->getTemperatureMoyenne() + ); + + return $act; + } + //public function ActiviteToEntity(Activite model): ActiviteEntity; +} + +?> diff --git a/Sources/src/data/core/database/AthleteEntity.php b/Sources/src/data/core/database/AthleteEntity.php new file mode 100644 index 00000000..812543c8 --- /dev/null +++ b/Sources/src/data/core/database/AthleteEntity.php @@ -0,0 +1,91 @@ +idAthlete; + } + + public function getNom() { + return $this->nom; + } + + public function getPrenom() { + return $this->prenom; + } + + public function getEmail() { + return $this->email; + } + + public function getSexe() { + return $this->sexe; + } + + public function getTaille() { + return $this->taille; + } + + public function getPoids() { + return $this->poids; + } + + public function getMotDePasse() { + return $this->motDePasse; + } + + public function getDateNaissance() { + return $this->dateNaissance; + } + + // Setters + public function setIdAthlete($idAthlete) { + $this->idAthlete = $idAthlete; + } + + public function setNom($nom) { + $this->nom = $nom; + } + + public function setPrenom($prenom) { + $this->prenom = $prenom; + } + + public function setEmail($email) { + $this->email = $email; + } + + public function setSexe($sexe) { + $this->sexe = $sexe; + } + + public function setTaille($taille) { + $this->taille = $taille; + } + + public function setPoids($poids) { + $this->poids = $poids; + } + + public function setMotDePasse($motDePasse) { + $this->motDePasse = $motDePasse; + } + + public function setDateNaissance($dateNaissance) { + $this->dateNaissance = $dateNaissance; + } +} + +?> diff --git a/Sources/src/data/core/database/AthleteGateway.php b/Sources/src/data/core/database/AthleteGateway.php new file mode 100644 index 00000000..7b2dc45e --- /dev/null +++ b/Sources/src/data/core/database/AthleteGateway.php @@ -0,0 +1,131 @@ +connection = $connection; + } + + public function getAthlete() { + $query = "SELECT * FROM Athlete"; + return $this->connection->executeWithErrorHandling($query); + } + + public function getAthleteById(int $userId) { + $query = "SELECT * FROM Athlete WHERE idAthlete = :id"; + $params = [':id' => [$userId, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByName(string $name) { + $query = "SELECT * FROM Athlete WHERE nom = :name"; + $params = [':name' => [$name, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByFirstName(string $firstName) { + $query = "SELECT * FROM Athlete WHERE prenom = :firstName"; + $params = [':firstName' => [$firstName, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByEmail(string $email) { + $query = "SELECT * FROM Athlete WHERE email = :email"; + $params = [':email' => [$email, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByGender(string $gender) { + $query = "SELECT * FROM Athlete WHERE sexe = :gender"; + $params = [':gender' => [$gender, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByHeight(int $height) { + $query = "SELECT * FROM Athlete WHERE taille = :height"; + $params = [':height' => [$height, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByWeight(int $weight) { + $query = "SELECT * FROM Athlete WHERE poids = :weight"; + $params = [':weight' => [$weight, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getAthleteByBirthDate(string $birthdate) { + $query = "SELECT * FROM Athlete WHERE dateNaissance = :birthdate"; + $params = [':birthdate' => [$birthdate, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function addAthlete(AthleteEntity $athlete) { + $query = "INSERT INTO Athlete (nom, prenom, email, sexe, taille, poids, motDePasse, dateNaissance) + VALUES (:nom, :prenom, :email, :sexe, :taille, :poids, :motDePasse, :dateNaissance)"; + + $params = [ + ':nom' => $athlete->getNom(), + ':prenom' => $athlete->getPrenom(), + ':email' => $athlete->getEmail(), + ':sexe' => $athlete->getSexe(), + ':taille' => $athlete->getTaille(), + ':poids' => $athlete->getPoids(), + ':motDePasse' => $athlete->getMotDePasse(), + ':dateNaissance' => $athlete->getDateNaissance(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function updateAthlete(AthleteEntity $oldAthlete, AthleteEntity $newAthlete) { + $query = "UPDATE Athlete + SET nom = :nom, prenom = :prenom, email = :email, sexe = :sexe, + taille = :taille, poids = :poids, motDePasse = :motDePasse, dateNaissance = :dateNaissance + WHERE idAthlete = :idAthlete"; + + $params = [ + ':idAthlete' => $oldAthlete->getIdAthlete(), + ':nom' => $newAthlete->getNom(), + ':prenom' => $newAthlete->getPrenom(), + ':email' => $newAthlete->getEmail(), + ':sexe' => $newAthlete->getSexe(), + ':taille' => $newAthlete->getTaille(), + ':poids' => $newAthlete->getPoids(), + ':motDePasse' => $newAthlete->getMotDePasse(), + ':dateNaissance' => $newAthlete->getDateNaissance(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function deleteAthlete(int $idAthlete) { + $query = "DELETE FROM Athlete WHERE idAthlete = :idAthlete"; + + $params = [ + ':idAthlete' => $idAthlete, + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + + +} + + +// Exemple d'utilisation +//$dsn = "pgsql:host=localhost;port=5432;dbname=mydatabase;user=myuser;password=mypassword"; +//$connection = new Connection($dsn); +//$gateway = new AthleteGateway($connection); + +//$allAth = $gateway->getAthlete(); +//print_r($allAth); + +//$singleAth = $gateway->getAthleteById(1); +//print_r($singleAth); + +?> diff --git a/Sources/src/data/core/database/AthleteMapper.php b/Sources/src/data/core/database/AthleteMapper.php new file mode 100644 index 00000000..16f5f0be --- /dev/null +++ b/Sources/src/data/core/database/AthleteMapper.php @@ -0,0 +1,99 @@ +setIdAthlete($athleteData['idAthlete']); + } + + if (isset($athleteData['nom'])) { + $athlete->setNom($athleteData['nom']); + } + + if (isset($athleteData['prenom'])) { + $athlete->setPrenom($athleteData['prenom']); + } + + if (isset($athleteData['email'])) { + $athlete->setEmail($athleteData['email']); + } + + if (isset($athleteData['sexe'])) { + $athlete->setSexe($athleteData['sexe']); + } + + if (isset($athleteData['taille'])) { + $athlete->setTaille($athleteData['taille']); + } + + if (isset($athleteData['poids'])) { + $athlete->setPoids($athleteData['poids']); + } + + if (isset($athleteData['motDePasse'])) { + $athlete->setMotDePasse($athleteData['motDePasse']); + } + + if (isset($athleteData['dateNaissance'])) { + $athlete->setDateNaissance($athleteData['dateNaissance']); + } + + $athleteEntities[] = $athlete; + } + + return $athleteEntities; + } + + public function athleteEntityToModel(AthleteEntity $athleteEntity): User { + $role = new Athlete(); // Utilisez la classe Athlete + + $dateSpecifique = $athleteEntity->getDateNaissance(); + $date = new DateTime($dateSpecifique); + + $user = new User( + $athleteEntity->getIdAthlete(), + $athleteEntity->getNom(), + $athleteEntity->getPrenom(), + $athleteEntity->getEmail(), + $athleteEntity->getMotDePasse(), + $athleteEntity->getSexe(), + $athleteEntity->getTaille(), + $athleteEntity->getPoids(), + $date, + $role + ); + + return $user; + } + + public function athleteToEntity(User $user):AthleteEntity{ + + $ath = new AthleteEntity(); + $ath->setIdAthlete($user->getId()); + $ath->setNom($user->getNom()); + $ath->setPrenom($user->getPrenom()); + $ath->setEmail($user->getEmail()); + $ath->setSexe($user->getSexe()); + $ath->setTaille($user->getTaille()); + $ath->setPoids($user->getPoids()); + $ath->setMotDePasse($user->getMotDePasse()); + $ath->setDateNaissance($user->getDateNaissance()); + + return $ath; + } + +} + +?> diff --git a/Sources/src/data/core/database/CoachEntity.php b/Sources/src/data/core/database/CoachEntity.php new file mode 100644 index 00000000..03af8b1c --- /dev/null +++ b/Sources/src/data/core/database/CoachEntity.php @@ -0,0 +1,91 @@ +idCoach; + } + + public function getNom() { + return $this->nom; + } + + public function getPrenom() { + return $this->prenom; + } + + public function getEmail() { + return $this->email; + } + + public function getSexe() { + return $this->sexe; + } + + public function getTaille() { + return $this->taille; + } + + public function getPoids() { + return $this->poids; + } + + public function getMotDePasse() { + return $this->motDePasse; + } + + public function getDateNaissance() { + return $this->dateNaissance; + } + + // Setters + public function setIdCoach($idCoach) { + $this->idCoach = $idCoach; + } + + public function setNom($nom) { + $this->nom = $nom; + } + + public function setPrenom($prenom) { + $this->prenom = $prenom; + } + + public function setEmail($email) { + $this->email = $email; + } + + public function setSexe($sexe) { + $this->sexe = $sexe; + } + + public function setTaille($taille) { + $this->taille = $taille; + } + + public function setPoids($poids) { + $this->poids = $poids; + } + + public function setMotDePasse($motDePasse) { + $this->motDePasse = $motDePasse; + } + + public function setDateNaissance($dateNaissance) { + $this->dateNaissance = $dateNaissance; + } +} + +?> diff --git a/Sources/src/data/core/database/CoachGateway.php b/Sources/src/data/core/database/CoachGateway.php new file mode 100644 index 00000000..5f795799 --- /dev/null +++ b/Sources/src/data/core/database/CoachGateway.php @@ -0,0 +1,109 @@ +connection = $connection; + } + + public function getCoach() { + $query = "SELECT * FROM Coach"; + return $this->connection->executeWithErrorHandling($query); + } + + public function getCoachById(int $userId) { + $query = "SELECT * FROM Coach WHERE idCoach = :id"; + $params = [':id' => [$userId, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByName(string $name) { + $query = "SELECT * FROM Coach WHERE nom = :name"; + $params = [':name' => [$name, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByFirstName(string $firstName) { + $query = "SELECT * FROM Coach WHERE prenom = :firstName"; + $params = [':firstName' => [$firstName, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByEmail(string $email) { + $query = "SELECT * FROM Coach WHERE email = :email"; + $params = [':email' => [$email, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByGender(string $gender) { + $query = "SELECT * FROM Coach WHERE sexe = :gender"; + $params = [':gender' => [$gender, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByHeight(int $height) { + $query = "SELECT * FROM Coach WHERE taille = :height"; + $params = [':height' => [$height, PDO::PARAM_INT]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function getCoachByBirthDate(string $birthdate) { + $query = "SELECT * FROM Coach WHERE dateNaissance = :birthdate"; + $params = [':birthdate' => [$birthdate, PDO::PARAM_STR]]; + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function addCoach(CoachEntity $coach) { + $query = "INSERT INTO Coach (nom, prenom, email, sexe, taille, poids, motDePasse, dateNaissance) + VALUES (:nom, :prenom, :email, :sexe, :taille, :poids, :motDePasse, :dateNaissance)"; + + $params = [ + ':nom' => $coach->getNom(), + ':prenom' => $coach->getPrenom(), + ':email' => $coach->getEmail(), + ':sexe' => $coach->getSexe(), + ':taille' => $coach->getTaille(), + ':poids' => $coach->getPoids(), + ':motDePasse' => $coach->getMotDePasse(), + ':dateNaissance' => $coach->getDateNaissance(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function updateCoach(CoachEntity $oldCoach, CoachEntity $newCoach) { + $query = "UPDATE Coach + SET nom = :nom, prenom = :prenom, email = :email, sexe = :sexe, + taille = :taille, poids = :poids, motDePasse = :motDePasse, dateNaissance = :dateNaissance + WHERE idCoach = :idCoach"; + + $params = [ + ':idCoach' => $oldCoach->getIdCoach(), + ':nom' => $newCoach->getNom(), + ':prenom' => $newCoach->getPrenom(), + ':email' => $newCoach->getEmail(), + ':sexe' => $newCoach->getSexe(), + ':taille' => $newCoach->getTaille(), + ':poids' => $newCoach->getPoids(), + ':motDePasse' => $newCoach->getMotDePasse(), + ':dateNaissance' => $newCoach->getDateNaissance(), + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + + public function deleteCoach(int $idCoach) { + $query = "DELETE FROM Coach WHERE idCoach = :idCoach"; + + $params = [ + ':idCoach' => $idCoach, + ]; + + return $this->connection->executeWithErrorHandling($query, $params); + } + +} \ No newline at end of file diff --git a/Sources/src/data/core/database/CoachMapper.php b/Sources/src/data/core/database/CoachMapper.php new file mode 100644 index 00000000..76284918 --- /dev/null +++ b/Sources/src/data/core/database/CoachMapper.php @@ -0,0 +1,62 @@ +setIdCoach($data['idCoach']); + $coach->setNom($data['nom']); + $coach->setPrenom($data['prenom']); + $coach->setEmail($data['email']); + $coach->setSexe($data['sexe']); + $coach->setTaille($data['taille']); + $coach->setPoids($data['poids']); + $coach->setMotDePasse($data['motDePasse']); + $coach->setDateNaissance($data['dateNaissance']); + + return $coach; + } + + public function CoachEntityToModel(CoachEntity $coachEntity):User{ + $role = "Coach"; + + $user = new User( + $coachEntity->getIdCoach(), + $coachEntity->getNom(), + $coachEntity->getPrenom(), + $coachEntity->getEmail(), + $coachEntity->getMotDePasse(), + $coachEntity->getSexe(), + $coachEntity->getTaille(), + $coachEntity->getPoids(), + $coachEntity->getDateNaissance(), + $role + ); + + return $user; + } + + public function CoachToEntity(User $user):CoachEntity{ + + $coach = new CoachEntity(); + $coach->setIdCoach($user->getId()); + $coach->setNom($user->getNom()); + $coach->setPrenom($user->getPrenom()); + $coach->setEmail($user->getEmail()); + $coach->setSexe($user->getSexe()); + $coach->setTaille($user->getTaille()); + $coach->setPoids($user->getPoids()); + $coach->setMotDePasse($user->getMotDePasse()); + $coach->setDateNaissance($user->getDateNaissance()); + + return $coach; + } +} + +?> diff --git a/Sources/src/data/core/database/Connexion.php b/Sources/src/data/core/database/Connexion.php new file mode 100644 index 00000000..9a03267b --- /dev/null +++ b/Sources/src/data/core/database/Connexion.php @@ -0,0 +1,49 @@ +setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); + } catch (\PDOException $e) { + // Log error or handle it as needed + throw new \PDOException("Error connecting to the database: " . $e->getMessage()); + } + } + + public function executeQuery(string $query, array $parameters = []): bool { + $this->stmt = $this->prepare($query); + //foreach ($parameters as $name => $value) { + // $this->stmt->bindValue($name, $value[0], $value[1]); + //} + foreach ($parameters as $name => $value) { + $bindValueResult = $this->stmt->bindValue($name, $value, \PDO::PARAM_STR); + if (!$bindValueResult) { + // Gérez l'erreur, par exemple, en lançant une exception. + throw new \PDOException('Failed to bind value for parameter ' . $name); + } + } + return $this->stmt->execute(); + } + + public function executeWithErrorHandling(string $query, array $params = []): array { + try { + $this->beginTransaction(); + $this->executeQuery($query, $params); + $this->commit(); + return $this->getResults(); + } catch (\PDOException $e) { + $this->rollBack(); + throw new \PDOException('Unexpected error on database client: ' . $e->getMessage()); + } + } + + public function getResults(): array { + return $this->stmt->fetchAll(\PDO::FETCH_ASSOC); + } +} +?> \ No newline at end of file diff --git a/Sources/src/data/core/network/IAuthService.php b/Sources/src/data/core/network/IAuthService.php index 5bfa3fed..abe4fd87 100644 --- a/Sources/src/data/core/network/IAuthService.php +++ b/Sources/src/data/core/network/IAuthService.php @@ -8,15 +8,27 @@ use Model\User; * It's recommended to keep this interface focused on authentication-related functionality. */ interface IAuthService { + + /** + * Get the currently authenticated user. + * + * This method returns an instance of the User model representing + * the currently authenticated user. If no user is authenticated, + * the behavior of this method is implementation-dependent: it could return null, + * throw an exception, etc. + * + * @return User|null The currently authenticated user, or null if no user is authenticated. + */ + public function getCurrentUser(): ?User; /** * Authenticate a user. * - * @param string $username The username of the user. + * @param string $emailUser The emailUser of the user. * @param string $password The password of the user. * * @return ?User True if authentication is successful, false otherwise. */ - public function login(string $username, string $password): bool; + public function login(string $emailUser, string $password): bool; /** * Register a new user. @@ -34,6 +46,6 @@ interface IAuthService { * * @return void */ - public function logoutUser(): void; + public function logoutUser(): bool; } \ No newline at end of file diff --git a/Sources/src/data/model/Athlete.php b/Sources/src/data/model/Athlete.php index 35168c5a..0a863d91 100644 --- a/Sources/src/data/model/Athlete.php +++ b/Sources/src/data/model/Athlete.php @@ -20,93 +20,11 @@ use Stub\TrainingRepository; */ class Athlete extends Role { // Attributs spécifiques à l'athlète si nécessaire - private array $statsList = []; +// private array $statsList = []; private array $activityList = []; - private array $dataSourcesList = []; +// private array $dataSourcesList = []; - /** - * Constructeur de la classe Athlete. - * - * @param TrainingRepository|null $trainingRepository Le repository des entraînements (optionnel). - */ - public function __construct(?TrainingRepository $trainingRepository) { - $this->trainingRepository = $trainingRepository; - } - - /** - * Obtient l'instance d'athlète. - * - * @return Athlete L'instance d'athlète. - */ - public function getAthlete(): Athlete { - return $this; - } - - /** - * Obtient la liste des statistiques de l'athlète. - * - * @return array|null La liste des statistiques de l'athlète, ou null si aucune. - */ - public function getStatistic(): ?array { - return $this->statsList; - } - - /** - * Obtient la liste des sources de données de l'athlète. - * - * @return array|null La liste des sources de données de l'athlète, ou null si aucune. - */ - public function getDataSource(): ?array { - return $this->dataSourcesList; - } - - /** - * Obtient la liste des utilisateurs associés à l'athlète. - * - * @return array La liste des utilisateurs associés à l'athlète. - */ - public function getUsersList(): array { - return $this->usersList; - } - - /** - * Obtient un utilisateur spécifique associé à l'athlète. - * - * @param User $user L'utilisateur recherché. - * @return User L'utilisateur recherché. - */ - public function getUserList(User $user): User { - return $user; - } - /** - * Obtient le repository des entraînements de l'athlète. - * - * @return TrainingRepository|null Le repository des entraînements de l'athlète, ou null. - * @throws NotImplementedException Si la méthode n'est pas implémentée. - */ - public function getTraining(): ?TrainingRepository { - throw new NotImplementedException("Pas de get Training"); - } - - /** - * Obtient la liste des entraînements de l'athlète. - * - * @param Training $training L'entraînement recherché. - * @return Training|null L'entraînement recherché, ou null si non trouvé. - */ - public function getTrainingList(Training $training): ?Training { - return $training; - } - - /** - * Modifie la liste des entraînements de l'athlète. - * - * @param array $newTrainingsList La nouvelle liste des entraînements. - */ - public function setTrainingsList(array $newTrainingsList): void { - $this->trainingRepository->setTrainingsList($newTrainingsList); - } /** * Obtient la liste des activités de l'athlète. @@ -117,72 +35,6 @@ class Athlete extends Role { return $this->activityList; } - /** - * Vérifie si un utilisateur peut être ajouté en tant qu'athlète. - * - * @param User $user L'utilisateur à vérifier. - * @return bool True si l'utilisateur peut être ajouté, sinon false. - */ - public function CheckAdd(User $user): bool { - if ($user instanceof Athlete) { - return true; - } else { - return false; - } - } - - /** - * Vérifie si un entraînement peut être ajouté à l'athlète. - * - * @param Training $training L'entraînement à vérifier. - * @return bool False (toujours, car l'athlète ne peut pas avoir d'entraînement). - */ - public function CheckAddTraining(Training $training): bool { - return false; - } - - /** - * Ajoute un utilisateur à la liste des utilisateurs associés à l'athlète. - * - * @param User $user L'utilisateur à ajouter. - * @return bool True si l'ajout est réussi, sinon false. - */ - public function addUser(User $user): bool { - if ($this->CheckAdd($user)) { - $this->usersList[] = $user; - return true; - } - return false; - } - - /** - * Supprime un utilisateur de la liste des utilisateurs associés à l'athlète. - * - * @param User $user L'utilisateur à supprimer. - * @return bool True si la suppression est réussie, sinon false. - */ - public function removeUser(User $user): bool { - if ($this->CheckAdd($user)) { - $this->usersList[] = $user; - return true; - } - return false; - } - - /** - * Supprime un utilisateur de la liste des utilisateurs associés à l'athlète (méthode fictive). - * - * @param User $user L'utilisateur à supprimer. - * @return bool True si la suppression est réussie, sinon false. - */ - public function delUser(User $user): bool { - if ($this->CheckAdd($user)) { - $this->usersList[] = null; - return true; - } - return false; - } - /** * Ajoute une activité à la liste des activités de l'athlète. * @@ -197,19 +49,16 @@ class Athlete extends Role { return false; } - public function getTrainingsList(): ?array - { - // TODO: Implement getTrainingsList() method. - } - public function addTraining(Training $training): bool + public function CheckAdd(User $user): bool { - // TODO: Implement addTraining() method. + if($user->getRole() instanceof Athlete){ + return true; + } else { + return false; + } } - public function removeTraining(Training $training): bool - { - // TODO: Implement removeTraining() method. - } + } ?> \ No newline at end of file diff --git a/Sources/src/data/model/Role.php b/Sources/src/data/model/Role.php index 1e7d0645..4f0e0688 100644 --- a/Sources/src/data/model/Role.php +++ b/Sources/src/data/model/Role.php @@ -20,98 +20,90 @@ use Stub\TrainingRepository; abstract class Role { protected int $id; protected array $usersList = []; - protected ?TrainingRepository $trainingRepository; - - /** - * Constructeur abstrait de la classe Role. - * - * @param TrainingRepository|null $trainingRepository Le repository des entraînements (optionnel). - */ - public abstract function __construct(?TrainingRepository $trainingRepository); + protected array $usersRequests = []; + protected array $trainingList = []; + // Attributs spécifiques au Coach si nécessaire /** * Obtient la liste des utilisateurs associés au rôle. * * @return array|null La liste des utilisateurs associés au rôle, ou null si aucune. */ - public abstract function getUsersList(): ?array; - - /** - * Obtient un utilisateur spécifique associé au rôle. - * - * @param User $user L'utilisateur recherché. - * @return User L'utilisateur recherché. - */ - public abstract function getUserList(User $user): User; + public function getUsersList(): ?array + { + return $this->usersList; + } + public function getUsersRequests(): ?array + { + return $this->usersRequests; + } + public function addUsersRequests(RelationshipRequest $request): void + { + $this->usersRequests [] = $request; + } + public function removeRequest(RelationshipRequest $req): bool + { - /** - * Obtient le repository des entraînements associé au rôle. - * - * @return TrainingRepository|null Le repository des entraînements associé au rôle, ou null. - */ - public abstract function getTraining(): ?TrainingRepository; - - /** - * Obtient la liste des entraînements associés au rôle. - * - * @return array|null La liste des entraînements associés au rôle, ou null si aucune. - */ - public abstract function getTrainingsList(): ?array; - - /** - * Obtient un entraînement spécifique associé au rôle. - * - * @param Training $training L'entraînement recherché. - * @return Training|null L'entraînement recherché, ou null si non trouvé. - */ - public abstract function getTrainingList(Training $training): ?Training; + $key = array_search($req, $this->usersRequests); + if ($key !== false) { + array_splice($this->usersRequests, $key, 1); + return true; + } + return false; + } /** * Vérifie si un utilisateur peut être ajouté au rôle. * * @param User $user L'utilisateur à vérifier. * @return bool True si l'utilisateur peut être ajouté, sinon false. */ - public abstract function CheckAdd(User $user): bool; - - /** - * Vérifie si un entraînement peut être ajouté au rôle. - * - * @param Training $training L'entraînement à vérifier. - * @return bool True si l'entraînement peut être ajouté, sinon false. - */ - public abstract function CheckAddTraining(Training $training): bool; - + public abstract function CheckAdd(User $user) : bool; /** * Ajoute un utilisateur à la liste des utilisateurs associés au rôle. * * @param User $user L'utilisateur à ajouter. * @return bool True si l'ajout est réussi, sinon false. */ - public abstract function addUser(User $user): bool; - + public function addUser(User $user): bool + { + if($this->CheckAdd($user)){ + array_push($this->usersList, $user); + return true; + } + return false; + } /** * Supprime un utilisateur de la liste des utilisateurs associés au rôle. * * @param User $user L'utilisateur à supprimer. * @return bool True si la suppression est réussie, sinon false. */ - public abstract function removeUser(User $user): bool; - + public function removeUser(User $user): bool + { + if($this->CheckAdd($user)){ + $key = array_search($user, $this->usersList); + if ($key !== false) { + array_splice($this->usersList, $key, 1); + return true; + } + } + return false; + } /** * Ajoute un entraînement à la liste des entraînements associés au rôle. * * @param Training $training L'entraînement à ajouter. * @return bool True si l'ajout est réussi, sinon false. */ - public abstract function addTraining(Training $training): bool; - - /** - * Supprime un entraînement de la liste des entraînements associés au rôle. - * - * @param Training $training L'entraînement à supprimer. - * @return bool True si la suppression est réussie, sinon false. - */ - public abstract function removeTraining(Training $training): bool; + public function addTraining(Training $training) + { + $this->trainingList [] = $training; + return true; + } + public function getTrainingsList(): array + { + return $this->trainingList; + } } ?> \ No newline at end of file diff --git a/Sources/src/data/model/User.php b/Sources/src/data/model/User.php index 5b619047..ac96da73 100644 --- a/Sources/src/data/model/User.php +++ b/Sources/src/data/model/User.php @@ -27,39 +27,35 @@ class User { private float $poids; private \DateTime $dateNaissance; private Role $role; + protected array $notifications = []; /** - * Constructeur de la classe User. - * - * @param int $id L'identifiant de l'utilisateur. - * @param string $username Le nom d'utilisateur de l'utilisateur. - * @param string $nom Le nom de l'utilisateur. - * @param string $prenom Le prénom de l'utilisateur. - * @param string $email L'adresse e-mail de l'utilisateur. - * @param string $motDePasse Le mot de passe haché de l'utilisateur. - * @param string $sexe Le sexe de l'utilisateur. - * @param float $taille La taille de l'utilisateur. - * @param float $poids Le poids de l'utilisateur. - * @param \DateTime $dateNaissance La date de naissance de l'utilisateur. - * @param Role $role Le rôle de l'utilisateur. + * @return array + */ + public function getNotifications(): array + { + return $this->notifications; + } + + /** + * @param int $id + * @param string $nom + * @param string $prenom + * @param string $username + * @param string $email + * @param string $motDePasse + * @param string $sexe + * @param float $taille + * @param float $poids + * @param \DateTime $dateNaissance + * @param \Model\Role $role */ - public function __construct( - int $id, - String $username, - string $nom, - string $prenom, - string $email, - string $motDePasse, - string $sexe, - float $taille, - float $poids, - \DateTime $dateNaissance, - Role $role - ) { + public function __construct(int $id, string $nom, string $prenom, string $username, string $email, string $motDePasse, string $sexe, float $taille, float $poids, \DateTime $dateNaissance, Role $role) + { $this->id = $id; - $this->username = $username; $this->nom = $nom; $this->prenom = $prenom; + $this->username = $username; $this->email = $email; $this->motDePasse = $motDePasse; $this->sexe = $sexe; @@ -69,6 +65,16 @@ class User { $this->role = $role; } + public function addNotification($notification): void { + $this->notifications[] = $notification; + } + + // Method to delete a notification by its index + public function deleteNotification($index): void { + if (array_key_exists($index, $this->notifications)) { + unset($this->notifications[$index]); + } + } /** * Obtient l'identifiant de l'utilisateur. * @@ -77,38 +83,35 @@ class User { public function getId(): int { return $this->id; } - /** - * Définit l'identifiant de l'utilisateur. - * - * @param int $id Le nouvel identifiant de l'utilisateur. + * @return string */ - public function setId(int $id): void { - $this->id = $id; + public function getUsername(): string + { + return $this->username; } /** - * Obtient le nom d'utilisateur de l'utilisateur. - * - * @return string Le nom d'utilisateur de l'utilisateur. + * @param string $username */ - public function getUsername(): string { - return $this->username; + public function setUsername(string $username): void + { + $this->username = $username; } /** - * Définit le nom d'utilisateur de l'utilisateur. + * Définit l'identifiant de l'utilisateur. * - * @param string $username Le nouveau nom d'utilisateur de l'utilisateur. + * @param int $id Le nouvel identifiant de l'utilisateur. */ - public function setUsername(string $username): void { - $this->username = $username; + public function setId(int $id): void { + $this->id = $id; } /** - * Obtient le nom de l'utilisateur. + * Obtient le nom d'utilisateur de l'utilisateur. * - * @return string Le nom de l'utilisateur. + * @return string Le nom d'utilisateur de l'utilisateur. */ public function getNom(): string { return $this->nom; @@ -283,8 +286,8 @@ class User { * * @return string La représentation textuelle de l'utilisateur. */ - public function __toString(): string { - return "Utilisateur [ID: {$this->id}, Nom: {$this->nom}, Prénom: {$this->prenom}, Email: {$this->email}]"; + public function __toString() { + return "Athlete [ID: {$this->id}, Username : $this->username, Nom: {$this->nom}, Prénom: {$this->prenom}, Email: {$this->email}]"; } } ?> \ No newline at end of file diff --git a/Sources/src/data/model/manager/ActivityManager.php b/Sources/src/data/model/manager/ActivityManager.php index 5ff1cbc1..ef8b6df3 100644 --- a/Sources/src/data/model/manager/ActivityManager.php +++ b/Sources/src/data/model/manager/ActivityManager.php @@ -13,6 +13,7 @@ namespace Manager; use adriangibbons\phpFITFileAnalysis; use Exception; use Model\Activity; +use Network\IAuthService; use Stub\AuthService; /** @@ -21,14 +22,17 @@ use Stub\AuthService; */ class ActivityManager { - private AuthService $authService; + /** + * @var AuthService|IAuthService + */ + private IAuthService $authService; /** * Constructeur de la classe ActivityManager. * - * @param AuthService $authService Le service d'authentification utilisé pour vérifier l'utilisateur actuel. + * @param IAuthService $authService Le service d'authentification utilisé pour vérifier l'utilisateur actuel. */ - public function __construct(AuthService $authService) + public function __construct(DataManager $dataManager,IAuthService $authService) { $this->authService = $authService; } @@ -148,7 +152,7 @@ class ActivityManager ); // Ajout de l'activité et enregistrement du fichier FIT en JSON - if ($this->authService->currentUser->getRole()->addActivity($newActivity) && $this->saveFitFileToJSON($monFichierFit)) { + if ($this->authService->getCurrentUser()->getRole()->addActivity($newActivity) && $this->saveFitFileToJSON($monFichierFit)) { return true; } } catch (\Exception $e) { diff --git a/Sources/src/data/model/manager/AthleteManager.php b/Sources/src/data/model/manager/AthleteManager.php index 69487c78..29ddea9d 100644 --- a/Sources/src/data/model/manager/AthleteManager.php +++ b/Sources/src/data/model/manager/AthleteManager.php @@ -10,6 +10,7 @@ */ namespace Manager; +use Network\IAuthService; use Stub\AuthService; /** @@ -17,16 +18,18 @@ use Stub\AuthService; * @brief Classe pour gérer les opérations liées aux athlètes. */ class AthleteManager { - private AuthService $authService; + private IAuthService $authService; + private DataManager $dataManager; /** * Constructeur de la classe AthleteManager. * * @param AuthService $authService Le service d'authentification utilisé pour vérifier l'utilisateur actuel. */ - function __construct(AuthService $authService) + public function __construct(DataManager $dataManager,IAuthService $authService) { $this->authService = $authService; + $this->dataManager = $dataManager; } /** @@ -35,8 +38,8 @@ class AthleteManager { * @return array|null Retourne un tableau d'objets Activity en cas de succès, sinon null. */ public function getActivities(): ?array { - if ($this->authService->currentUser && $this->authService->currentUser->getRole()->getActivities()) { - return $this->authService->currentUser->getRole()->getActivities(); + if ($this->authService->getCurrentUser() && $this->authService->getCurrentUser()->getRole()->getActivities()) { + return $this->authService->getCurrentUser()->getRole()->getActivities(); } return null; } diff --git a/Sources/src/data/model/manager/DataManager.php b/Sources/src/data/model/manager/DataManager.php index 67184960..fd10d427 100644 --- a/Sources/src/data/model/manager/DataManager.php +++ b/Sources/src/data/model/manager/DataManager.php @@ -1,11 +1,16 @@ \ No newline at end of file diff --git a/Sources/src/data/model/manager/UserManager.php b/Sources/src/data/model/manager/UserManager.php index 51fe5b36..12c19b58 100644 --- a/Sources/src/data/model/manager/UserManager.php +++ b/Sources/src/data/model/manager/UserManager.php @@ -11,27 +11,37 @@ namespace Manager; +use Model\Athlete; +use Model\Coach; +use Model\RelationshipRequest; use Model\User; +use Network\IAuthService; +use Network\IFriendRequestService; use Shared\Validation; -use Stub\AuthService; +use Stub\UserRepository; -/** - * @class UserManager - * @brief Classe pour gérer les opérations liées aux utilisateurs. - */ class UserManager { - private AuthService $authService; - public User $currentUser; + private IAuthService $authService; - /** - * Constructeur de la classe UserManager. - * - * @param AuthService $authService Le service d'authentification utilisé pour gérer les utilisateurs. - */ - public function __construct(AuthService $authService) + private ?User $currentUser; + + private DataManager $dataManager; + + private IFriendRequestService $relationshipService; + + + + public function __construct(DataManager $dataManager, IAuthService $authService, IFriendRequestService $relationshipService) { $this->authService = $authService; + $this->dataManager = $dataManager; + $this->relationshipService = $relationshipService; + + } + public function getCurrentUser(): ?User + { + return $this->currentUser; } /** @@ -42,18 +52,117 @@ class UserManager * @return bool Retourne true en cas de connexion réussie, sinon false. * @throws \Exception En cas d'erreur dans les informations d'identification. */ - public function login($loginUser, $passwordUser): bool + public function login($emailUser, $passwordUser): bool + { + // Validate data format + if (!Validation::val_email($emailUser)) { + // The email is not valid + return false; + } + + if (!Validation::val_password($passwordUser)) { + // The email is not valid + return false; + } + + + if ($this->authService->login($emailUser, $passwordUser)) { + $this->currentUser = $this->authService->getCurrentUser(); + // Check if the current user is correctly set + if ($this->currentUser === null) { + return false; + } + return true; + } else { + // Handle unsuccessful login (e.g., log error, throw exception, etc.) + return false; + } + + + } + + public function addFriend(string $newFriend): bool { - if (!Validation::val_string($passwordUser) || !Validation::val_string($loginUser)) - throw new \Exception("Erreur dans les informations d'identification."); + $newFriend = $this->dataManager->userRepository->getItemByName($newFriend, 0, 1); + if ($newFriend === null) { + throw new \Exception("User not found."); + } - if ($this->authService->login($loginUser, $passwordUser)) { - $this->currentUser = $this->authService->currentUser; + if (in_array($newFriend, $this->currentUser->getRole()->getUsersList())) { + throw new \Exception("Already friend"); + } + var_dump("====================1========================="); + if($this->relationshipService->sendRequest($this->currentUser, $newFriend)){ return true; + }; + return false; + } + + public function respondToFriendRequest(int $requestId, bool $choice): bool + { + + foreach ($this->currentUser->getRole()->getUsersRequests() as $key => $friendRequest) { + /** @var RelationshipRequest $friendRequest */ + if ($friendRequest->getId() === $requestId) { + /** @var User $userToAdd */ + $userToAdd = $this->dataManager->userRepository->getItemById($friendRequest->getToUser()); + if ($userToAdd === null) { + throw new \Exception("User not found with ID: " . $friendRequest->getFromUser()); + } + if ($choice) { + try { + if($this->currentUser->getRole()->addUser($userToAdd)){ + $this->dataManager->userRepository->addFriend($this->currentUser->getId(),$userToAdd->getId()); + $this->relationshipService->acceptRequest($friendRequest); + $this->currentUser->getRole()->removeRequest($friendRequest); + }; + }catch (\Exception $e){ + $this->currentUser->getRole()->removeUser($userToAdd); + throw new \Exception("Failed to add friend" . $userToAdd->getUsername() ); + } + } else { + $this->relationshipService->declineRequest($friendRequest); + } + return true; + } } return false; } + public function searchUsersByName(string $name): array + { + return $this->dataManager->userRepository->getItemsByName($name, 0, 10); + } + + public function getFriends(): array{ + return $this->currentUser->getRole()->getUsersList(); + } + + // NEED TO PERSIST + public function deleteFriend(int $id): bool + { + /** @var User $userToRemove */ + $userToRemove = $this->dataManager->userRepository->getItemById($id); + + if ($userToRemove === null) { + throw new \Exception("User not found with ID: " . $id); + } + + if (!$this->currentUser->getRole()->removeUser($userToRemove)) { + throw new \Exception("User with ID: " . $id . " is not in the current user's friends list."); + } + + try { + $this->dataManager->userRepository->deleteFriend($this->currentUser->getId(),$userToRemove->getId() ); + }catch (\Exception $e){ + throw new \Exception("Failed to delete friend" . $userToRemove->getUsername() ); + } + + return true; + + } + + // NEED TO PERSIST /** * Enregistre un nouvel utilisateur avec les informations fournies. * @@ -65,33 +174,24 @@ class UserManager */ public function register($loginUser, $passwordUser, $data): bool { - // Validation des champs - $fieldsToValidate = [ - 'nom' => 'Nom non valide', - 'prenom' => 'Prénom non valide', - 'taille' => 'Taille non valide', - 'poids' => 'Poids non valide', - ]; - - foreach ($fieldsToValidate as $fieldName => $errorMessage) { - if (!Validation::val_string($data[$fieldName])) { - throw new \Exception($errorMessage); - } - } + // foreach ($data as $entry) { + // $isValid = Validation::val_string($entry); + // if (!$isValid) { + // throw new \Exception( "Entry '$entry' is not a valid string."); + // } + // } - // Validation du rôle $roleName = $data['roleName']; if ($roleName !== "Athlete" && $roleName !== "Coach") { throw new \Exception("Rôle non valide"); } - // Validation du sexe if ($data['sexe'] !== "M" && $data['sexe'] !== "H") { throw new \Exception("Sexe non valide"); } - // Enregistrement de l'utilisateur if ($this->authService->register($loginUser, $passwordUser, $data)) { + $this->currentUser = $this->authService->getCurrentUser(); return true; } return false; @@ -109,5 +209,6 @@ class UserManager } return false; } + } ?> diff --git a/Sources/src/data/model/repository/IGenericRepository.php b/Sources/src/data/model/repository/IGenericRepository.php index 2031ad02..ab7268ef 100644 --- a/Sources/src/data/model/repository/IGenericRepository.php +++ b/Sources/src/data/model/repository/IGenericRepository.php @@ -6,7 +6,7 @@ interface IGenericRepository public function getItemById(int $id); public function getNbItems(): int; public function getItems(int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): array; - public function getItemsByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): ?array; + public function getItemsByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): array; public function getItemByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false); public function updateItem($oldItem, $newItem) : void; public function addItem($item) : void; diff --git a/Sources/src/data/model/repository/ITrainingRepository.php b/Sources/src/data/model/repository/ITrainingRepository.php index ef489fe4..3cc1a4da 100644 --- a/Sources/src/data/model/repository/ITrainingRepository.php +++ b/Sources/src/data/model/repository/ITrainingRepository.php @@ -2,7 +2,7 @@ namespace Repository; -interface ITrainingRepository extends IGenericRepository { -} +interface ITrainingRepository extends IGenericRepository +{ -?> \ No newline at end of file +} diff --git a/Sources/src/data/model/repository/IUserRepository.php b/Sources/src/data/model/repository/IUserRepository.php index c3983e6e..1fc2f35f 100644 --- a/Sources/src/data/model/repository/IUserRepository.php +++ b/Sources/src/data/model/repository/IUserRepository.php @@ -2,6 +2,9 @@ namespace Repository; interface IUserRepository extends IGenericRepository { - } + public function addFriend(int $user1,int $user2); + public function deleteFriend(int $user1,int $user2); + +} ?> \ No newline at end of file diff --git a/Sources/src/data/stub/StubData.php b/Sources/src/data/stub/StubData.php index fff95900..b9559af8 100644 --- a/Sources/src/data/stub/StubData.php +++ b/Sources/src/data/stub/StubData.php @@ -28,7 +28,7 @@ use Stub\UserRepository; * @date YYYY-MM-DD * @author OpenAI */ -class StubData extends DataManager { +class StubData extends DataManager{ /** * @brief Constructeur de la classe StubData. * @details Initialise les dépôts, les services d'authentification et les gestionnaires nécessaires. @@ -37,21 +37,11 @@ class StubData extends DataManager { * @date YYYY-MM-DD * @author OpenAI */ - public function __construct() - { - // Initialisation du dépôt d'utilisateurs - $userRepository = new UserRepository(); - // Initialisation du service d'authentification - $authService = new AuthService($userRepository, new HashPassword()); - - // Initialisation du gestionnaire d'utilisateurs - $this->userMgr = new UserManager($authService); - - // Initialisation du gestionnaire d'athlètes - $this->athleteMgr = new AthleteManager($authService); - - // Initialisation du gestionnaire d'activités - $this->activityMgr = new ActivityManager($authService); + public function __construct(){ + $this->userRepository = new UserRepository(); + $this->relationshipRequestRepository = new RelationshipRequestRepository(); + $this->trainingRepository = new TrainingRepository(); + $this->notificationRepository = new NotificationRepository(); } } diff --git a/Sources/src/data/stub/repository/UserRepository.php b/Sources/src/data/stub/repository/UserRepository.php index f480c1dd..73344b65 100644 --- a/Sources/src/data/stub/repository/UserRepository.php +++ b/Sources/src/data/stub/repository/UserRepository.php @@ -12,6 +12,7 @@ namespace Stub; use Model\Athlete; +use Model\CoachAthlete; use Model\User; use Repository\IUserRepository; @@ -26,14 +27,11 @@ class UserRepository implements IUserRepository { * Constructeur de la classe UserRepository. */ public function __construct() { - // Initialisation de quelques utilisateurs pour des besoins de démonstration. -// $this->users[] = new User(1, "Doe", "Doe", "John", "john.doe@example.com", "password123", 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete($training)); - $this->users[] = new User(2, "Smith", "Smith", "Jane", "jane.smith@example.com", "secure456", 'F', 1.65, 60, new \DateTime("1990-03-10"), new Athlete(null)); -// $this->users[] = new User(3, "Martin", "Martin", "Paul", "paul.martin@example.com", "super789", 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete($training)); - $this->users[] = new User(4, "Brown", "Brown", "Anna", "anna.brown@example.com", "test000", 'F', 1.70, 58, new \DateTime("1992-11-25"), new Athlete(null)); - $this->users[] = new User(5, "Lee", "Lee", "Bruce", "bruce.lee@example.com", "hello321", 'M', 1.72, 70, new \DateTime("1970-02-05"), new Athlete(null)); -// $this->users[] = new User(6, "c", "c", "c", "coach@example.com", "c1", 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete($training)); - $this->users[] = new User(7, "athlete", "athlete", "a", "athlete@example.com", "hello321", 'F', 1.55, 67, new \DateTime("1999-09-30"), new Athlete(null)); + $this->users[] = new User(1, "Doe", "John", "Doe","john.doe@example.com", "password123", 'M', 1.80, 75, new \DateTime("1985-05-15"), new CoachAthlete()); + $this->users[] = new User(2, "Smith", "Jane","Smith", "jane.smith@example.com", "secure456", 'F', 1.65, 60, new \DateTime("1990-03-10"), new Athlete()); + $this->users[] = new User(3, "Martin", "Paul","Martin", "paul.martin@example.com", "super789", 'M', 1.75, 68, new \DateTime("1988-08-20"), new CoachAthlete()); + $this->users[] = new User(4, "Brown", "Anna","Brown", "anna.brown@example.com", "test000", 'F', 1.70, 58, new \DateTime("1992-11-25"), new Athlete()); + $this->users[] = new User(5, "Lee", "Bruce","Lee", "bruce.lee@example.com", "hello321", 'M', 1.72, 70, new \DateTime("1970-02-05"), new Athlete()); } /** @@ -80,27 +78,17 @@ class UserRepository implements IUserRepository { return null; } - // ... (Les autres méthodes) /** * Obtient le nombre total d'utilisateurs dans le dépôt. * * @return int Le nombre total d'utilisateurs. */ - public function GetNbItems(): int { + public function getNbItems(): int { return count($this->users); } - /** - * Obtient un tableau d'utilisateurs en fonction des paramètres spécifiés. - * - * @param int $index L'indice de départ dans le tableau. - * @param int $count Le nombre d'utilisateurs à récupérer. - * @param string|null $orderingPropertyName Le nom de la propriété pour l'ordonnancement (facultatif). - * @param bool $descending Indique si l'ordonnancement doit être effectué en ordre descendant (facultatif, par défaut false). - * @return array Le tableau d'utilisateurs. - */ - public function GetItems(int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): array { + public function getItems(int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): array { // Cette méthode est un exemple simple, on ne gère pas l'ordonnancement ici return array_slice($this->users, $index, $count); } @@ -115,9 +103,9 @@ class UserRepository implements IUserRepository { * @param bool $descending Indique si l'ordonnancement doit être effectué en ordre descendant (facultatif, par défaut false). * @return array|null Le tableau d'utilisateurs filtré, ou null s'il n'y a aucun utilisateur correspondant. */ - public function GetItemsByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): ?array { + public function getItemsByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): array { $filteredUsers = array_filter($this->users, function ($user) use ($substring) { - return strpos(strtolower($user->getNom()), strtolower($substring)) !== false || strpos(strtolower($user->getPrenom()), strtolower($substring)) !== false; + return str_contains(strtolower($user->getNom()), strtolower($substring)) || str_contains(strtolower($user->getPrenom()), strtolower($substring)); }); return array_slice($filteredUsers, $index, $count); } @@ -132,9 +120,9 @@ class UserRepository implements IUserRepository { * @param bool $descending Indique si l'ordonnancement doit être effectué en ordre descendant (facultatif, par défaut false). * @return User|null L'utilisateur filtré, ou null s'il n'y a aucun utilisateur correspondant. */ - public function GetItemByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): ?User { + public function getItemByName(string $substring, int $index, int $count, ?string $orderingPropertyName = null, bool $descending = false): ?User { $filteredUsers = $this->GetItemsByName($substring, $index, $count, $orderingPropertyName, $descending); - return isset($filteredUsers[0]) ? $filteredUsers[0] : null; + return $filteredUsers[0] ?? null; } /** * Met à jour un utilisateur existant dans le dépôt. @@ -143,8 +131,8 @@ class UserRepository implements IUserRepository { * @param User $newItem La nouvelle instance de l'utilisateur. * @return void */ - public function UpdateItem($oldItem, $newItem): void { - $index = array_search($oldItem, $this->users); + public function updateItem($oldUser, $newUser): void { + $index = array_search($oldUser, $this->users); if ($index !== false) { $this->users[$index] = $newItem; } @@ -156,8 +144,8 @@ class UserRepository implements IUserRepository { * @param User $user L'instance de l'utilisateur à ajouter. * @return void */ - public function AddItem($item): void { - $this->users[] = $item; + public function addItem( $user): void { + $this->users[] = $user; } /** @@ -166,13 +154,24 @@ class UserRepository implements IUserRepository { * @param User $user L'instance de l'utilisateur à supprimer. * @return bool Retourne true si la suppression a réussi, sinon false. */ - public function DeleteItem($item): bool { - $index = array_search($item, $this->users); + public function deleteItem( $user): bool { + $index = array_search($user, $this->users); if ($index !== false) { unset($this->users[$index]); return true; } return false; } + + public function addFriend(int $user1, int $user2) + { + return true; + } + + + public function deleteFriend(int $user1, int $user2) + { + return true; + } } ?> diff --git a/Sources/src/data/stub/service/AuthService.php b/Sources/src/data/stub/service/AuthService.php index 54b8f72f..eb43a533 100644 --- a/Sources/src/data/stub/service/AuthService.php +++ b/Sources/src/data/stub/service/AuthService.php @@ -1,32 +1,27 @@ userRepository = $userRepository; - $this->passwordHasher = $passwordHasher; + $this->passwordHacher = $passwordHacher; } - public function getUserRepository():UserRepository { - return $this->userRepository; - } - - public function login(string $username,string $password): bool { - $user = $this->userRepository->GetItemByName($username,0,1); - - if ($user == null || !$user instanceof User) { + public function login(string $emailUser,string $password): bool { + $user = $this->userRepository->getItemByEmail($emailUser); + if (!$user instanceof User) { throw new \Exception('Unable to find user with that name'); } if ($user->isValidPassword($password)) { @@ -35,19 +30,19 @@ class AuthService implements IAuthService { } return false; } - public function register(string $loginUser, string $password, $data): bool + public function register(string $username, string $password, $data): bool { - - $hashedPassword = $this->passwordHasher->hashPassword($password); - - $existingUser = $this->userRepository->getItemByEmail($loginUser); - + + $hashedPassword = $this->passwordHacher->hashPassword($password); + + $existingUser = $this->userRepository->getItemByEmail($username); if ($existingUser != null || $existingUser instanceof User ) { throw new \Exception('User already exists'); } $username = $data['username']; $prenom = $data['prenom']; + $username = $data['username']; $nom = $data['nom']; $email = $data['email']; $sexe = $data['sexe']; @@ -64,9 +59,9 @@ class AuthService implements IAuthService { } $user = new User( random_int(0, 100), - $username, $nom, $prenom, + $username, $email, $hashedPassword, $sexe, @@ -76,16 +71,21 @@ class AuthService implements IAuthService { //should use reflexion $role ); - $this->userRepository->addItem($user); $this->currentUser = $user; return true; } - public function logoutUser(): void + public function logoutUser(): bool + { + $this->currentUser = null; + return true; + + } + + public function getCurrentUser(): ?User { - print("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! logout method not implemented !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); - return; + return $this->currentUser; } } \ No newline at end of file diff --git a/Sources/src/shared/Validation.php b/Sources/src/shared/Validation.php index a435366d..fc316ba4 100644 --- a/Sources/src/shared/Validation.php +++ b/Sources/src/shared/Validation.php @@ -56,7 +56,7 @@ final class Validation { * @throws Exception Si le mot de passe n'est pas valide. */ public static function val_password(string $password) : bool { - if ($password === null) { + if (!isset($password)) { throw new Exception("Le mot de passe ne peut être vide."); } else { if (!preg_match('/^.{6,}$/', $password)) { @@ -65,6 +65,24 @@ final class Validation { return Validation::val_string($password); } } + /** + * Valide un mail. + * + * @param string $email Le mail à valider. + * @return bool True si le mail est valide, sinon false. + * @throws Exception Si le mail n'est pas valide. + */ + public static function val_email(string $email) : bool { + if (!isset($email)) { + throw new Exception("L'adresse e-mail ne peut être vide."); + } else { + if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + throw new Exception("L'adresse e-mail n'est pas valide."); + } + return true; + } + } + /** * Valide un booléen. diff --git a/Sources/vendor/autoload.php b/Sources/vendor/autoload.php old mode 100755 new mode 100644 index 12f109d2..9cbe9da9 --- a/Sources/vendor/autoload.php +++ b/Sources/vendor/autoload.php @@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitb084bad56d99d613841073027e5f5e7e::getLoader(); +return ComposerAutoloaderInit1887e85fc3cfddacf8d7e17588dae6f1::getLoader(); diff --git a/Sources/vendor/composer/ClassLoader.php b/Sources/vendor/composer/ClassLoader.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/InstalledVersions.php b/Sources/vendor/composer/InstalledVersions.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/LICENSE b/Sources/vendor/composer/LICENSE old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/autoload_classmap.php b/Sources/vendor/composer/autoload_classmap.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/autoload_files.php b/Sources/vendor/composer/autoload_files.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/autoload_namespaces.php b/Sources/vendor/composer/autoload_namespaces.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/composer/autoload_psr4.php b/Sources/vendor/composer/autoload_psr4.php old mode 100755 new mode 100644 index 7afa52da..3369793b --- a/Sources/vendor/composer/autoload_psr4.php +++ b/Sources/vendor/composer/autoload_psr4.php @@ -24,12 +24,14 @@ return array( 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), + 'Repository\\' => array($baseDir . '/src/data/model/repository'), + 'Network\\' => array($baseDir . '/src/data/core/network'), 'Hearttrack\\' => array($baseDir . '/src'), 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), - 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'), 'Data\\Core\\' => array($baseDir . '/src/data/core'), + 'Data\\' => array($baseDir . '/src/data'), 'Console\\' => array($baseDir . '/src/console'), 'App\\Views\\Directives\\' => array($baseDir . '/src/app/views/directives'), 'App\\Router\\Response\\' => array($baseDir . '/src/app/router/response'), diff --git a/Sources/vendor/composer/autoload_real.php b/Sources/vendor/composer/autoload_real.php old mode 100755 new mode 100644 index 9d7669a3..b9f54e08 --- a/Sources/vendor/composer/autoload_real.php +++ b/Sources/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitb084bad56d99d613841073027e5f5e7e +class ComposerAutoloaderInit1887e85fc3cfddacf8d7e17588dae6f1 { private static $loader; @@ -24,16 +24,16 @@ class ComposerAutoloaderInitb084bad56d99d613841073027e5f5e7e require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInitb084bad56d99d613841073027e5f5e7e', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit1887e85fc3cfddacf8d7e17588dae6f1', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitb084bad56d99d613841073027e5f5e7e', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit1887e85fc3cfddacf8d7e17588dae6f1', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitb084bad56d99d613841073027e5f5e7e::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitb084bad56d99d613841073027e5f5e7e::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/Sources/vendor/composer/autoload_static.php b/Sources/vendor/composer/autoload_static.php old mode 100755 new mode 100644 index d1b63dd3..ead2b76e --- a/Sources/vendor/composer/autoload_static.php +++ b/Sources/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitb084bad56d99d613841073027e5f5e7e +class ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1 { public static $files = array ( '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', @@ -163,7 +163,7 @@ class ComposerStaticInitb084bad56d99d613841073027e5f5e7e array ( 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', ), - 'Doctrine\\Instantiator\\' => + 'Doctrine\\Instantiator\\' => array ( 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', ), @@ -171,18 +171,18 @@ class ComposerStaticInitb084bad56d99d613841073027e5f5e7e array ( 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', ), - 'DeepCopy\\' => + 'DeepCopy\\' => array ( 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy', ), - 'Data\\' => - array ( - 0 => __DIR__ . '/../..' . '/src/data', - ), 'Data\\Core\\' => array ( 0 => __DIR__ . '/../..' . '/src/data/core', ), + 'Data\\' => + array ( + 0 => __DIR__ . '/../..' . '/src/data', + ), 'Console\\' => array ( 0 => __DIR__ . '/../..' . '/src/console', @@ -211,7 +211,7 @@ class ComposerStaticInitb084bad56d99d613841073027e5f5e7e array ( 0 => __DIR__ . '/../..' . '/src/app/controller', ), - 'App\\' => + 'App\\' => array ( 0 => __DIR__ . '/../..' . '/src/app', ), @@ -1387,9 +1387,9 @@ class ComposerStaticInitb084bad56d99d613841073027e5f5e7e public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitb084bad56d99d613841073027e5f5e7e::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitb084bad56d99d613841073027e5f5e7e::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitb084bad56d99d613841073027e5f5e7e::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit1887e85fc3cfddacf8d7e17588dae6f1::$classMap; }, null, ClassLoader::class); } diff --git a/Sources/vendor/composer/installed.json b/Sources/vendor/composer/installed.json old mode 100755 new mode 100644 index 9f2c44ed..c5a21d6b --- a/Sources/vendor/composer/installed.json +++ b/Sources/vendor/composer/installed.json @@ -4,6 +4,44 @@ "name": "adriangibbons/php-fit-file-analysis", "version": "v3.2.4", "version_normalized": "3.2.4.0", + "source": { + "type": "git", + "url": "https://github.com/adriangibbons/php-fit-file-analysis.git", + "reference": "8efd36b1b963f01c42dc5329626519c040dec664" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/adriangibbons/php-fit-file-analysis/zipball/8efd36b1b963f01c42dc5329626519c040dec664", + "reference": "8efd36b1b963f01c42dc5329626519c040dec664", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.8.*", + "satooshi/php-coveralls": "^2.0", + "squizlabs/php_codesniffer": "2.*" + }, + "time": "2019-11-20T06:58:56+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "adriangibbons\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "description": "A PHP class for analysing FIT files created by Garmin GPS devices", + "homepage": "https://github.com/adriangibbons/php-fit-file-analysis", + "keywords": [ + "Fit", + "garmin" + ], + "support": { + "issues": "https://github.com/adriangibbons/php-fit-file-analysis/issues", + "source": "https://github.com/adriangibbons/php-fit-file-analysis/tree/master" + }, + "install-path": "../adriangibbons/php-fit-file-analysis" + }, + { "name": "altorouter/altorouter", "version": "v1.1.0", "version_normalized": "1.1.0.0", @@ -615,8 +653,8 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", - "version_normalized": "9.2.29.0", + "version": "10.1.9", + "version_normalized": "10.1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", @@ -1189,8 +1227,8 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.1", - "version_normalized": "1.0.1.0", + "version": "2.0.0", + "version_normalized": "2.0.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", diff --git a/Sources/vendor/composer/installed.php b/Sources/vendor/composer/installed.php old mode 100755 new mode 100644 index 72086882..5c38c8e3 --- a/Sources/vendor/composer/installed.php +++ b/Sources/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'hearttrack/package', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '79311b1041e6dc02c8f58f9bc46bc20ba368ed58', + 'reference' => 'eb625309ce4a814abafb1d0ded3d0d5937ddc905', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -67,7 +67,7 @@ 'hearttrack/package' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '79311b1041e6dc02c8f58f9bc46bc20ba368ed58', + 'reference' => 'eb625309ce4a814abafb1d0ded3d0d5937ddc905', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/Sources/vendor/myclabs/deep-copy/.github/FUNDING.yml b/Sources/vendor/myclabs/deep-copy/.github/FUNDING.yml old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/.github/workflows/ci.yaml b/Sources/vendor/myclabs/deep-copy/.github/workflows/ci.yaml old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/LICENSE b/Sources/vendor/myclabs/deep-copy/LICENSE old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/README.md b/Sources/vendor/myclabs/deep-copy/README.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/composer.json b/Sources/vendor/myclabs/deep-copy/composer.json old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ChainableFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php b/Sources/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/LICENSE b/Sources/vendor/nikic/php-parser/LICENSE old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/README.md b/Sources/vendor/nikic/php-parser/README.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/composer.json b/Sources/vendor/nikic/php-parser/composer.json old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/README.md b/Sources/vendor/nikic/php-parser/grammar/README.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/parser.template b/Sources/vendor/nikic/php-parser/grammar/parser.template old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/php5.y b/Sources/vendor/nikic/php-parser/grammar/php5.y old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/php7.y b/Sources/vendor/nikic/php-parser/grammar/php7.y old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/phpyLang.php b/Sources/vendor/nikic/php-parser/grammar/phpyLang.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/rebuildParsers.php b/Sources/vendor/nikic/php-parser/grammar/rebuildParsers.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/tokens.template b/Sources/vendor/nikic/php-parser/grammar/tokens.template old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/grammar/tokens.y b/Sources/vendor/nikic/php-parser/grammar/tokens.y old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Comment.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Comment.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Error.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Error.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NameContext.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NameContext.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/Sources/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/CHANGELOG.md b/Sources/vendor/phar-io/manifest/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/LICENSE b/Sources/vendor/phar-io/manifest/LICENSE old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/README.md b/Sources/vendor/phar-io/manifest/README.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/composer.json b/Sources/vendor/phar-io/manifest/composer.json old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/composer.lock b/Sources/vendor/phar-io/manifest/composer.lock old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/ManifestDocumentMapper.php b/Sources/vendor/phar-io/manifest/src/ManifestDocumentMapper.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/ManifestLoader.php b/Sources/vendor/phar-io/manifest/src/ManifestLoader.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/ManifestSerializer.php b/Sources/vendor/phar-io/manifest/src/ManifestSerializer.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/Exception.php b/Sources/vendor/phar-io/manifest/src/exceptions/Exception.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php b/Sources/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php b/Sources/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php b/Sources/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php b/Sources/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Application.php b/Sources/vendor/phar-io/manifest/src/values/Application.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/ApplicationName.php b/Sources/vendor/phar-io/manifest/src/values/ApplicationName.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Author.php b/Sources/vendor/phar-io/manifest/src/values/Author.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/AuthorCollection.php b/Sources/vendor/phar-io/manifest/src/values/AuthorCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php b/Sources/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/BundledComponent.php b/Sources/vendor/phar-io/manifest/src/values/BundledComponent.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/BundledComponentCollection.php b/Sources/vendor/phar-io/manifest/src/values/BundledComponentCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php b/Sources/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/CopyrightInformation.php b/Sources/vendor/phar-io/manifest/src/values/CopyrightInformation.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Email.php b/Sources/vendor/phar-io/manifest/src/values/Email.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Extension.php b/Sources/vendor/phar-io/manifest/src/values/Extension.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Library.php b/Sources/vendor/phar-io/manifest/src/values/Library.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/License.php b/Sources/vendor/phar-io/manifest/src/values/License.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Manifest.php b/Sources/vendor/phar-io/manifest/src/values/Manifest.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php b/Sources/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php b/Sources/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Requirement.php b/Sources/vendor/phar-io/manifest/src/values/Requirement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/RequirementCollection.php b/Sources/vendor/phar-io/manifest/src/values/RequirementCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php b/Sources/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Type.php b/Sources/vendor/phar-io/manifest/src/values/Type.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/values/Url.php b/Sources/vendor/phar-io/manifest/src/values/Url.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/AuthorElement.php b/Sources/vendor/phar-io/manifest/src/xml/AuthorElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php b/Sources/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/BundlesElement.php b/Sources/vendor/phar-io/manifest/src/xml/BundlesElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ComponentElement.php b/Sources/vendor/phar-io/manifest/src/xml/ComponentElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php b/Sources/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ContainsElement.php b/Sources/vendor/phar-io/manifest/src/xml/ContainsElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/CopyrightElement.php b/Sources/vendor/phar-io/manifest/src/xml/CopyrightElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ElementCollection.php b/Sources/vendor/phar-io/manifest/src/xml/ElementCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ExtElement.php b/Sources/vendor/phar-io/manifest/src/xml/ExtElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ExtElementCollection.php b/Sources/vendor/phar-io/manifest/src/xml/ExtElementCollection.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ExtensionElement.php b/Sources/vendor/phar-io/manifest/src/xml/ExtensionElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/LicenseElement.php b/Sources/vendor/phar-io/manifest/src/xml/LicenseElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ManifestDocument.php b/Sources/vendor/phar-io/manifest/src/xml/ManifestDocument.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/ManifestElement.php b/Sources/vendor/phar-io/manifest/src/xml/ManifestElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/PhpElement.php b/Sources/vendor/phar-io/manifest/src/xml/PhpElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/manifest/src/xml/RequiresElement.php b/Sources/vendor/phar-io/manifest/src/xml/RequiresElement.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/CHANGELOG.md b/Sources/vendor/phar-io/version/CHANGELOG.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/LICENSE b/Sources/vendor/phar-io/version/LICENSE old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/README.md b/Sources/vendor/phar-io/version/README.md old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/composer.json b/Sources/vendor/phar-io/version/composer.json old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/BuildMetaData.php b/Sources/vendor/phar-io/version/src/BuildMetaData.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/PreReleaseSuffix.php b/Sources/vendor/phar-io/version/src/PreReleaseSuffix.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/Version.php b/Sources/vendor/phar-io/version/src/Version.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/VersionConstraintParser.php b/Sources/vendor/phar-io/version/src/VersionConstraintParser.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/VersionConstraintValue.php b/Sources/vendor/phar-io/version/src/VersionConstraintValue.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/VersionNumber.php b/Sources/vendor/phar-io/version/src/VersionNumber.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php b/Sources/vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/AnyVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/AnyVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/ExactVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/ExactVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php b/Sources/vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/constraints/VersionConstraint.php b/Sources/vendor/phar-io/version/src/constraints/VersionConstraint.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/Exception.php b/Sources/vendor/phar-io/version/src/exceptions/Exception.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php b/Sources/vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/InvalidVersionException.php b/Sources/vendor/phar-io/version/src/exceptions/InvalidVersionException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php b/Sources/vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php b/Sources/vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php b/Sources/vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php old mode 100755 new mode 100644 diff --git a/Sources/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php b/Sources/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php deleted file mode 100644 index e645e69f..00000000 --- a/Sources/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -namespace PHPUnit\Framework; - -/** - * @psalm-immutable - * - * @internal This class is not covered by the backward compatibility promise for PHPUnit - */ -final class PhptAssertionFailedError extends AssertionFailedError -{ - private readonly string $syntheticFile; - private readonly int $syntheticLine; - private readonly array $syntheticTrace; - private readonly string $diff; - - public function __construct(string $message, int $code, string $file, int $line, array $trace, string $diff) - { - parent::__construct($message, $code); - - $this->syntheticFile = $file; - $this->syntheticLine = $line; - $this->syntheticTrace = $trace; - $this->diff = $diff; - } - - public function syntheticFile(): string - { - return $this->syntheticFile; - } - - public function syntheticLine(): int - { - return $this->syntheticLine; - } - - public function syntheticTrace(): array - { - return $this->syntheticTrace; - } - - public function diff(): string - { - return $this->diff; - } -}