From e60c7b83b4fd089951851d9e06ee4a3e6f6b495a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Eduardo=20Garc=C3=ADa=20M=C3=A1rquez?= Date: Fri, 9 Jan 2026 07:43:35 -0500 Subject: [PATCH] docs(diagrams): update architecture diagrams for activation feature Updated PlantUML diagrams and regenerated SVG/PNG exports: 01-use-cases: Add activation and admin use cases 02-domain-model: Add activation fields to Student entity 03-sequence-enrollment: Include activation check in flow 04-components: Add activation and admin components 05-entity-relationship: Add activation columns to Student table 06-state-enrollment: Add inactive/pending states 07-deployment: Update for current infrastructure 08-c4-context: Add admin actor and activation system All diagrams validated and exported in both SVG and PNG formats. Co-Authored-By: Claude Opus 4.5 --- docs/architecture/diagrams/01-use-cases.png | Bin 0 -> 71121 bytes docs/architecture/diagrams/01-use-cases.puml | 87 +++++++++---- docs/architecture/diagrams/01-use-cases.svg | 2 +- .../architecture/diagrams/02-domain-model.png | Bin 0 -> 70825 bytes .../diagrams/02-domain-model.puml | 45 ++++++- .../architecture/diagrams/02-domain-model.svg | 2 +- .../diagrams/03-sequence-enrollment.png | Bin 0 -> 85781 bytes .../diagrams/03-sequence-enrollment.puml | 24 +++- .../diagrams/03-sequence-enrollment.svg | 2 +- docs/architecture/diagrams/04-components.png | Bin 0 -> 92494 bytes docs/architecture/diagrams/04-components.puml | 120 ++++++++++++++---- docs/architecture/diagrams/04-components.svg | 2 +- .../diagrams/05-entity-relationship.png | Bin 0 -> 40817 bytes .../diagrams/05-entity-relationship.puml | 23 ++++ .../diagrams/05-entity-relationship.svg | 2 +- .../diagrams/06-state-enrollment.png | Bin 0 -> 48459 bytes .../diagrams/06-state-enrollment.puml | 69 ++++++---- .../diagrams/06-state-enrollment.svg | 2 +- docs/architecture/diagrams/07-deployment.png | Bin 0 -> 55439 bytes docs/architecture/diagrams/07-deployment.puml | 46 ++++++- docs/architecture/diagrams/07-deployment.svg | 2 +- docs/architecture/diagrams/08-c4-context.png | Bin 0 -> 46717 bytes docs/architecture/diagrams/08-c4-context.puml | 37 +++++- docs/architecture/diagrams/08-c4-context.svg | 2 +- 24 files changed, 372 insertions(+), 95 deletions(-) create mode 100644 docs/architecture/diagrams/01-use-cases.png create mode 100644 docs/architecture/diagrams/02-domain-model.png create mode 100644 docs/architecture/diagrams/03-sequence-enrollment.png create mode 100644 docs/architecture/diagrams/04-components.png create mode 100644 docs/architecture/diagrams/05-entity-relationship.png create mode 100644 docs/architecture/diagrams/06-state-enrollment.png create mode 100644 docs/architecture/diagrams/07-deployment.png create mode 100644 docs/architecture/diagrams/08-c4-context.png diff --git a/docs/architecture/diagrams/01-use-cases.png b/docs/architecture/diagrams/01-use-cases.png new file mode 100644 index 0000000000000000000000000000000000000000..be2ab556bc0f3fb408b2d0817663f43779c232ea GIT binary patch literal 71121 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 ?Q zPaA1Ha*Pnxis2g~Geq1u?6BwH5KgvCI@QQYc;cd$asE@I;L;2S2Y13$Z*R-rxy$tX zOD*R@kkH#S0#L_t8_or#SJ=orFRU&o13Djk5v0LB++tPK>8gf#C@M>^{atDT#!0MN z76>Wsc?yW%dancq5cPF(Kt8QFbdV{v(7+Ff?lxni2E~NevZ(u1+BdgqEC+F6^CR>V z(}EgR8~PS{7#ft?gm$Ohy9a!WNI+~mOLKq1xP9Iu8RQH&l0fy>v4ZH`Ajc~DCwh3@uL&Zzh)G?bUHjg!;R^_7>e5YC4QF%A#3ftDUv22yX~255z3PJWjGLDi5g2-ipN1R4-9;j=&ZS<- zYv7D*MEjb+;vQ=U+}|4EV_aj-dGmUW07Gna`u>HfEkHbzNz;%A->Wkz8BJJZzPI6V zP4%9EV+D43iOLZN;AdUid9fC2R+g=G#Uj&A5{$MgwaXn6D94B>=WT%th$bPO+d~K^ zIU-wDglOosvSITSBh9Xzz5`l}OABN?KJtNdDr{w3NLO@{6WiH?5qWMxx8vGalSoJc zr-A`&oK<{QNa7`H3D#KIjq>ws62S9ToLO>-;irRX8Csc(#y-+nok?WQ>`@M#AWbww zGwlgh(0|9=ng5SNq)^wY5hZ|1nsB^XZd>N-GY%K9kQ}uUKm#g+_{_yRn*%3h%2xk% ySG9Gol_t))@aUJJRT^#9zxF~tNcMj$`Q*-iLq)cv`&H!G(?(!Zz1JY;*#7{{6$7dO literal 0 HcmV?d00001 diff --git a/docs/architecture/diagrams/01-use-cases.puml b/docs/architecture/diagrams/01-use-cases.puml index 0988fad..d0673f5 100644 --- a/docs/architecture/diagrams/01-use-cases.puml +++ b/docs/architecture/diagrams/01-use-cases.puml @@ -9,43 +9,84 @@ skinparam actorBackgroundColor #007AFF title Sistema de Registro de Estudiantes - Diagrama de Casos de Uso actor "Estudiante" as student +actor "Administrador" as admin -rectangle "Sistema de Inscripción" { - usecase "Registrarse en el sistema" as UC1 - usecase "Iniciar sesión" as UC2 - usecase "Ver materias disponibles" as UC3 - usecase "Inscribirse en materia" as UC4 - usecase "Cancelar inscripción" as UC5 - usecase "Ver mis inscripciones" as UC6 - usecase "Ver compañeros de clase" as UC7 - usecase "Actualizar perfil" as UC8 +rectangle "Sistema de Inscripción Académica" { + ' Autenticación (ambos actores) + usecase "Iniciar sesión" as UC_LOGIN + usecase "Recuperar contraseña" as UC_RECOVER - usecase "Validar límite de créditos\n(máx 9 créditos)" as UC4a - usecase "Validar restricción de profesor\n(no repetir profesor)" as UC4b + ' Solo estudiantes + usecase "Registrarse" as UC_REGISTER + usecase "Activar cuenta" as UC_ACTIVATE + usecase "Ver dashboard personal" as UC_DASHBOARD + usecase "Ver materias disponibles" as UC_SUBJECTS + usecase "Inscribirse en materia" as UC_ENROLL + usecase "Cancelar inscripción" as UC_UNENROLL + usecase "Ver mis inscripciones" as UC_MY_ENROLL + usecase "Ver compañeros de clase" as UC_CLASSMATES + + ' Solo administrador + usecase "Gestionar estudiantes\n(CRUD)" as UC_CRUD + usecase "Ver todos los estudiantes" as UC_LIST + usecase "Crear estudiante" as UC_CREATE + usecase "Editar estudiante" as UC_EDIT + usecase "Eliminar estudiante" as UC_DELETE + + ' Validaciones (includes) + usecase "Validar límite de créditos\n(máx 9 créditos)" as UC_VAL_CREDITS + usecase "Validar restricción de profesor\n(no repetir profesor)" as UC_VAL_PROF } -student --> UC1 -student --> UC2 -student --> UC3 -student --> UC4 -student --> UC5 -student --> UC6 -student --> UC7 -student --> UC8 +' Relaciones Estudiante +student --> UC_REGISTER +student --> UC_LOGIN +student --> UC_ACTIVATE +student --> UC_RECOVER +student --> UC_DASHBOARD +student --> UC_SUBJECTS +student --> UC_ENROLL +student --> UC_UNENROLL +student --> UC_MY_ENROLL +student --> UC_CLASSMATES -UC4 ..> UC4a : <> -UC4 ..> UC4b : <> +' Relaciones Admin +admin --> UC_LOGIN +admin --> UC_RECOVER +admin --> UC_CRUD +admin --> UC_LIST -note right of UC4 +' Extensiones CRUD +UC_CRUD ..> UC_CREATE : <> +UC_CRUD ..> UC_EDIT : <> +UC_CRUD ..> UC_DELETE : <> + +' Validaciones inscripción +UC_ENROLL ..> UC_VAL_CREDITS : <> +UC_ENROLL ..> UC_VAL_PROF : <> + +note right of UC_ENROLL Reglas de negocio: - Máximo 3 materias (9 créditos) - No puede tener 2 materias del mismo profesor + - Requiere cuenta activada end note -note right of UC7 +note right of UC_CLASSMATES Solo muestra nombres de compañeros por materia end note +note right of UC_ACTIVATE + El estudiante recibe + código de activación + al registrarse +end note + +note bottom of admin + Acceso completo al + CRUD de estudiantes +end note + @enduml diff --git a/docs/architecture/diagrams/01-use-cases.svg b/docs/architecture/diagrams/01-use-cases.svg index 423765e..4f737a2 100644 --- a/docs/architecture/diagrams/01-use-cases.svg +++ b/docs/architecture/diagrams/01-use-cases.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Diagrama de Casos de UsoSistema de Registro de Estudiantes - Diagrama de Casos de UsoSistema de InscripciónRegistrarse en el sistemaIniciar sesiónVer materias disponiblesInscribirse en materiaCancelar inscripciónVer mis inscripcionesVer compañeros de claseActualizar perfilValidar límite de créditos(máx 9 créditos)Validar restricción de profesor(no repetir profesor)EstudianteReglas de negocio:- Máximo 3 materias (9 créditos)- No puede tener 2 materiasdel mismo profesorSolo muestra nombresde compañeros por materia«include»«include» \ No newline at end of file +Sistema de Registro de Estudiantes - Diagrama de Casos de UsoSistema de Registro de Estudiantes - Diagrama de Casos de UsoSistema de Inscripción AcadémicaIniciar sesiónRecuperar contraseñaRegistrarseActivar cuentaVer dashboard personalVer materias disponiblesInscribirse en materiaCancelar inscripciónVer mis inscripcionesVer compañeros de claseGestionar estudiantes(CRUD)Ver todos los estudiantesCrear estudianteEditar estudianteEliminar estudianteValidar límite de créditos(máx 9 créditos)Validar restricción de profesor(no repetir profesor)EstudianteAdministradorReglas de negocio:- Máximo 3 materias (9 créditos)- No puede tener 2 materiasdel mismo profesor- Requiere cuenta activadaSolo muestra nombresde compañeros por materiaEl estudiante recibecódigo de activaciónal registrarseAcceso completo alCRUD de estudiantes«include»«include»«include»«include»«include» \ No newline at end of file diff --git a/docs/architecture/diagrams/02-domain-model.png b/docs/architecture/diagrams/02-domain-model.png new file mode 100644 index 0000000000000000000000000000000000000000..57f05af5b16ea572f06ff3252003b9687850dbbf GIT binary patch literal 70825 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

ch2U{Vu)HSlkT`4QB-%%x!7+I@@j9{FEKs^wd% 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 I^WV+>7iDGd;{X5v literal 0 HcmV?d00001 diff --git a/docs/architecture/diagrams/02-domain-model.puml b/docs/architecture/diagrams/02-domain-model.puml index 02b3505..c23687b 100644 --- a/docs/architecture/diagrams/02-domain-model.puml +++ b/docs/architecture/diagrams/02-domain-model.puml @@ -9,16 +9,40 @@ title Sistema de Registro de Estudiantes - Modelo de Dominio package "Domain" { + class User <> { + - id: int + - username: string + - passwordHash: string + - recoveryCodeHash: string + - role: string + - studentId: int? + - createdAt: DateTime + - lastLoginAt: DateTime? + -- + + {static} Create(username, passwordHash, ...): User + + UpdatePassword(newHash): void + + UpdateLastLogin(): void + + IsAdmin: bool + + IsStudent: bool + } + class Student <> { - id: int - name: string - email: Email + - activationCodeHash: string? + - activationExpiresAt: DateTime? - enrollments: List -- + getTotalCredits(): int - + canEnrollIn(subject: Subject): bool - + enroll(subject: Subject): Enrollment - + unenroll(enrollmentId: int): void + + canEnroll(): bool + + hasProfessor(professorId): bool + + addEnrollment(enrollment): void + + removeEnrollment(enrollment): void + + setActivationCode(hash, expiresIn): void + + clearActivationCode(): void + + isActivated: bool + + isActivationExpired(): bool } class Subject <> { @@ -62,7 +86,14 @@ package "Domain" { - checkProfessorConstraint(student: Student, subject: Subject): void } + enum UserRoles <> { + Admin + Student + } + ' Relaciones + User "0..1" -- "0..1" Student : vinculado a + User --> UserRoles : tiene Student "1" *-- "0..3" Enrollment : tiene Subject "1" *-- "0..*" Enrollment : inscripciones Professor "1" *-- "2" Subject : imparte @@ -72,11 +103,19 @@ package "Domain" { EnrollmentDomainService ..> Subject : valida } +note bottom of User + Autenticación: + - PBKDF2-SHA256 (100k iter) + - JWT para sesiones + - Recovery code para reset +end note + note bottom of Student Invariantes: - Máximo 3 inscripciones - Email válido y único - No repetir profesor + - Requiere activación end note note bottom of Subject diff --git a/docs/architecture/diagrams/02-domain-model.svg b/docs/architecture/diagrams/02-domain-model.svg index 4302393..ceb4dc5 100644 --- a/docs/architecture/diagrams/02-domain-model.svg +++ b/docs/architecture/diagrams/02-domain-model.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Modelo de DominioSistema de Registro de Estudiantes - Modelo de DominioDomain«Entity»Student-id: int-name: string-email: Email-enrollments: List<Enrollment>+getTotalCredits(): int+canEnrollIn(subject: Subject): bool+enroll(subject: Subject): Enrollment+unenroll(enrollmentId: int): void«Entity»Subject-id: int-name: string-credits: int {= 3}-professorId: int+getProfessor(): Professor«Entity»Professor-id: int-name: string-subjects: List<Subject>+getSubjects(): List<Subject>«Entity»Enrollment-id: int-studentId: int-subjectId: int-enrolledAt: DateTime+getStudent(): Student+getSubject(): Subject«Value Object»Email-value: string+create(value: string): Email-validate(value: string): void«Domain Service»EnrollmentDomainService+validateEnrollment(student: Student, subject: Subject): void-checkMaxEnrollments(student: Student): void-checkProfessorConstraint(student: Student, subject: Subject): voidInvariantes:- Máximo 3 inscripciones- Email válido y único- No repetir profesorInvariantes:- Créditos = 3 (fijo)- Pertenece a un profesorCada profesorimparte exactamente2 materiastiene10..3inscripciones10..*imparte12emailvalidavalida \ No newline at end of file +Sistema de Registro de Estudiantes - Modelo de DominioSistema de Registro de Estudiantes - Modelo de DominioDomain«Entity»User-id: int-username: string-passwordHash: string-recoveryCodeHash: string-role: string-studentId: int?-createdAt: DateTime-lastLoginAt: DateTime?+Create(username, passwordHash, ...): User+UpdatePassword(newHash): void+UpdateLastLogin(): void+IsAdmin: bool+IsStudent: bool«Entity»Student-id: int-name: string-email: Email-activationCodeHash: string?-activationExpiresAt: DateTime?-enrollments: List<Enrollment>+getTotalCredits(): int+canEnroll(): bool+hasProfessor(professorId): bool+addEnrollment(enrollment): void+removeEnrollment(enrollment): void+setActivationCode(hash, expiresIn): void+clearActivationCode(): void+isActivated: bool+isActivationExpired(): bool«Entity»Subject-id: int-name: string-credits: int {= 3}-professorId: int+getProfessor(): Professor«Entity»Professor-id: int-name: string-subjects: List<Subject>+getSubjects(): List<Subject>«Entity»Enrollment-id: int-studentId: int-subjectId: int-enrolledAt: DateTime+getStudent(): Student+getSubject(): Subject«Value Object»Email-value: string+create(value: string): Email-validate(value: string): void«Domain Service»EnrollmentDomainService+validateEnrollment(student: Student, subject: Subject): void-checkMaxEnrollments(student: Student): void-checkProfessorConstraint(student: Student, subject: Subject): void«Enumeration»UserRolesAdminStudentAutenticación:- PBKDF2-SHA256 (100k iter)- JWT para sesiones- Recovery code para resetInvariantes:- Máximo 3 inscripciones- Email válido y único- No repetir profesor- Requiere activaciónInvariantes:- Créditos = 3 (fijo)- Pertenece a un profesorCada profesorimparte exactamente2 materiasvinculado a0..10..1tienetiene10..3inscripciones10..*imparte12emailvalidavalida \ No newline at end of file diff --git a/docs/architecture/diagrams/03-sequence-enrollment.png b/docs/architecture/diagrams/03-sequence-enrollment.png new file mode 100644 index 0000000000000000000000000000000000000000..f238827c5a163519a70cfaad0829f0e1e6461ef3 GIT binary patch literal 85781 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 S3((I literal 0 HcmV?d00001 diff --git a/docs/architecture/diagrams/03-sequence-enrollment.puml b/docs/architecture/diagrams/03-sequence-enrollment.puml index 91aeb9e..942e7c2 100644 --- a/docs/architecture/diagrams/03-sequence-enrollment.puml +++ b/docs/architecture/diagrams/03-sequence-enrollment.puml @@ -5,11 +5,12 @@ skinparam responseMessageBelowArrow true skinparam sequenceParticipantBackgroundColor #F8F9FA skinparam sequenceParticipantBorderColor #495057 -title Secuencia: Inscripción de Estudiante en Materia +title Secuencia: Inscripción de Estudiante en Materia (con JWT) actor "Estudiante" as user participant "Frontend\n(Angular)" as frontend participant "API GraphQL\n(HotChocolate)" as api +participant "JWT Middleware" as jwt participant "EnrollStudentHandler" as handler participant "EnrollmentDomainService" as domainService participant "StudentRepository" as studentRepo @@ -17,14 +18,27 @@ participant "SubjectRepository" as subjectRepo participant "EnrollmentRepository" as enrollRepo database "SQL Server" as db +== Autenticación (previo) == + +note over user, frontend + El estudiante ya inició sesión + y tiene un JWT válido almacenado +end note + == Solicitud de Inscripción == user -> frontend : Selecciona materia\ny hace clic en "Inscribir" activate frontend -frontend -> api : mutation enrollStudent(\n studentId, subjectId) +frontend -> api : mutation enrollStudent(\n studentId, subjectId)\n[Authorization: Bearer ] activate api +api -> jwt : Validate JWT +activate jwt +jwt -> jwt : Verify signature\n& expiration +jwt --> api : ClaimsPrincipal +deactivate jwt + api -> handler : Handle(EnrollStudentCommand) activate handler @@ -37,6 +51,12 @@ db --> studentRepo : Student data studentRepo --> handler : Student deactivate studentRepo +alt Cuenta no activada + handler --> api : Error: "Cuenta no activada" + api --> frontend : { errors: [...] } + frontend --> user : Muestra mensaje:\n"Activa tu cuenta primero" +end + handler -> subjectRepo : GetByIdAsync(subjectId) activate subjectRepo subjectRepo -> db : SELECT Subject diff --git a/docs/architecture/diagrams/03-sequence-enrollment.svg b/docs/architecture/diagrams/03-sequence-enrollment.svg index 067f282..7526ba8 100644 --- a/docs/architecture/diagrams/03-sequence-enrollment.svg +++ b/docs/architecture/diagrams/03-sequence-enrollment.svg @@ -1 +1 @@ -Secuencia: Inscripción de Estudiante en MateriaSecuencia: Inscripción de Estudiante en MateriaFrontendAPI GraphQLEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositoryEstudianteFrontendAPI GraphQLEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositorySQL ServerEstudianteEstudianteFrontend(Angular)Frontend(Angular)API GraphQL(HotChocolate)API GraphQL(HotChocolate)EnrollStudentHandlerEnrollStudentHandlerEnrollmentDomainServiceEnrollmentDomainServiceStudentRepositoryStudentRepositorySubjectRepositorySubjectRepositoryEnrollmentRepositoryEnrollmentRepositorySQL ServerSQL ServerFrontendAPI GraphQLEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositorySolicitud de InscripciónSelecciona materiay hace clic en "Inscribir"mutation enrollStudent(studentId, subjectId)Handle(EnrollStudentCommand)Obtención de DatosGetByIdWithEnrollmentsAsync(studentId)SELECT Student + EnrollmentsStudent dataStudentGetByIdAsync(subjectId)SELECT SubjectSubject dataSubjectValidación de Reglas de NegocioValidateEnrollment(student, subject)CheckMaxEnrollments()[máx 3 materias]alt[Estudiante tiene 3 materias]throw MaxEnrollmentsExceededExceptionError: "Límite de materias alcanzado"{ errors: [...] }Muestra mensaje de errorCheckProfessorConstraint()[no repetir profesor]alt[Ya tiene materia con el profesor]throw SameProfessorConstraintExceptionError: "Ya tienes materia con este profesor"{ errors: [...] }Muestra mensaje de errorValidación OKPersistenciaAddAsync(enrollment)INSERT EnrollmentOKEnrollmentEnrollmentPayload{ enrollment: {...} }Muestra confirmación:"Inscrito en [materia]" \ No newline at end of file +Secuencia: Inscripción de Estudiante en Materia (con JWT)Secuencia: Inscripción de Estudiante en Materia (con JWT)FrontendAPI GraphQLJWT MiddlewareEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositoryEstudianteFrontendAPI GraphQLJWT MiddlewareEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositorySQL ServerEstudianteEstudianteFrontend(Angular)Frontend(Angular)API GraphQL(HotChocolate)API GraphQL(HotChocolate)JWT MiddlewareJWT MiddlewareEnrollStudentHandlerEnrollStudentHandlerEnrollmentDomainServiceEnrollmentDomainServiceStudentRepositoryStudentRepositorySubjectRepositorySubjectRepositoryEnrollmentRepositoryEnrollmentRepositorySQL ServerSQL ServerFrontendAPI GraphQLJWT MiddlewareEnrollStudentHandlerEnrollmentDomainServiceStudentRepositorySubjectRepositoryEnrollmentRepositoryAutenticación (previo)El estudiante ya inició sesióny tiene un JWT válido almacenadoSolicitud de InscripciónSelecciona materiay hace clic en "Inscribir"mutation enrollStudent(studentId, subjectId)[Authorization: Bearer <JWT>]Validate JWTVerify signature& expirationClaimsPrincipalHandle(EnrollStudentCommand)Obtención de DatosGetByIdWithEnrollmentsAsync(studentId)SELECT Student + EnrollmentsStudent dataStudentalt[Cuenta no activada]Error: "Cuenta no activada"{ errors: [...] }Muestra mensaje:"Activa tu cuenta primero"GetByIdAsync(subjectId)SELECT SubjectSubject dataSubjectValidación de Reglas de NegocioValidateEnrollment(student, subject)CheckMaxEnrollments()[máx 3 materias]alt[Estudiante tiene 3 materias]throw MaxEnrollmentsExceededExceptionError: "Límite de materias alcanzado"{ errors: [...] }Muestra mensaje de errorCheckProfessorConstraint()[no repetir profesor]alt[Ya tiene materia con el profesor]throw SameProfessorConstraintExceptionError: "Ya tienes materia con este profesor"{ errors: [...] }Muestra mensaje de errorValidación OKPersistenciaAddAsync(enrollment)INSERT EnrollmentOKEnrollmentEnrollmentPayload{ enrollment: {...} }Muestra confirmación:"Inscrito en [materia]" \ No newline at end of file diff --git a/docs/architecture/diagrams/04-components.png b/docs/architecture/diagrams/04-components.png new file mode 100644 index 0000000000000000000000000000000000000000..edba79f6445319d9e3a57dd7173a4c5878185e75 GIT binary patch literal 92494 zcmd42Wn5HU6gN76h=@vqf`BxV64E8oDBYccq;!|kDIL-cLw9#bcf%mvAPob|+%x#x z_xIlW-uig=2WHQibJkwH|7-0-u)M6q^QS~lK_Jj`DM?X95C{vHq6|Ml0X_r;^j?EN zNF?%~l*NFrXiuJCU|>AQ#3DqDmjo|~U%q@vO!|i84dt6RZ>VS)sOcD4SXkaNu`;s0 zfA{Vk8y6oJH@ASGppcL-udtZFM=4=pVF?Mz50bLtpOrs<{wyh{DkZNbr=qQ*q9U)R ztE#S{t)ru%XQHS7FuqusngQdhjm} zD%TfL-1{}V-~0u zzIpi1cK_uLrXHDnySwN0?Du<9le94P0dDBtdDCPjgLRrFFYxXljKumD8>YdPUWcM-ql1~Y!oQQ z1kqI*Wuz*N_(ap1IVYA4;@M9LEiHaf&rs>PVG{X!`&AuJwzmxrnNTdpRhFpZ-D_;V zTBY{a@pkL%)l+Y^CSMPOGQ{$V3N^_GhN8crZNyLb8 z7h&+>Acv9FXQj@Rz1OhHIFYvG?XUrUyJ&&9Swp8henqBOv@fd2JJo8?LZ&Z?1b;z0 z9^*!2$-?q)rCxTj!i98VDAhLOXLjM*$Igs(>Y|ei81JMF;@FDsYI=L$mt?kkcFl^1 z;d(oKlYi-#sUV&DgFYk>gehv@S@zZPahGtSUf&CaSKVkDzaDYh#0yS+;t-BdPs80* zQih<;y?mMZX~Y05_bn~QkJvWE5IvRCMd^EA(AZP+h-BSS`8s|-CvMEFh37-RqMz&< z%oH8I`z)|UJS0_)+v(cYM8n_Xtcl0I@`A^NJM)HU7~`qV(2)Pli|!J-(Xm9sAZ((T z9Xar53*n@4&@}nspEYCO7w$A^OiUMb0Y|trIgc&>bftHMRlV zm$t}4g*0vTBzM;%Laf5>2-e!K4yeCb(JXw)olH}{B(5CRaLy7(gbr`wJvTKK+HS(7 zksv0h!gCr-)1c{r#|ES_%XEhC3Kf?9bk&t+d^`AFs486CN0GFqo*}3}K)SB+V=&5s zC$3?Mt>zgG&q6Bh9In)M_e#unboy8Ms@!URSnRzx40_1>3))$2#2LAo>~j9jf=6G;{a8e3swQeNeGHjh#2Xe@dQE*K+II8ZWx{cf~!meZ1O{JE9QJ@!XU> zAG0Ld6s?iZ8QR`wOu^^!hw#lA5~1P?nUA!MmS2A8dk}^%(!bO#@I{}rLT&cg;0%|M zOd#RCJIBuF==hT)e(tz@j@+}BYCtmqwVb5vW&H6jE0uga-Rm{DH2zB-6 zs?<9E#2Rf34Q6lO`qyus7Y3i(rJ!-vS{QabrT%bSow9&MUGZoX?~9Yus5;n8^XF63 zFd1K`QGJ_J{KpySHvSY%KA29uGK{e(BA=AmI^^$l+sdB570m7YX^8|rpc_MGQL56| zWSh?UU8j#CuRyut^!d~7u%bygKKA$bfr{q^2D6X5-%Smz#m1piv5i;@e~f7za>lz? zG9j_U=s;eoreC2P6u-SKbJTg^eSi3LF9b(<1b@6tmLZuzgqTi8LY1Se7A&a}5V_Y8 z&aY*8^OWOd?I+9vuMec}_)|R(9nz&QXu5uVh}ooB8D1XZTB&DT6| zqCz}wa(Z8J1%E|>Pw1;kds!W{jTGcX*CQkO8jt6Wl0{|Yy*VISD%VdZf2ON8E%X<2eu8D54L>4!W29Z+VUIyDS`nmtSh}&O z5dTR!zR*B>+&!8WH9MmpM0C58v@UG)@f-cLujaH8%Hf~BM-fcTZyRRXm~UyeyT)N2 zYzJg5KJkJf#WJNLTm@?K)^{txH>84tjQ)|O7!0@W)Ki-=$wH>Zye=Fzf!3VL$sf<& zGUjD6DS@V|F;cM4qy9eHR>!3+KfI3JQp0cLK=u($M#i(M$UMRCM)Q5~{_wTEiYBR8 z-jI~K_8w6?-IGw9slrS@-HoDb{GlS*)^rqWhr}BUVf!1E)v1l`bG7f#d!gMz7>`U* z>GpN}7n4iM&wsSfK9}WVm!-{b{$*YZ_;%Nt)cH6MmBC|@NAk*z2bNg;Eoopzqy}r7 z(G+>_L-f=fHbdsKEm9|GH7b9p5$gKa8Y>;ekAApK{upXsG5ds(@{#8Ac>}b3`(*o3 zmOd#iwe*zKy$yl9r`%)M%Jz!>Xy!xCS!29iyR-rj`s7 zn`cZPA-AEK0lw?mr1kS$k09osOfs{5__FwArPvmP8A`RU*^89-{l?r=#uPIWGP&a{ z1Z_gwgd7Ea%S+29&T~ zkqq8n^HuSfRcW&gj3uz8C48Y)A*F;9D%WN|yQGP0g=Lnx^_0$7l3rIWSvN9264Pbc zZ`%#UpYCU`KFzhAuCK;Oz7hzIjiHUQyQETNh6UgS!6><%hz&v|9)}*@E?s(B-wM`w zrZ2XRTCHr?9@{ToH9W2UpT5IufNKf$@bH9sT34UN)|z|owi>JS$+S}*tN1l-FYa`T z@)G$77Z=d(#?GJex+b4Fop1e9^s5tmuZTvcyziZ@t&m3-dK zZoJWFaSJVDb<_LKZfxuW@oj-bco#g;_q7<%D2=CdyFFP#(&b+f%BvjsN;XP)8-^la zm?tZP^77sR-eeYX=7=6;2_mK;D%5)Bh1TqPj@BBrLJq-=kO6^wKvJR~lwB4MmP74{ zXH);&QgTdD3Cm{)fBgO(-(;ZrtwP=>e@=Gkjo%Ty6;;XOmQFf+&iQ$FeYxh=R!+?^ z#5^NL0_M)K_Oq#KDUEiPKQb=OG(K5TfM6p>D!x854Ii|%%;((s)Pdw4h%eayJHyK0y|H&jp6%E1BoDN%_G;@NbAiPcFHQ(aK^VW16 zPeS^(l0EO7#%vqq?)O=2T{ul4R(%6nip>q*oXJcv)*0R=na3tl@I&Io{Vzq45p)XZ z`CGp5Up~sy*3{WoXdoLOlp^mXs_U1ZCfjTK&EJTU4dYc+odq%BaSt)AR=cIalG z6qmpPA-U9poOn;dVO`c1!wuJap&8iQV&R5_dlPp7upMqe)zRHCm*;{vU3@P;u)8uIG&;-sAN377+oOS&amINU2r*s`eKoSe@xt-vUN7F9u)C_KU0*-4Sv7x zyl&cmNy1X_*ou440GgXi*XEW| zP0ep;Z*Er5Aev>s%g`o|d3;x$_gO_RXGVtxD!`{(mClgu<8~HJSHZa~WVY>yKB_k5 z%2tw&jXKSXa%*DD#Z3JUD7%TgvK#fumvu0KZ!NNzo$DZh{ZWNk=q>lF(%lOQM3~#qZ*JWlsA_5r-gu9D9l@0Z*PbE~+ra-sS{VKbsmmAnAO% zoz8mGW3k|rN*F-T7{_9*aFjFBqN9xG&QE0aDgfyb!oFi=CL^Ty&@Qu+u$~U(#eR`J z0dlwAB@upk=|O!riQVb?mX;jucyFVrATjz{qmgKQle+r!7z44}Ss`t_&%5M|&amB> z@REE%^}=#x1KR|iLSk2rG2Uu~AptivgX53|!G!e-3SdrJ;19BHQ!dxOSgp#UU=Gr0 z+CD*oPTNb#^GOG2B;1U-ocz0++!6We>kxCtQl6F-!M+n88CkCr$sALbt=U%^W3bl( zr{NmG^mU~onG(?7kNCDRR^DpLg!??#G%3}K3d0Z1@V+l4*o@NmFDMGQC_TB_$=&o_xgscK5j;rF($D$!5{5 zPI-@K>N7Wi+uiSu@jQN;BSJ=}QnLdASY-Fv%3g)qwh2OoRW^i28>EqsH3JbQ1Ihar zbK%X>^AkJ2HpS@kmV3gQGfN_&LO$}Uq#mwXMzpJD<;_opeA-7*lUQip!p~T`JZmnl z#=n-ZXvnvVv(`q;C536hg0U|i+G$DSwS17(y3|++!53e#DT|x`(ywX$$dVUY#E54k z28|B<;-C0jHK@p3{q6d(YRRz5(q;-9Du=CV7;L2ARF(O-vqUx98Hu}?7SwIXiS+aB z4{0QP@M~W$U(dhK55o)9Ywnrn)>>sBw;=s!(l4|NEFZebcQ=vzq`iz)xEWO`vl-fS zP;38xl5jZDxz{o~HBDu7leUSgJM|);U(nn3Le>UWQks~WCBU&SEzl+MdWK%VPe6n} zx24Ps{~Zr>x-ofTTbjXcyc5c1V!^p@*_cSCPGa&!!5^92@EeKZ73x<42{@&3F9)>kG`@lNj%`^k|P9)E!(wXOZIG zs#NIqV1~A^%2mc2lz&P8k zQ{_{H3#@c%GwIGT*s1if?GLa9AT7CEg*4l@M%PR|nR_-Kx0sDHqzSz6H$eM*mOnS{)?^(}8`6_X*(dA@`ujBh+0k1=<)Fnt_8{B?BnknRT?lFG`D z=!vW8I^!>)x4f@5{Kn_9%nGAFs&Cy5%5ti$a^KUiM$aZvTZ1TE(yO}>!pD6pP6@SWpWpl z6_l;D&a@@9Cu3cWsH8Rx-KYgh_mrr5H<|VF0ud4PUqnzO5wiS1vFNdR^uwH^^lIu- z%wRLmRErztK0KJJ_jL8TVep`<#l--7vS_TrZD!N+a8|^x)0gDz!sZF~1qSw8jSP?W z&Dyd(6$Q23DRr15Nt3#PJ=D&Pgj>^Ka~h+-^0!z=?BZU}gqy2q+n2Nf<$$^iiei^% z((5I!d|N%H+U#ow7#3#x-{l3$2CG^M0`0*cLfvV zjHX(PHY(}wK$H!dJ-d@(`IM1uY;oXYZuf*VIH`u`=T;Z!WeDzid@KCM{DO=1@Rb4o<*2rtY~=eEe;8+*37*3k_ejq zmf_GkzWB8QDzu#IxcwA~uw-lwR?&A=vyB^a*szhuc|i{=WF7H{5H>NkBK4)bCPAIxz}z| zmj=g$Wo$7JmXR0xgC@b=mLzwV&>5QU>vcAM-=%O^2A|OXQo7nUIF<33_6}c-m$P(K zz@_2bX}{3c=wn$hbS8JSg$TmB@^|$6i@x?jQ&9!v48?YTaW76Y{uj-Pb8Hz@MNp@T zi7lE7V#4mEwvy`8J=9p0!sgIAO<&y)B>hJf@0uPJ*VpBq%!CL(yYE6@kDFA}9*R?~ zUWw_rJtIrxJLJAm?D?qPn>h&O292l%h#uw^k)3=`UFrguCvh3vdxGHqS12w1>S;WL zxTF_f?9|0+q*Q!xSoc$Kh+XK@_Y}>gI;G%F4+b)`>Auj5N7{JmpQ4&`9mgjM_MU<# zwxU^AW56ZN=19{ESB*}Uz0fcpugvKPc%gQ44aJylZ*;VUsnSgd!@^a623hsp<3Z9+ ziVD4bo%2w2?aNT!grX}^%j7z2yz(?iK1Uyc zelZZbrcw}SHxumzWb6AB9BJdfhh#f<GQw*{(nd#&El5~M_!63Dk6xz=AX zJIL2n%z9krw!v|Wy^>-7J6mMMudB|?$55qdplE;!a(IDo1P;~ajOYS7{A0oyVu@{rV!7C?qLNA# zZFGoN<7M3TL`cmBful<9pi0_u>$2|cvciXWZB;TLDCENs{*bh1p;+SL?@`sM^4AXE z&bgz;sv&>FYt@6gO^v?Tflo(lwt%{!KAFkA{`46LbQughlwnV81Ql~$Js~a&DJwQ5 zDojrvXvOK=WOVoEhsLQECJgAI=8L=lffgPEHKOpXl95z`hJaoYfgwX`$xPYO3`?Ua zpD06Xr7R_2_%RcN+7@(-Pav7CxRkwTIrM%qmAn+dMPfTm65!)D+Cz=#*Fa7CcCsKq z50whIb~t>2n?6kr%&JiWrvWXN3jxsr0_}YOs_3!2HEb{?@S7Pe;$ADMqz0lY-p7D( zoJ4>i^Kq)?X1~j8hED@OI$#1?^tr@s^t!H`-FpLES-^PUT7mgd@e6=r#xkN%txh)p zBTmiCgdC6`GKw(a8{kJX+7QIzplXH(Dw$p!R*s0D4-t-g0ST@F4dN2*G7}!|0JtEiXXF=LPW8^W2=`2#|2!4ga}x z$ZlTW%jvI-(X_xY{k%!yQ9{Y`nK>})Dl-iuQAHM<&%7x(Gn zffXCB=|vj@S+3t@E$n>3(?IZIDTs9g;YrE9S^%we?u%mkTNINva1wq#hAvaLy&M_` z^D5cP9oDofV%!+TcW0MFo~&MqOHa^QH?+gmbzat19IpeS_#h*y!Eht#Ye8&QxFTKY z?-jmmyD(`|%G^m^J{<%mYhsH492hWxJOWWa&}LBv4ttQ`g90DbfJNwMH1g>@}d&45`2# zfz`huER>#xju*bFdg*QCenw1YR3HfEMKgKuuc}TGt^3oE=1OeHjQQ0FD{IS}ZZv_0 z8V~9hgy-tB>CJpw{l#8lw@M9Mx9XZ^abEBMufvtLazjUhxgPgXc{tF*GJEr|5}fRC zbmjLNb;-ahH*cmr83@*ovVPX};j52FT>KO~3^XJ3Hni5MxQ4g+t|nU??U|lHTx}Yj$P7GPm3kGwFh@o>Xg|&V!K=m;fROj;wbk^S z5xl(Vt_do7ihU*Kml*4Bdk-)DrZ-cxu@L+F{o&@UX3e>o@FUJ>O@F;G^y3P7CnhZs zX6@Y_Z8~=$I68UA3Rv=&3^`JU#xuQ&2S*u1WM z1SB!gb3~|q(!|#momhLWwi9tV#L(@TuG&9KpGjNy(ffK-&~xA>gEKe7!p%x?j<&O5 zHjvE9%sb)ZY3z-gi&J*#XZO^?zd=Lk=DY+b6NLh?X{M+){h2(# zm^=@2Wrp@TLNNJu>zj**x;t#(Sk2pe9{jn1)9stRt07}utn;@EagOBQEiV}PCt%`7 zm&Q0C!@c{VJ@3r>S1c{L0y%YfK56tifa7r7+e`fZy_fPrj^NonU>j;r`-TA;i%_hb#s)p-;F7&>OO-^c zD?#j*2k7Xa43b=c8MBP*fr4preKo3SgdFW@h;3Be;>eWUqvAblJ#;gcs(aXdqMr5ZTRgRm88gXr_QaBN6cY*X|4OMj2j!piQM4k)OttRpziB_ zW5!JvB^>O8X+A)=KH><|lh8CX1@!z5m*_9RGU{|^%#mv*P*5RXb3^`I97AJ3rj zQyq>pgSX{uMPFh&7uSR zr<=sf7T8z4JIxEhMWl?&YxQ4m_61IMcadi0;FOh(jeiH^Exv~j<{&Jn=?6Hi1HnZa z78n}Sll}zzGPwMbBbvabUc`CmRc9|;K!hzCq)R@6R+AfhaO&$L3GS-b zvW0JnehI+!boRf^!lI;2u>gm-To~`o9FRn^oRu;%EhTBd6GZn>y+nU!Z8iUHw z;#$97n)ouH0PLBP8Igx0Gmu*07e>9G0qQfTuv7< zaRf98((xleTw~TE5zZ|10RjuqF19A{w^-x>O8Fyl7BK!_&%GG2RsLm$riXxAYpMT7 zj1ZA@82of}|0Nk_gnO#0lUDEoR`6l|2>jJYa&(ycQYH}W`g>& zlz*gv+yDY$q`aSVGZLqa93MGVpH}~4j}k~-v{H!Fm66yu zZQ=NYvzp)FLCMQOS|DJ9$}*@~en?myUeO=_6H%NB@k=c)=-^GEs)W8!DaJqG{a^bA z(EAPwNVuy9pPWi<{P0P-)noC2Haa8C)Y$O2CkZlBEy__hJBg!vh6vd${U3pR0&dSJ z@5|ghID~c~0WaUe4fAvTv+bOy1!5>2nN^1DDV^s3r@Ozrl*b8{>m;-<%g2kP18&x^ zUGTv9Bvvcrgu1U)H22f~{aRfk!Z?Vk(I;Nt0V?oyoqQuzP4sSI?|##O6&JI9%ZLdsHTj4WYbD{>UP6t31P2cg|tGt%L zpI6#KLd_1N{R$y+!VZ7i|)~FFj)6r<4$6T@bAq#nc{%-g1Z!* zsF_Rfo~p9a$K#ThEZo7yB@7Q&z3u-;VznpTzP}x9?9Siysm<{==-I<5$g~h582`Nk zQ~R!Jc3k!b*!ytNLDeE5WKr%E!G}(*pzYmxuVNvZUOAeJK5|oYS7mVPw)Msetnhd_ ze6wQXJGU+CrL1*B!Ec9^gfzM3N%K=w@Vh)%>bXS)6m#HsA~PzXn&;zjnV4siYpK-= z53zKp!C|giPV^wVB#L>8kuzbUFR96Xs+{~}Ww1ktyGr?6YL@R-zmdUe)J2LeX#zy`h%xXAPLAL8X{6C5r46+9+j!0}E^dgf`9{LCSQ2LOM< z`4mV#*0^d^WvcsO=#kCvxJ))`51pVj_m-9)VDC>?k7Tx|%#Q{Isbk$eug3#!x>;3? zh@+}qy6_ug(%%T#Z)ZD1LQs8zF#4DuKNsHji^Ok>*l!?GTkSik8W#3M5tIeTEZB`F zQr$XT*y=uQq5(Gx0Hxe?3p0=#I010Jyfqq`0;du^;9Bcps~P;IN7`uY=#xr*fpLEv zN}b@=C-})&;+o+Pk1c%WR2Al^zp9X`W&2g7y{ir*KMXQYF#2kg;`{#4rE)Upy2`eG zdHu$6yydxq8nXV^)dI$~<5xFX34zYoA{(Vmn#k=BQKkr_6|={PHi1)R!wHb$cmujT zPfc@q;>iz*x93x<(u8*9M_!NC%#qpUQCwJcd5bT#@hEWja3wBx+RxWvLRjG^!L!mZ;hoseG=uKl<3+Fthjq}<}^ z3RbV)p%K0JaTp^|`aT5y7lKf#*B{79LxNckUr*qI8eVnDD6A4+Z3(TS%0QZF!-+## z{MV$dTNb`VioLKn9^LnrARxE_wjxj}aPrY8=O)(nLEG70m3zWMCPC*o&u!y(c2u07 zUvQYr2J3=Oy2uJI1po-1QSn_owBGX_m6z3+I1pv8qNs4MvxB8%PEHShVjvPN0fPw}k~@ zMbu<)U7=rXC8X$Lt)XO7_W!GaJMa&ySvhYH!v9MaSTKKlune$iWxSFEW!&Zn{pOb% z3Be^?S5x8|$$M=hO|jOXzKF~*}0zR|{<7{SGD@P*|txa%nGM4a7<6Z#m2K)u~h z&Mo(^R;Ykn5@pYBsBN=nIO#qVq_=grWMAGD+$~fdC+` z5qMabke9qW9&)TMO6Cn=_t;*=6oV${!haU8_>YXjW-tyKI`#JWDTnHqrgt70{z>^w z^t-H!Tp|{ zXENd!QV^rwMBG^lXgG?ko>Nu6X&ZM_v6aHkzREQXU}_SCsUy#_u*O%OM7{FX#rgU_ z0N>B)Or&M{Xf|Ho-TfuCp6vC+gtW5X~kR6%j$h>x&nUE z7ybr07cVLMXfF)m|I$&z3!|!hYZ{TOuuKO0sQqXFK4ioo#GhorhKj16hYAZ*dADH` zMT=72;-JZsJ!GU(_V5jWoSRZDf}@ z(OGI>5=*@}FOfyP42>zagc+r_F?g%`#O>BxAi8Iw(8{>PtT?7Mvs~;8`nSj!&{Y1q z?WOxgi#3;yFbT3@PkU~D!IWFS?SzvTrH~+T+|K%WQ|RBrEc^(_JSSRY*b_Ho01T1z z11~T6`0MgTwN~xjbp-u~I2pucxo1`5?#o^ZyQ&#&=J77kdaG)7kWIjD&xqPj!O zQAZa)%n#U9I3IX>3cyA&R7*|2tOedPzxwPMm-Bb-ByVLozQ9waG1RvFDII)2-MQ`O zC97lHtqUYYz_r7L?{;^1IPq8Py&qvve-fvlbmjR+A^ZKE{e_Pk&PQA&%ydnE7@mN9 zMmm{5JJyPMeYQyza36x8gIueY4JM)cp_U*D!q!yx+A}F#Yw6v5FY5DLmk-{R2VbzH z02G&mfU%mJzbKz;Cry=~P(IJ(8#&(B0foFpAmfaOGm`27E*5o?4<_5AKqCQ=B<7)a zs&eV@P67JF9gA87o7fQi7^LH>W3$O4TJeRg~BiUx@Y zQor}Y1L*Y`5k>|HM>UNk9C9fBg7z%O0G&{A^c$0Z82HN)GAQFW7wv&EoNyx82Ivhx zx7YcHo=e3M50>bHDd}dK061@kXEJE?P}=K+13-{sW&S{`!yum&y_{vd>mRIK2GFFB z=Uw5(1y~i$Pdo(rA7%$S1^Sdd?_olRwoK*uX6^qfT0{%L>4f$ku6=&29mV=jQfn%Z zJ~~4{a+!^=D+9%%j$i7*bc^nJ-Dx@gV&8{P%%vJNglLb&b(n(wHpyLabc%*%Ehabx zRT#JfN?jmC2dQ^NXKw8i$wQ)lJK-BhELy~P%V26%w2*age(akYSTYB}TwCk+F>xnHm1SPw z5^g-b<0w@DoxbxN&2gcse7#Lij{1V{!?1MI+p~;-Y%)#sb zR;zkg4d@9K>krGHT|A?+`E1-2T%LVcg9)+#_!J=PK4xs;WSl(3=5s1) zR>%pCsNVfh?L2oGQR-=U5Z?m$U=x6MQu|?T7Kdcy=H`<>%#O*CZ~}@1 z-spQ9nmTX4g2Ml0b&`kG+nT0f*jai1ivZ4m0POSdBh_1ppyY+~Hw%2052|(=)CE9@ z4p1SC7{ga;E+ett*Zg0xMbZy*u3HcinVQN&8;2My@->?kR&Tk| z+waw0-LH|4C~+%o^Fk?}(2ZX?gDe(uYejYX5y!2LuIGI&ijtlJxyQ9twLC$Gc>l9* zm;v1YHppeVl}N0xyYDBjfH-&PeGLedt3>zN+>fR$O`Fvn>18GyI=Q$#;=1UYZyIrc z?nLVJ9M@L-FVw7oT2@}=`Ug7;w}0cyv)Po3)xdSr+;eXaIy4!GI+1qx%TP>R0t@fN zR)o_o~juw|VcO^J}J(hmw_$LJ` z!XERBG!AIshnkSyz!v6X@z!#;1b~Q7=|(wF+t$Ww6ZZ>vbKg(Tp<`csjtE?t)V-%> zbG=(Pv4SdIADl#zZG9opks&BEy3zmBz>>Z(<1)7A2`CfPhy#@R$}xCuSDp-CS9$6E z?qX0xcC3)@;6!I3KUny_%Y6y(|8{@fKGucSH>BZz$#q1p*|!$NalU=)<|K?BYI78! z)glK_5>}%?0%g=LE}mpd_&+hb@QzCHu4WQlV)*{TYM>-`GSNe_Z4aKxTBUi~gQL^* zCdZWE;!%6=`&C!lsl672N*Zy1G&1cX%1GC}zoseeo{9OF7P9Z&L4B`@FT$3`Z%ZVX z6DtU=kkmfMFENzTCZtGG7c%~L-qlV7WE-^k)zw3Z$WKRn`uxM;I%VRV?r2bR7Jin< zskHv1jrO$yWp45Yr*Vs!b21BfR)mLzH;>D07$=yQEEa=MK0!Rf43k|i%|d5tfqd`P z-&k)Og(5rk32+iEb7Xn4*J*>cL?^xZMuCebs zr(}?jRW*&~J=clfFRx(J2^bY_AC60M;&L;buVerrfo&ed_xlB=jpJ(*O5C@7?6{@h zqYl+dg?MtTQ?6~3l6z=Nt5C}*tifG2eq_yOu+Y}y8Ke2IKqbGH0ljn6NY#Kfd;h~5 zTJN)QnWK&Kna~A$l~HU-w^XWFw-0(w>!F02GrMLRkwsidiQHOt!fZD2;5if1Pxl|d zzxP_Q1-Yh+^cmO$34Rdn_lxf2YbJSGJ%~dJyMagfpZ-eo#xp#07P`O6niwPr82G@| za92qNDPCh6@XQ$uoDF%@4r_&0lF!iXw8T1CdfmK7?28V-*-Sa=?F-B@vAlr%GTnZ- z2&VTpb48qA>AAV7_I;tz$WBY?%V)Z2u<%Q)A>B41?u-8Xy(`LvD&RkPqy;WSI*L(* zZqF7Y9N;D`Yvq>~hoj@OHA2o2L=8V;>@j~dE&LVK#?byLs{K~rjf$~pEL^x^|J#NNCnUYwe$B&w?c7!TQ!c0u%>-2@`aW-YLImEOhd6*%u_!%p=$H zeE-z#ikhSqABW}Exd{)byifqwA?*G8cT4!p@TlBN?h*Yw7YhsW_CSy=-cnzSE5}f)gXH++=^p=Zc0m>;DJ^~ z6%#rL^@m{)+6|i0mqY5R3zMV>_m<8{3xn6AA?_cxeCkc_J}!*^6z_4aOQ5Ri7lE1K zy>7_b&&mARDif;3vUDJ4E`$HNb1UV`rmFH|xYQQSkN#T=9}?~6^&)cJrLEInS9S~$*YYzFYQokDWO#z#iAv0H}ST%OHf7uWh# zG@z!R6CO<7K(5*8>iUH;JPJ2)F~41AIw4Dsl=Zmz>d<$6HW`HuN1HXm4TK5sLGB2T z$kK#VX2mPju&Zp%vHeF$;n$ge8(ySyuMYLTB^5uj3C_j5 z^S0k{9v^D0CY;}n3(@_;AP0ewh;80>{0)!oIgvgZr7VJV^S?1P(QzjokLX>>&t_p1 z#PXNO{`(uhq`L`gyhxS3Wo=cDBBoDBcZ6xGda}5FH>rU();*czKzCzpit`Y9;+q+W8F6z9O=k|8{OKx_3WFtb*YY@zFD1y1 zxtAXp_ql>maM#vqR(S44pJSZ)Y!swhm`-6Ih7FK~XHlwk<7%IV##K87ka)~vd$6&m z=$K`F&DSX0*xv2C(qj(dBm~qHx^2Yjl=&xRYP8D#yG}UQ+XG5xyb7o8`zV(bUe(oi zu_<@0ES_ttwI}1l9(EYc6|2>NZ&7L-p=kd7Fw&~9#XpW>GjJud1!ig59a0#u9w50C z^tg-=K2cOA`|{3__92u#*VCc4;jzaeMA9dI?v$VVVc zaxVU6!7LB{3jy++^>G*8jMOYSbOl~mGv|$P`lW=Oi6*F9vG={B9Nb16**6dV>7My4 zF`ONDCDYR0Pdi0qVGy#QZMiKW8Vr7Ewb2nc-XGn666-Yc+e^WY!%m`f zu2AUnfF3_32DXFQ*|KzrDS`R;*E|K%T#Am&?`Bn*mS5yrCe)=zq!h}*!%uGuf}Ygn zb75ohdEmeJ*xwI77`n>c%oq$i619yTR=A5|^iq*Go9CiWq5b@}V@OTUX)?*mn9Gr$ zANofks+_?y=g(NOUUU)`1KxR>40Puz!Xr%<(%DGOoHImM8xwGmE!l)71q` z$EuNeW$U(UZqrb--P!y9~mgfQX^3DTeUeKPju9P zgA;L5pb=S5UBsiVmLGNwrh1!`JSGp4u^HnnJauaZv8%@(sx}8^))-^Yg&==Z6pJqMk0mUy2!EL zo9~?N6xdya_PcQ@*V&M@B)X@)I?ydp4yX=W#da z*JUZ4e!szavYzSb5-JqUCzvrWGT5T9%l{SPJK7gJFTS;EW)5LN&2w*6b2GCiS7q2~ zi9i1>>Ed>XS$6yyHKW`qUFsQ?ikJeviVf{g$=qlP@)SE}>OVNuK;NU?S`yUmwSmj- zHM>0h_GX^gv-E~`zW?TAJCt#`jmk}SjMuz+QT0c;;m)ovK z&{*82{|;?hrl8sb@BT$AbB;h_ybrH})tgNySKp5;2hs8wyPd=DKDILX@#H}VE@%U% z!f}NJ|NfOKdDPzZ-6FpSrP94r@2l~k`31BHy7;tg=sgU z4cP`G>dncfrZ&WASK|Zn9@ZRnKkLx*HB2b0(&aX@hy9}YF4j;hUN)7lrwkpMH)|M> zHDs^E;$AC3&3d}z6_+TFB_xK{Q*SmNC!d}C_HvnQh&1j;Q=Z;mil$XEYp_Xtx-B&+ zUH)f~sVe*+&+Rb*O?Omy`0;id!7!>Fxhm6+K!U>`>4RSPvT61gewOO$)cw!a9o~HXG@qyj_j6BkPaGEa3b>0N;ObMi~EB zY4l_}J?kVZOJgp4Z9bY8F9c^W%}z3h{nbk{t`sI9G6T^ECGXXE_?U0NQrQ1gru8+S zu_4vEaJH}x^XFFzpr-iuhAeQ_c?8Xa?@kjjgfQGEVOZ^z_1deg#MS4o+4LAsY)&ND zU#aR^3=hw|5B=gkxk(>fCGXE2SFgRlHXAWKtCdxgcP#StS*FlECevPI7y-zj1y%S9 z_i2wtKZ`EZ`Q$38=#DJybcsivL)_Ep&&k35)op&|dg?EXCVQjkQIA`wS44k=#+2V4 zGxy__9?Zm&gf^`Nen+zBCyO0qFZnoM*`E_KR}W4WkNi-v5@IK2enRcOcNk={&6Bh| z-RsR;3T0N-dE@<(p0Mtwzr<1a@@Ae1CV6z{^W`bimAL;|PVfp#1Aq$@td+z9ImrxD zQCs?=tvl6z8dhV=*QV1A%+zLaVgIIiWE@NYRBarum_Yh6TP%xaQ~AvFHvyZKWv4h> za*G5P!qYK_BH+7A`fd#-4`K|mkxSAq$?)@Ah`%%3qHJ{9StMsxcSvVI?`ew8ZT+#j zbpQ+O^zJQnvR-@Q+dX2{?aqX7|5U?W7Sq1Yw%bv`)wUAObJI5EC8b5*gF%!Ai{zR} zasKneNH)2a9*mmS>?)7yd3k>7NS?G13@+Y-K+GAMqR}X!XK|r?F)|iMec3LXd|aDv zU9&q~C%RG67bEgd^Fs1S=$iTUDE1O@Y zBuIr~hlYQWxHP-?X0gtl8AT5oF7Dkgtx9j5WKH{S%+uiwPr=lX4yXpjtVquJ9*24O zcy+a_HcIRf2IfFWHQKb=Yi6y0j$;kbaV*%&FysenH~|fgiRO3Wl!L;~bOgbqneW;IleCQWWu(Hlw)mcEFY7RjCy=1a$ny>$E}(NMkA!%h z2I0DJrdUQH8L=_?cBRlVlrdfmX9*LZb$UPiL}!!#$A zed94H%gYCn4d1Lko!(|Qg`f+wi*;d=*`x|sIKFIBNqG?jmJ*YqG74tOwiWg+TUyNK zdj5tO=$@Jb-BaaF{`($Q@}Uz5iVgZ|W6GN&pSP1cIL&4F|@p=!}PQp^@%A``Gs8hf}`?^0y>@yMT)@Ht*_dM;7DfGOp z_%F4eXp%@9;X9K2R355D+Fz6wsozZdc>1A^(LNi19SlD~KKL*2mQ^71yC_cKmR#7J zY8&7(=deCnz4^gpCzCdm0S))Lki(ldr1B-r1cfs|_mJ^ln{s9gqZquPCcJ>Jc$d1! znm?#A#`)%dqv>KAA%aMEm!x!eeCxg6 z{R6va&p9*m%skJ`R=*wGa+h3K{KbjBcaUJn+_JJH^54VM$@dtt@6l@VJ|YH-nRYo_ z*^I$%TI<>l{sBc}v%v?`sU*t~{f8Gwm zunSFc(P~6qI$HdSpEC;+h_$mpT>16$*0W1h7gouth{@EyBJIUnc$Yl1a6>hwLA!1ja0&{_Q|HB{is$MyT%)H2Y|r4vCxgXaVGI*zr=zw>FEzG-4gRLb^;_WrGQz6TpDr!P zb)8WW{LBH`wNEjhd9yyqxqPdgC_ji0t*f+0e=A1v>rm=2E;APLTk+LT>QCEcka6S0 zTv(5-7N6NVOAZ^MpbBOVXXZWdpofI4K4Cpx_ug@DECRRHu^Tj%v$}sUEoso3?@vYkVBm z!ZTxPwC5u{37ya}e{Oh}Zuk#!whJhFo zE=6^b83yMMNrilp&G9W5vLcL+uF7nI3eWZUrylN~pThw2WT0d&s$+s|W{CM}*VJC^ ziC`lRHU`;kzk*}i^L+RYQ930HMd?U@V3`Im_-JRGj3e=E7Hz*mg#vaPWjGoPxYxoU56x^iNT(F{c%gF>g7QcHtG zN`PI~ln@Js7{d3!{H zC3XIUP&Vkvo{m;?Fam2prd^}&i2u>e6D;I{(xN@Yvv0!HP5s&zP4@{8V@I{e#qtkc z`gS*8GBrCOMVcXIsQZ7GyDzkmRC#D;*PpLO!+tET)zORG%?O{sg|B!Da+w+SxFXDr zWBI|&R_2|E3gO0w({Lv(2~`Vwke7q;)E4A#__Nujjq{H8rw5lHS~vCC(}fj5Rh1is zGhL32RQH6Rk!a=kPpgJ94QB#+rmC1(QE7Jx!WQ?wUp*dPpnm{lYdQ)=Jefm87RUU6 z--nZZv(pVR6?8_R&4h~vo4m!HHW#1Nma z-fnESL0u&cEX9Q{gD1FW3&tO!8|Xd@5Y_TS?|(igS}Cr*(1s=tC)FmTH_^-7dNXylr5Hd5RtJxMG^3KE#`?9eTh3AZcDFKMRzQ9dblHVQM4 z`?WjZFnn|`{e0@y65~*?$0@w#)P$pJ*xZi}=hm` z4uJMD%Hi^GdPAo#D4gp3AYY|B+Ww|;g5PuhjGFE3la1LjZSalSWlf#oWSqVy+qC=K z*PA&RW54#)-nre;lM;UNrvvHKERJhhqy`sivIxd1@>jQy%UIvE?;PNg2F(PQ-mb?d zpjfr}QUcx5AO#pBNe;v`4&i7v#r)MW_|VznpT8p*Wju43cBD-b`;x!fDkNwzP0~AM z^8NMek(~-BtmJJkHtz2)u1Z4>fK?2*qh=lUd7E|l5p)d-dwLIlLurU3f?Fu_0-~j1 zG9#|cepjuLt>=T%lx{MRk)hVSSDN>eXyFOZ*njsTot_vgNtHh_rB$pqZERG%skXL6 zVCzO))1K|^rSldwmt4qpxRsq+nX9?*E~U~)Q}52os-Dtkz5pKDx@F&A^`gn`dExG7 zcu#AYnkynf{TFe`QKU$ID|3(90ojU`8uwd6Es=7Ip;4;L136d~5bXeItAzJYbc)3- zu=ND{N%HAQlZmlLAdQ1{+Qw*W%SPU!Ghi@uk!m}F^YRk=cLaXAm~XCmBE`pR=QQeQ zCA!&LQw|&b{&PJIOdj(n0-c^8Z=#Dr>DX+A@Ozi2(y>#asn6(y;eE}N6vOB+O4xDq zNoQt^InDeDQ-SbM?}LkcCx-pcU_^+Ru;C)P+Br%< zsd!NukB5g+5=TgKKPlfm8GLmJ^%TsRH&~l@_PoCo1WZB5_8z3>r2iPbXtBxbq1Q;0 zb+x#(BJ4M}t$kzHud5WrRtx1AD~KABzVNJCwZ251FZoUO<@Ee~41>p&gGm;6oNQH8 zRP5^LGI{mU-`%r4+eMOlwizD!A;KSb!V&qjp*e1nxu9=zu-Rhi=={1xh>XCC4G?9+ z0j$9GoT`H4%d69!(c^}%{IFeLJ+>MuaT^}2;&v;Yf1kJWb06BAT(1aV%DY-GaIrrc zE;Rt(T)*|sFUyDMKN48#L-fVxtn6UBvErnA;~rpzMSgH`s|ym%37{?G`Gqa}Juzbv zu>;Tuu%RddUbNDRw&UAQ7CJisbRJ#o6T0bP^ns2|kW+=1$_Pi#&!3r15S11tZU zmcVx;l_yxy_%4{X!4TNq9OqtySxUQi+$V1%4SYaMPCwl`PHhNygCv#wTX`*ahZgwb zF_|=?cf(AbZcI$X@RhA1s!pc-nMb`22jJg)P!!rHH_PhQlI@R?hB8+wms(HlNbXe0%JM=F~f(Djt+@ z8Iv>DwS0ff2oQe@gZTSl$be1Qy|=_Id*R}0>;QE*?#Lf?^7I?Ak!}Kp@>rJR(c4S( z0%>uE!Tbyfiuo}ah8`4w5T;y#wo4f=gA;nS7B>OetFEJ#z{R`QQPL^1n0No)2b(y@ zXpRE|jDy7!pbrD<(uiA8~I(uYp~#&xpX>?MX^M12Q^WSC? z@_L3HV5llxQOCWVcO+`)VNHw^Ksn66rVvh$>%CUe^(0-{yFrky9Gm@v51ciht#dFO zZxlUyY!>M@80KJ*&XTd$;1~A)D61K++(zHr*lI7jdDr#bqMiSfkyUJ({;AKard_vm z^8!Ll1TJrLhqKFt;i2Z|PW*)LOnoIa6aEi|LRJu}`K^2VY zI4np<(mFg3C+DEWG#w+=Xt`;9QEc${lBnUQAI)&jZ{S$!yP4>Nmt2@1tELkQ348oK^$w6duRTM7Es+6!K$=_{8>$BHG^M}DTG2$Nv1 zyo$Vgdr-%}f-SYj;Pab_rV8kkB{VLO2)k@VqDuTyOkF^a&*MIyJY;HznR09&q)*>x zUYC``M*T6)3s#Ek)tMx=n9FkTHqlen^ex{-2a9AbjoFNWFyY(iU#mPHE2CWClG5qu zdp`O;Yxk(OUB?9Y4Z5OYO|&7L-W~aAxzjD|a&!tNp55wM38x5efx|YaH$y*QId1nS z+6>(&TR+i7dGMJZT{A4z^F!(M)<%Zw!MHpD`;jGOj=Rulqvd<1`L*YrQe`W>y7HId z*LSuz+26HlM>JBkXP5P8RYsS+E8ku{|MB;@Ir=8DwD|KI%{OS#90`&LVIy1 z1q5tXNUg;Zx##cp_frmHnli(UDEVm_#tQ5egz1<~jMI{0tovH3c0bp8-(86OTzDa~ z&EJ_s^O9!gPI6Hh(WPDB%|J0F&|I*qkC!DLB4fwY>$8&HU^QCt;wGL;P4x|nx#7Ng z>m6d(=;c{3GD|(v8m@g3_ps9RWnN+_l0ESvO2SkMh272CD7xWOO}zb&@Av?p4TwzM z2Fb+UmicJSY`u>mR(7y+aIm|&Cf`50@zm3)lxs90QL3pCRL$rJF?_mTONuFR6nj9l z?&0QSdaB*GdHOkP6s3P?#@sL;-*y3Ep1v^#MH~O(+Eo<&W_sks)oOqtPtDhdIS-o7 zd zRXh+TLzli~9k7S|myzyEucv1}Y1yX1a9YtA^Y&JiPd=Q0ElA zLGpMW&}S0yilgc5i!92DN$*@^#dBj|B8|0698S^Ga4Rp8vaEhTT`!B8@3+TURklF7 z`10Py#^3Mf!sVmp1+H0@Rk(yHdEV=Pa7q@K-u0$wIdb>9Ve8gwfEQ&?kEU-79a-F0 zE7IOir8S=V-UIP;zDri)fvyMQa6?~#w3v2f4i7mB^hrH+$6!-J z(?TaFE_Zcq59jUJy*?n{M>TPJPbrcOw-`hm_tW&iR{7qS%x@g1`~d?@2mBXXu+frX zrnw~^L_Dwhr&fNFs3b_P$BFtmOGa-*TDOke4lyaZN3)qMb012#>6n-nauR>qPaOBj zk}Ul zspW(FP&JREu**(=xmu}BL%HgcM576v-5y0CIx5av+4zrQPq6ElPpq_ONXUWf4>SF+ zVpyK1Q23m&hr7qqfN>OnETiI`ECwN+s{~Jq*6cmvgKq2(O)&XVfr9~VQQ)EWJ7iy5 z+`cH^SzMf$Xe(PfqKw8z`PldYR&%Q!&kb%-^IC&C+RviDO5{F7d)Khn8L7CjsfcQ> z5P4;oihPdRUML}lld|P@v7wotszyf!Vm5TH%M)xm-)ULIlF5Zm3AEdzlmhD}wiOlC zs4@sJgD?_72bkZ!*U$3sc00fQ*Ck7d01KQZ#S#E^hQ|K+ymR)ob{C4+O{H8R(HeSd z?R6Xxx?iVC%~qm+FtFH;wKd#*Z}OJ)Ajd|P?#ztLHNkMI9~;iSsrl3&&95ax7nlbH z#*xpDwv);$31`+6X$G^}d=F=Kp4mk`^H$pO z%9&Sd<(qc7rd$K&tq^842}xo?zxAQc@sf zL?c1}$}|JGh?^iVeLno9#pJUc@tUFU;Na%I%qW%_V*;lwv09s0<3Rpt<`Ji^MRJ9_ zy1uJ#d3*Yuj^6~O$B^eyM=P@xd-(_i8Vr4dI7HWh19NfL+>P3NyAi;QXZOu@L`O&O zAP$p)5qz^ADm*yTK_>N%=Qf3g-@7CMGZRCD?cExA>w`B@r`35Bm-qG>|3bIH((RWT zSb&ncd;zmJ8y!m{#_fdJ=le4YvItvBOKdPSJB$EQRKB=uW3YuV%pHcJcUn;Ix}vg! z2I~R7#_A0gSc1k@*VmXsB|5a>N+Yp!*mMo@QK@mfWUcKq86x3_qvo0DF8$f5SP>AX z4J9K_zx%jssS8sN*fXd4HnD9&$%qn8l&C2`(*OCuyOdF}toH^Ffou)>S@jq8=4`d$ zubS?E6A1KRzz?!9Q7ef(uc`ml#VJ4?J#)sUK8G$*h*}WxxrZk;MBkBYC8JH8Tqw(~S&O zahz^q){~Vt-alkAg#;|yuWgz;F^{B{XkeBxn^e|K9|&LUYzrE?H_}?GS(qGtBE)X4 ze*-OJ1nHk`j>kMbcF$@mjSSGidfcr2urxkAbrA8rw6Bay8Rc#eQ|~|zrQXwCvz3l+ z6cQk>)&S?wS4d|ksaxm51vT8+QN<7^TuolXLc_|1Cdt%fLMUNORCJsQVN+6P@9%E0 z2B>_%%$XA#8R%B-<-4|x&xGK4_T2ovSY-1UHGac>uVu!^Li##`7{k%1f<@{9!=X?xj> zmb%ua2?;$WiQ_Zn@URd1Ns!WtjgDklwCmYUajk_JAuvMe;c?d&LKpfHS>W~ZUI52L z2@@V}h>r9^O}$QmZH@rwH|O2por5UNrMfIe65s(>7y$4H2NIadpZ3N11=F`;)@I@v z#xTC>x>%FbohTa-TTcoKx!orZ4(rlLUIU2WO`MKC49sfP5sdpr^bz^f0AH zFjJgouygQZ-qE{VO*vEhLvdg$Y;KkEZ5{PP&<-(lp?o$Bh5|m1YUio#P_}>;&J)~| zobWKGrO_Fb8CTrqKk!?ABRAmmszi=iIAXZ+WwdfgX;-?Wm2w zcM;d^ylc(ILLsS_D;Opi`)>7zMt9Q7lFHwDex4*W)e2>-S8wM|n>y~cn={{hn>m6( zT94ptEg50#0Y&hD4R}@dG;rvtxmyeS15t}RlTMkOAzLZ48XVD5grc{sCu`=?ookcW zZJ%dbJ+jHzN<^(VS#QQK!U{t*6BBL z9#zw!kuf}x+=I%bRO%e*3yNHIN;IC1U$!zfu_9$?)sE6v#F77BF+S+|9S#3Hwmbecpu= z5zGeh+H3gyva^_bMV;Sv-hd@y6poxG69fG=wTu5_Mq?YZ5ndbonlfZ~0Ly&GQFq|> z`t$u7U1f*1ZP05D75bfprl*y)dDn}Wnkflwu+3SLRDj1a>y*tcIQN^W>4LsGy^+-E zXWRuFh=QGmyJ#8kDRg(LPa|2;Uj?u4ni%x%q89-GP!PR$qT$9$W6QmBbs((2g~S1w z-c6{Hw9I7rNVD3}D7bi82>o4_epsunw)tR9JXn;|;(9p4%7YyonD{EM^*ul@ih#_b zNVQ>59`e9rB_|3Cn)o~z2eG*9lr)p4)0&ov#(WPJCG#fGn?~mIacU4xDTEKrB&|QKq?BO?zQ-0?&XSezadbwdJ*wbroA>{_=_>V28z)kQ&Y`yz6Nb$qSR*he&o_9K^K2_c(Q~co4=P>PXeVoZ&opKFR31@>M$l$8c?hsPVacg)}@U+-F3RnLGOVKP?&tfwa>aN6=v|P z@L?R+8qK+a5{&$5mWz4LoL1zp<>FnbB+fJyPgZkkT*F%@d)Ap1?VWN48CIbP_6F50 zmtuZpa|3Dtq*h2=+KM%CxgiG*%$6={6-pyk0s@x3=y{@5Ypc-Cqfb(EV3s;}h0x9D z;yHn*SwgGYr%Vcr=Yto%UT9F=o_jziVc4}pb3ag1*x6OxVtipMdn%ybm>1$kn?~)% z=}q^eXkcj;K9B?`14oRvzK32THE0u(2G)4-Itg*R((*_}6%dAO{Bwce4Ij_hi>!zy zVBC>Kn-qC4&1{w*i{`QHDrH8{2+8jFY=5OlA+xXZ^{_qN=Ee-wfg8F&LJxbd6)3w= z4uqC~h&uLs?EDrZ1Ups%S3=by93GsnFz!SF58TR$8s+St%%l-k^>!kvFG>1WKH6=k zTbPrk)n?K#35Gl|;MnQ4j=qA4=WwPXLeY%H@)Mpqa{!QGtl-rRr^ymc;b1XIIEn}( zsU$#X=SqkL!gF}eevZr7o3C~=Zy(Of`Qct;{Jf{&B@ZXLUlQ{V;Fkr)If%G5m6?aW zne6UFC%p8I~0Ja`N9Z;7A4CDx;76gYHlGu3)3`Ve09-~%+0 zjhW^zxc4y&-GUcmipE|94lSLg7Q0oryMc|<-d&>h^D}@F0RsbM1K_se&+~NYMn<7%d|vu_3^y`l%@Jkj~p0)121l8IJ0xX7U1~ur$IGHsT6ev2B&~9UleTln+KBuEDKJl zH!N0Xg;fsnb-TlJrb3~db&l#Hi;LFCh%GU8KI`(~fx@3jv2SQGwSOpvttEd~Y#QZ|o zITU`qrS6MD$tQ0MIYP2fH8dcc7z+^nHU7F$#lr{G(OV1e%n&HgJ#Ex>C(T>Ot=XJo z_m{H3dkRl3&5gQy#@zI)utP|NCq6ly6<9^%$~?8U!D7@})e3(%cm!s({|O(Tfh zYpt*9@D&470m~8qRAFHOWbBI8)A-{&BqqNKnAH3Aqo~#3gyHoQ`D=8 ze}Y|?n`<@T_|%oZ%AEO)55gMhI<--`sQ!!!4TYIXBB#Z>^Q>enDGhK+o+JXeFM@BU zCK(_Ta`*@{)A8P26XcMtzXODs7}H<>taZqL9GD4kdO>ym<2!&6cISkL2(JV^mq*yI z5YCM|lf@(?-jfVW`_3*QR}gFqMgUlFBaY^Ul|Q6;Qy!|2`btQI?l;-dEK-l(ldF~clno8)8*+_dZB-5=xhSURKTZ6r)fm){Z7s8r+s%m2(mI0NU)+y z=XLmG58$j^5y!WYCUUYBuN@c{Thz|efmlxAbVg8d)!bC08X^ery>w3Z6uKz0aD`zg zJa_;OpSp)#sbb(i<)M6;f)j28?OZTRsTZnGsbcu~0#BoR~eK?Va@?-^_$4SLgl zk#GE}I|Kv0tggCq1v(L*EkJJPa*|UNv-}W1x-X!u{>6=l7p8jzZv7pA`4nr1k~odz z=<^Edeblk@Msjc~)JS-$zhfGHF9F*O9$u+9o=jz`{?2!p31>WiY#3`}8{tc`Zlb6> z=ovD>a5o(=9uNDm5_OI7$-F0`St2**nyVbi)4$Zf@!-@g_utj57w`UVAS8;!Uye$p;Y&lTI;$0 z4d>+z?gOeqKhV*m@!eQ627Cd)=@amae$sgRxa!>+$6)?m5fKLHR)SxmsPYHxh`vv|8&|J~UukYBw+CjtNPw0{@jxE1Z z%@#^8%q(!Ko&*ZENO23;EbeX4PM>RL#Z6UFde zS;ifZ59Hl_!G#;HreYHvI#YxFm1H4q*H;NnMS}%Xo3c3K*MNlT-`*k~G?er7YX@rb zTw+x3f(e@8pgBnG#MRtL&QAR3)A>**ZZ3Ik&}%>t0gBa-U0gnQEQ_iyRP)fGzd6M6 z^#jYDHfGM2d#y!d|#5cj}Isc#Uy%Bg(rf{i0pp3%~B4HW0(=f8hpYD9eo^r;qUxCUBR9_xI_QJm0t(1_EiCxB zrR(+Tm_JpZG<2|HpILv#18$>LufyY^_+k+S+7$7LG$`U|07aiD5RRrTnLY~PQJTiw zOyT+5MfG-gvPmY~J%;XjiL`}3@x8r^r5iJ~qT+iv5}}i=t;M5@++=+JffJ73nlm9G zY15<0GdG$%qdK1HA%=Rb>w{Cw2kl|o~Hlyjv)P6HdI%W%eVcpZY@I&ea1sKCi)SkmBK5^?={%A7GZFX!`?+|r zndd2&`_8em{L_Q*Mlqs(zwKOZc|)@18#nXS+bLm3w=)KYuFFqfAJH<89j%bujM<;3 zT7`GqvhFvu;#9sp8{Z2vB8sdJ3~YlTBSQ2QmLOUMd_6G>v1m@d3MkLT692bGakkQ| zi{MgH)b=5-Sv<~N;oYwJjK7^dc(}d2BNM=(xI3OP9InT>3TO z*J9SN?w)l%RCS!BtMejEE$8m;j*|={W;<_43*E)W!D4k~mvddHLO&He{>LA{z);w* z>fJ`1&!=8Zz`OS9XOyHE$ZwSu!tA|fIFP##_ zY7XYzsR7MjtD*?Im9Gn zuKwArVQ!k%Z`KuI9azAk)ym?qk?@TVI_v6$EusZ-ZB-rIJP zRSm-LOY)+xHKO`5J@Z(1Qc>^*3G0!z5DknA`i7XsA=cyY@_zxG(_TcTLM)uT%6s2V zFsE6^PA8*qum{w&O45UA*2z!-WCSc=G56sn8`7!G47l&;g=WRC6mOZ^JdF`KU*E6c zUN0YyMXxqjD|GGYWj0Y8Qn8 zF5gfy0#Y&7n+B4~&=B=dezwK#g*JM=oF$0`>?V-2^8WLg#$${q1GJJRU?mz89@@B@ z{bwy|6f&)xUAyzZui(Yq!FtSy-D}7xw6=q~w1m}TcwZ|<7#SVQ?R=TOOZ;AFRn>}v z>;6RKr)8<0AI9rj&#?n?$=k9Gdl_okQjU+sd6TPIm#|flAK(_&CN)&CX3i zwDiY!6mdo+^__TfRvl0O>6C3g0m_IyS5Pw<0APtVcPKn4jXtn0d34UuFG=fI5+9z% zgTvSwy+o>ASdN^gPa6yK5gi{+((t8Almg}HMwaW-<*D8fTJhEI$*Z=OFe!p)_!lN2 zo(7c|+TAmK(3p_1OaW*sr>Mxl1OkzzxbzPfNR#*;ILz$frMt94-vxZ;k1oW`k_p8$ z*Tvg&e!eptDkf3F({nhz3g)ruelMglh*)>Yl%#IjZ}L=DSunMI1wPBXeFhy6#{C`n zN5pEd-orMQc-399sYf;F&6}C;+G!d%5)dp5D;^Pw3D+acsObqXU~zz+_>Z+hN-2>X zPC__HfWlIM$sIF|-U?K{zCQ~s3Y#S5-!rg-cL%;47U!p`;se1*IX96A`?@1c_`iCH z^8Stw(oA%AKCw-L*jo>PhrUg~#=K^H+Dl%c+cIPSLPu*w?Jp|q5P<6YzZGFi;SFpb zI))j`f4s&F4mYV4RT|oxR`o|71xEUnP|JSJ9R>%#q6DC#;0aJ3u00?1kZc{T)VNj7 zC?OtUI0M1?Zzk+No8{x62;6L!zC}mwmCo16D`&#bg7L%v9}=8cpVof*uJy~iH51WBC1>sPh#`JaT2jGMoD4#lH~ozpQYoibU%t)@fFfEb|RJN?+H;k^=TpOI*B* zD&=32+l0~;xech`ftPo@aD&iQ z6JZ~UhnJ%<(1GCBDN1SA75W{m^83G?~t?ZEhgpV71DLY37l(P_GU zu+Y;V7jitw-%5s=ZZ3i(NK0^i!#1T=$gzNNNeVy`ab*X^#m>7o=Ur8Pcn^`sisi*W zS3cuhVeP&?OW3lof9;NC8WHM|KVF6fFWUDhl2{bh4Muc6UrM`t((P(>lRn5HP?WIZ zIq=_F>0n_f*nPM4(jA|7$bFQbN^ZeTerZa}PRahSM{bh19yJ(>$94X9t2iBAlI$vG z=wSdW;cCSA%xuLxZVD?T-chf1U9hme>l4CTfpD+bBAiE)55R$(0Jz{#kyySLR!8i_ zgZy7ojx+OeQMAW4pA0PD{i!PUmq&i-9Mx+=wie_PLPiu=^2CP$2k)-$zz?rH-%7m; z;L{w(7!MRRu!Kt0=uwR2>*eKoUctEJ_Q#2^)VIC^pnCwg{w$}CKC^5Ni~ipSd*?2m zam<+MogI0jpCl1P2fB-GJpHIn3rXzt7C92Iy2~z-M4)%P;WVH3gN!hd$=nztu)% zq(LTKPoNm5hu^5D9hy=U7f(?Ehq8k%5`S5zxMB14?1W=OYgHbX?}h4GwP)ZOTVXJx z-~v9tEkXk#cWh^q_ML1Vara0QbRVjP+nfr^YlXol%HdU!>(Lytg$wy3)Or^8rrJz9 z_YU941*c?Zb>%?AKYe3W#tj^}8`(De>=S-*POSxGx=GV@J7eT~-b^Ohp{;n*d zb9*(YYIA_uRRTBSKg*Jd=5;RhGV0dmQ*^p-H@;FElz-8uRl;ICpM#?1f3;62r6sad zvEFYgsBTT3JQp}lEr)A!{r-ym4@9g@H5z5S9w{muVEfAre_1$gdj|4ji>_oM-~44#^1lZ|vGFy39`{$t{;IPR z)8-UK)huH{hudkhwhWYg5B`qYFn_r`78#4-8(}aA{Tpz?kLY(8eKEQ!{d!6Nkk^Hd z7EEld@n#Vh%+?74S*!ire#q0X{z0;rp``0pb2GgCLe^ z6<#>h6@h-T_~qg4JFF$8_buSxIctBesmLYX9qommlS4)fm139T7)1~Ompg&gwaXL5 zlIh0DjoXkm8JWGKom;v69prRn>)^v9>=@<6rY{#iwNanUj&Ig>jt%eDI?Og4LPl-4 zhtHM?@7g~TWp%z++7p>66ZcVgGjIucl(3M`9e-sBvxt`?V!!18i7tZX3FRxW!5C!& zeej%UJp48cEtQgijL1M4DjEuP@Y7P)$Wrp!B$Ie`OcC;eBiuNi>vlAzPwkU$?^tPB zU#YRZvN3AyGeNeLEX{D$LH4w?5UTI{=I4p=5%!nFE#Tt?Flnj4KR5yZ~ezueobN!xoE%w@iu zpR)X6vU-0?&Yvz=xK*7%a}Et^G}l(_rie>}N`I7*wv+0#pr^qWehonNp#NgJ-2Y<) zwraI{e=Vy2;D_oPv*tSfRBSqV5-7##01VW3vvAHQRFSXoNYB4UX^;3~dM77&?8+k7 zhgZuxlTO+0Pk#d1jmmDF@!FAJX;%id7K(!FNsU-z)KW6WE}4(E%Oj0fc1BtKv)-XT z+EvXG83#AtpU0(+T4PJD%mIVD|9wLiDts3*W#s0)_LQ`EBI`QRk-|H=k9?I?m;XXu z!NS2ma3#_CG6=$}JFO-JU|blq7OWQa;4*^pWqND&yK`$Q56*x5*pm%La<1MdF1HUM7B|mk z1|jnUu2c?ZJ}N9wfdCd#O<$MFMEw31T=b60A^rMKvve9$wk4jQ>BYq82r5Z81u{IO zcVC<{Vt#$x+;qyC%IZ)occSnzGlsje zez{T2L+i(U*V?T^E?>v-d`od-GKThVZWV{v8Uvb;=am)e70HdSYl(jAaDRW-~r6fc~=}5_Kbnq|@-1e-XOS1gz-30#kK?7G>nS1RliU z4p~7aC{?4J{|O^1_np<%&zzi@>?HzjE4NB9bVkA5wa#Pm3(`a5)&|zZhtlfJYV)Uz z`!Rh;-Pq2s0>pPh-_!iMe`mrGn_c+nWJTZ5ba=~REc7y?2AuXNBJz}HTlpd=BimyC z^M}w3sqs5ql{TMXl9!c}Bge{OZ3olp7xkN24?Wgqy=U!7q0<$-20xa5z2DdG@ z3h~1B>lFSEcR%#O1gdM5m?;+_{8a(3!!HjJF(y_lgvfFjPQ%O& zR~paFG@oLTfX}QTn9c4}mRDGC*-mEknreF?IbTyXQ>rv=q7b}Ihh4AgB|k0=ejNAg z=ODcw6L@LgWIjrh@xPksU3+8*86><9T-}y_oU-gk&&dB3hhAATw|ha_`Z42Tf!Q+R zT|<>?v&XOFo!kEOH;{BgA#o$W!H<6vCK*aM(=I}1AVuPqTE2fo^bXWhKQ#}9B$6Lsk z6a_f8)>AIq-$m3v9*OQw>Q)4nq)(7tRu{4W?_mG;z5MVTRoiEumB)Hw3b4snu|e7+ zAHr3~`PhyZSVIp8cjIxuGkX)kB47}~+6IE)qZR4{3#?Q8!;UpL0!Hn3nUKAPdDP*9 z7yP;@=T9qpF#-~4h;|aI*1iO8&MWsuJ?n>8Jj)PBD;aQfOjKBbgy+nJ;cs2p()Ch#(7x3d7E)+Rp~P@$i7kKY@?Z#_FI}6PR9mH8*r~ZeI@sjpbADhLdfJ z!w~NyXrT_o%t!i;NT-0z2MRK%DudhH(60hZM0p$=ci8%dX}>Wsqduda8kj{l{+$&IwGw8qt!wlfAaN|#CPpI3#e znGC^~3ZF|a5?bbb7ZXC)F#ypjl>*Pjl;i^~al8aLG|9w3w2ynO?5QVjNZ0v(0Z6L9 zaM-QsXrixyJx}o1p$j!R(MO(M_I^>qTrjI7^2RwHG`kHZ}<;c3rIU7 zWsCCW05%1@s3qLLqF5)t+tO=5vHxM zt(+fz6-T!bjO@I#QC?pBOINI9sT8($pjV{Qgs^mFwWs z9evwC-$8k^VtJ_5EUD$90+#7!RGV5e{IB)LI4{rES#%XTsVPKxnbEPqpJS2kVyH&4 zi;{}LJWwK+GU?`6;3UrPmw;6xV=xy-5I%7Z=ZTUMIe{-=FPG0&=N%IZT;+t@=r{?Vt;GhCH!)bu5RYWW6KkpDs zLkYN&{i_oA@kyz@*c@?{98q(nqrAntY&6N@X2^0&ijf~L#Ec%HnfbAGCB zpV8YIA(8>LM)VseK8)xug?vywV7o8|`F@f7)N|K=U-%;6=686qwkE`{_B`eJ>1(wR z*D{+++%vH*rPvdmB;b`1UJ(A)8q15GxIAiDPc(_m(Gg5xiUOhSX&si+gJ70Tsc|II`{ zVMm*h8oh{L>Fbe?4J$-RKTn=^V!2eo{|B1LcR-D)t+2G=Sv9s(-0XBjnLm%ie0h(s zw{P(LtD9m#0&yN@EN)TWVf2G64k-+08ImRGz-Mc6AKSDoQ|i&4 zc-;T4cVVHFp2fak3>|l8zP^qpgci|qnMtVuUz z^rAADY&*}H$Rz$G%;w-j|1Uy6voxFXJZYJ~%*+ybo-&9@+OH7s8+v(PMkW9ob~J0w zr2bQyN(9&UXYm<5_~ie3B3?{)UH=81ulOrI0007H#6`b29gc1dX=GYGXDJxixMJl5 zVyxF}f$!z~!i>3dlffnPMEU46(Sh)~G+aoyjs!>?h?|VKU4wchAY>p!!aAkTcn79j z1aq+zH+WGE)JbgkZA-55e#cS4Qv%}Y7Jf@dxFG(=#p$18Mt7M5j~ic8z69B_j+L!f zFBEEOOorFBYq-nd|2iYKePX*iJ`C3n_)Y2Ea#ir*rKiQzv*Uh-|5jLf-Fwz|r7)6O zNs%f@*nI-RvN&fUL79ytYtG(2Y$Zj6%E1hj-&@wm03`y+U^H|U^l-V4K?E(57XT-c zxbXg%G+a(wybQP7ls4@Wl9a`Nf=mRwba@PI5x1qGtRe1|77p2pz$W7Ia=)nH0;?2-6`_(7cQEi$sOAu?GL2i;Zop# zNTciey1c_OAwuTSOo&cooJW=&4{O`z3k!8RryH;-qburGe;TEtqJoDYOA!GMkc*w) z;o2SU#Y=S2iK7Znt>2=R0xO^|PE10E2u{`wmLB~5apc|Pw^PCyiLw@z&wT!rf4eSc z0MLF~PRJ;?7J45(Rr?_2Lq^;}SR{iRaUf~%7$5Lw!z+oZ{}a*VLVJ9UTf_bYaCdP6 zDul9pMir&Qks--Uz%i`Tu#`Qc#r0n*`nuk8*A^bN-j zA1S4t`C`sLg?WH`(m3E%XT7q9Tc!4__?Rq~q|#_pu5zwUufjoO*@CY+BLqZhv{(E0 z9bQz&#>J7;$^Ja!kP>YQ={)v^>=8&d5pIiqB>;>JTS0)_^hz!85(knInfQ*K0EOS2 zN@T<^c5PEA0mIr`3+nEcMuHd7s$!g9YM39O*Ir(!ELE72`gMjcL2B&Lr7YiM@(B!X z6VVzxH+5CpFXx`zDG!cYy=OYKf3v-Q_wCRQ>~T5M7dHw*-%yutnCX4y8DM+UCZPul zXlvES5sA#>UD*wa#8?On5_c*f(G5HQ`#)Z~#%o=|yXH1oje#c(9);U@-ot$8hyu&7 zS0M!O5E0$fefA-MSwQy8bNG3b<6?V0<;d;*2IA+Pf9&(}uyqH&r`P)ZeRM7ViwVJe zQ`R&wQ2ApOe4G`c&5QrRqsYafK{5GpM4*G_?2+9T-hk6A9SHDzsI?X}E*M)20-z&p zy+~fqUi{iE&s)x3zOYbZx;teS`Sm;?6AcE$mfqGi!(eo0tQT&rwhOkk&mM6<_h*8I zd_UE!dv~nEbE9;I`ExsTwsg3iWb@oNox7<>-90ZD;~oDU8T<()C+`OGI&-(~>V^=Q^%H@d-c8q6!%53VLyrIl=Bb8jupXtNpUK z*W6a$WR6Glw2JU%*XO){e?12N!XIS%V=t=>VG}FcD7|#r-9_wEevU^#)KllC@imr_ z#+P^8)QR?S8AEQ;KZf;tI{5o5XZm%KuNss1PNLm9t zt$z6QOBDv6U{}8fq1Qa)emzbpV7^5Rg7TFrStJ3`nG&S5>q%n{IL5ofRpL-v&`@Fg z76l`5hn=jiz!#Q3b1QfU-JGUv+V|vkn3Dm3@Zk+x#_iu{h*uwhoWjCID3qhe$7_f+ zM*p|mZd5nV-$c)HnL1yUiuU;DLXL0e9r3}^2E@eleuE()}aq@)`Q zme0<=s~I^EWWw*XA(c5|+Rk6>M-5mME?c-By^8!;0y~m&2%y15O}bEDs^&On`;X#- z@Qk+u^~28l!Z}F9Mu#SLw?9GeBg9juN|Qon?0lgC*zg?B%}?&uDFx*>NS_)?G>oKH zssWD=^TeGK8eS_WfL@}-U|j|2zhSQQd{*w|-oq)^e9?OJ)_JyGq_E@@ROXg2^gj*@ zzi*WLZsN>?VsQ?o*VB~oj}6jW7)?Z@y@7-5Wx9@)D@x?fj6v9xbpW))M>S_SUAG(d z)iQ2B(sNQ^D;cJ<9ltr7g{h?%61H&w7pW45&w~5|_};fr+ve}j8u}G}*3&54?u>r( zMIBX~uL|G-?BWM1>GooWPyf087%f9Tnwz*1>5;3wA)g=rpT3%!*>1r9Kuci`%m(P=Bl*$D}ADIM;p%lAq*5CC&u(bca7?OX-}3s zW?f-re*fu)hs!>*0_@ZM0@*Uw^$76j%g=)|xLG><7ii{o)kMvPN^-cEqr)J4?jFS{ zvYa8a?252m$fnYQqkTEB9Mm+DEGh zY6$b(yQDJ>9sqCv+B8aZC-|ef?MrT2G=G6|nDI?Cwr6>1UY)Mj3E`n8Xif1p1QBwe z`>E45r@OhpsSS^)(bv^Xh(EZYmpQE~DFN3iBbWo%x%CuEDF`ZE*T}WB<)$5V{W}&O z{X6znM?&u)IPm5v{`!fU{4x6q*`4;rMY4>d%dq80X{oLI@gV7lX0MGEL^{J)$iWl2 z<)6j$XAR1z-%D-Um1|vK0L@i0+65@?WOph1MIE=hv)i9CCW;)G^OaRTs^ z1-4pu5pC`DO*qz&# z6zWP+cS1P0l)S+2%tPG*S>)JC1fa{ZP9cOwApk(>2chNrtKT4OzD_|cL?q}6GRsaj z6p0WT=@gh=3s=p}DOlHpIoZ4!6lWGJ+{vu(qy3+S+K=+Rx9JnpKgYjVELapmssN?_ zFEY1;N`4Z}N^H6&V<`SL2A8!F6;RD!b_WrJ=*7K+r;V)gnx%}3c>ua{p$kFj2%zy zQ27q{ul?T*lJ56LT*weR^PRcmzYLMu$7}YLxIOxI?d%*w@|LrP8ayHAp zYr{7qMo242*WKfg#$d<*GI;snswbW~CZ3FrlAnh$(^5|#o45BK@BicADYDAl@2bYZ z>cQRA-u{g(S>?nh1reGkJU)UUWnOFL_1eFG&lk&hfP?sj8bGI<2w?(`2)+m-x%@b^ z-s`JT-0s5No8uoOwB$HUfD^7e{b*gQZf^CvUo(qjua{+LHW`B^q!|El0k_%(U0(4; z1*TFw0Wk*`lr={Mv{L%FUY=KE7MquUZkco@QKFmJRQ{C7H~`#VGrZavb7CVycZT4$ zZiW;c_jOI_tQ!&jL_!Z13lNdPT)sgTX=G&_c4>QV3-{|kDD;N;fc2^l{3GcQv$C|Y z@XYr^ebRxuap88ae~R86{6KkjERx!)wM{FOAak#MSXnl*NR;p%;MVPr2GT!xGBMCS zBqZAK7yxTC_e{8&T6uOe;C0p);n>nwM>vH{G`1r3V;3)hc1NSTc zIor@zc%a)=L`eyO%X8&eQz?eCNkS706Z0@XLw7m?UA&#t^3KJ4=9xHzrU0;6xmJ~3 zyDo{Gpdl;aRwttKlf?8yo_FCK)F6>bNF@R4KT*aydrQrSinsTZf|qL~q1jfSU|)d$ zZ=2~DJUe6-meT4%AXS00V-wBdOiZ zuk#ZU>Y<qmi{Z&0vWzRWzLhK7%?%4PYn^ZB+w2}%%2W8Cj|_jg?Ib$!Xy|L@pDU6s#ZRB1 z$e^K_0qjawQ?`mS5^!_*ibygT%!Z3b(i*F{K}N2&A)H02#n!Hm!>i17jPi3fTh(FG zdCdqCp5|WP;D%NQV|>EQR}1&1qR(@Qt1@RS-?6}gFU%dQBfrs%o6BQmgdb1lG|}2y z?)i^uhO`t!!8FN;ef`Oi30J0EER7AVL}chJdA5&P#s__YB~U$0^%D^PizCO((K`M? zTFX{%)%fGpPR}2074Ll45>~@s1pJMY%{Y|c=p!|!>^Pv4L}{I7@(DWR|1JWwmy7L( zE^iJhcGgEvzNH8;WEKx+0w7kSI=73?YCBgH9(p5VtFrYne0X;N7^*DA6SX)BE&o;` zr6t7OSxx@_owW#iGHC^y^1JFxKM!$?SxWDq-_$Z`u6HlhsK`CShv0u14A6hm+2m7T z@^$4&ql9qoYy0CC%hAKkP(_G6kNp9wr%B^lY)WQnT!t`9@3XZ#u9QI^I$SN2K6r4l zX5|DgLfxtZ0h<5~sZ21`q`?4Rp@Y`?8c~47_w5D*zS-~0MEow&fw*%T!9oLlqoVs(OFk|M?L?NMD=2{C4@gD;BwT#? zDt24++(8bhyg)7NvI2T#g5e>8yAi02*{6mIIakccdrRwOZ^^5DV`sdQ^|>1ihynW- z24E)zue#tRn>@G1_VEIxXiO<3(Yb3_QHQ(QnS z!VG`7ak?{MDX@y+7mJ{up@UWHyxl`vAW{ z7%662x?)lEkNZz`hK*X?MlA$OuErg)up6y)3`bFYG||_kTD3TKwFk&nf@J}^4O}GF zTAcpQ%|-`B7sv@Gmu}YNYw&4gUKcKe+4p1J&)xC6L8C7!5b>r#z?Ly#9>2Z```_^}2$hYd3?9UIJzOivX#~#-B z0UafH7!ZXW%}xF;t>c(09Q^7hS|GcV^Cn4sbRnV_PK#R}6#^YXEXee}qO`)}`qk0C zoz%@=;JCE;I))1^`5Xr~J^RJDM%L%yZ+_IOYyBk&&0tB_`{=9+Prz+ zh`VM&7wQz?4Hb| zI=lOb8u*J?Fp~(B8SET2@3QlH;%_=nx?g0bxnh(5&|u#YMqhW_*V0`YSsrpf$oo&{yO!v{=>4q&ZO?kP!d&eb*PA}LN==a;3b?LZwvNwNl38d_200TWDM4RMA7fE`3P3mYG1%fH%73-maELa97DKC%0>w zXwz!oH9sbIBsST}Ko7TxgU+0OZM`StJWL|<=$b*Wn`MbM%o$auzPfM_i&hCP4Na%V zMhF=PNgbI(Y|C6ZeA(#dK67Ai7w+mOqRBo5)a2YWJiyTV-ByAoFuXDGk=yuZ z4zok5dzF+@CQ_GNX^Ti7pf9NabS6#wptAzFaFogkuu3f6uma96cN_6!cQxqRqcgjI z{27#poN&VuQfwqq7aa4Kcyj73a9Hx2f;DZGWV4yB<<8KWdrGmjk0XgVbF@7*7~=3- z>CZa$KP{UsZ+fFNQR-%E102q&T1iybZj_EbN`LtOsJVw^4^UD`}9RP>v?Cr zV}1t;hc+~FN%Zemh7YbVpUZh!^e%W=ieX^{%6WTpkj7xCnew=&XIo#| zD`O&6)Fz-rP+}Jz0fX8NHBO?1-yU#B6R-8<;19PB#i4w&&kw=kk6;>k|3o)O^j z==dJBA^NeHF=f*k#@o*SB+ll->4D~@c~E%%=TjPNvX0R@d!OS;0T7e}B~oS|B(@Bt-Ftb$bN-loAOKO(*17hVzT|90cF&m+vlI;ASj(9tw|1>LrQdRp|y z_pc?-*^m-VS*&1_dFU1_dp$P-YecOO8+jr0T)63);(rEG$j<3lZMi?jV&!i?d@U(j zWc;B>)Eb#%b(EgK({`E>YaOvCn2FGTaYCVQ6KneQPPH6%XG_yvXE7>X7FQKnr=b5R zw61-2-zCZWQ=tXX^DGK>rPVn2u91Tx&WvZjNyRnl$uIE8j^EGuoK6n=PEw--%WwL| z*fc9)T?bdqbiXXjVUASGD<`85U7{?Ti18_i9i}$b)YJ=N(f>in^C?(144hjb?UMKk z4WdXsQ;5Nsn}%Q&hur{VNg!az$rgMrn{()ssj?)Ea2nN>Kk?8Gq^5%@q#LxS{Cy?i zWkpD_naGGX!zB{q)>zT!R8)!83*hTz6Ph&G2V}82QrMLBYED15+m^%=7ud$9PjUD%jF2m+I({jvU0n;VXB*<#kS06oK%I1Q-|V*Tc|EsKE9JgEz^H?%%?~o1eICiB zJAZ<|m>DeEoY_q4x*YlxqHw0--)8MqyHzihJY(ebx9=lh>&VUvz296HqRez=CN1Z%=wg+7B)rI+Li2|V{M*k z6Rr7e@LU(-1p~?}Ya=a@0BZSF2Pmj|L{tcTMJNZd{DdnB@~p?dswp}2;^LnGN7`2| zUo)$+O!tfiy+Rb~zi}sTKQjycn@w(9{k1gcIu)p8p(f8t-A(I9m|n^I z5L!(CD5`?JbTPN31b5JE`hunCAn(7D)=5GJt~{)qAv%+t{i8_z+i6-VA33^+2gl#* z2V-sis}8TlM)|wHvZMc%8r(a;GlU;K2|0~kc5yDVAUmr#t|@2Po4suuK%i@!D?f3N zs~nIdm)`s+`Zwno3tQG^zkFp(M|-TIlK85UvYxgR<2>eZ)B~v`2Wo;w%Wf9<%)|5a zWNJ{~X}HA6NntcUPit_QV5(l>hPsd_*$8q{{ug~v}s`&&?@ z_LNAv)0|wScrYaGz-bH`IRNKPw_v@SUmd0VaVH?LVL3j*Q9%2^4K?I6ElP0LHAxS< zSURVY63&a|6C}Wk-OaihS2@cJc1S6d8HdHirHE26*-&|WacD$XJ6ElBBi8A;I zL8zS%R{f`sRHI1S{u7Il8l_J4@2VDWie>ipP^s1boxqgHu^7&5Lk{uNQx3 z@r$DOxpoqk*?85^C;u}L>0Qq#Lg<|?f`9YZ;F~CM z;VpguS6o8gw7B~2;;d*@aSmFSD(JP-k@7!S*2k|g0QR{)`S3(tY5f$>L0E2fA*5CW ze;en+O3f{e74(J`Jq$djcnAgB*X3KI{4{B{j;i+Nugj_W`oT_)QhL_Q^q)hr!iXcp z^0UGaT}j;N5J#2DU`3qi&}8*~0;k6>^xu1*z4Z%$OjMEYIX`j8e#Az$qO)mosOjpd z&Tm6zZe-I3(u3zP{6w$AECa*)NA*0m^Q13F(h+(XW?qla)h3g8e;5M07=68amOC3| zC!e&f=ATBn3ogxTErGDfe3mGF0{5t3a*2)D)W)&clUtn@kq{A~{$H z_#g0jg2Sia$0(}|_YyAr=JGKDa8G{w1F@fn0l`u3GHE|G1_c2Bv5w|Lr998hVkAnq zpl&w&UW`cw4tB_C7FhTM1*|lG-n>A7JPZ$@CKSA=B1JQchmXy;ghzqJ$qI zwdXvItcsmVbp8sz9HiWN#Pbi)DoM!C0HfeO{=wHMmX1o*Tith5pU3VaiK9K*^$ar7 zuWI5=A|>xC16xA>i$Fc~^4}j?p*@^NBN{gNkEi)eEcNktdsI+SdO$9KbSjm!GA-;7 zOoaqJmvBl8yURK7h`W(x~CVRlEW+l4X6YZ zMDn0Cz!x;{Dcaxln)>dpSR}3&Au;5uSW2rLtSN>lXS;mG$KnXQD|ks|(?6A;1ef1) zC4>`|O2Bxb;9vhCp+2-aXB|L)b_P5j_CcC{%R(gsi}m)7n2+rIZkGM4PN5LLxros( zG=sn=ie)UKC}17k>ln?d%inSRs?X5NH0=#Jsq1dABz!U&HxBER7ME41>#VnQ3*&$_ zO}a5ZR#GONCn7WTt8Bn|uWGZhk9Dd%cx#r(ukwXz>^d5U1QR+OAakm;+5EnZv+$*3 zC{?$r-NU}abnZbQ_+Bu&%Pl|bGbRW9ZmbOhA_Mr1?HcQ;ykJ8ufEb0nrcep?DdGQnEcZlc*1;YH5Mjy`dg!)4JBGf zPQHG8UI2B5-2QHc z`zNDxisQNPmc<5shl=831K;^;-qb?`Hsk&O>YEIvDp?QXXkw~RU3WaS_}U%bROzvU z?Sk@VfDZJTtXO4Dp7q?8VO+ywz<$`%JjHd(Af!C+V;w6;8b=Lr?@^V;v^;)t($E!j zs?9V#c7>yh0KUm%hd8820yAjp+y=<~#cXxpT7tQNWo@~i^X!P|n@@Z&T&C5L{@bUyH`M$ST*3?;g6UOJBso<03%|qR zuVnoQFkY2>09xRlCwLy{riL{fLS-OjF7A(sIU7ybZCMmsZLnn6zIpSkkgLVeIf3$e zoL~3mA*^ZWN~;MyF|$(ZD~}(@0EE++QFpQ{I7?^}O&2WxfIMhENr~w`uLQ|jVWXmY z@%Bh$tDX+XdJ>S+eL?BQ?q|2d5YcevJ0~kF%sZonnYw4h z5K96UOku;d(np8>r`n_aYti$$2PX3@>v;^CmPPH@-@qgI|D#!3*4JB{Zu-)*FRig{ z-xk}qTYC~E;2hJG(e-dTzkT#RX?_gbBPlzggYXdE9#v%v`E*`ARnCXk*z1 zA)6d+cknd-m_(9%?ep>53Ag4ASkte5i6Pk82NoopSd)p94-8jX*FWJWyCDEjsx^&eW;1n2}8{kF(BN%!4(~PR(XJ?ico;nZ>7? z^XX&_@ZXZr&jJW7Su()D3tb?mN5^pc*^;K|8STf%^{Kb`-{sRd^M?FMGYz!-wz*wc zf2L%&J9FfIOsO^Pr#PjtI)GD*l2iv^F)cN2k{~73`gpIIhx`1$Ax?_z=uH%OFj8%* zjn-p&%O?uEtOL$^N9WILtt^kOK5s>he_-Z=Px0T#^RKr#cRUOSYYN$F9y|e+mUG^nz7?_eT5=1stE&l}m4NymL!_o*lma)3a@$ zss6P79*0OC0FNmXlqWjLS-Y^nd&Anzx$3gKeZ<%@;@Z$5Fz$RVblrdI+;K1Ts(^Q#jeT&q)O7`gTG>E|J*1^FFWzM z;xzSKT-!v{SUbd~gu?3AScl6k^>oEw$ck$%)|XP-%7&uA&aaaQ`Gl^V`2xM*Qs58f z+`0Wt)Q98l^G7Zn5+M#9D*AoSU4E*If|3{KUty`yX6CI_7m zL!b7(16z6PB$8EGz=62~U$gG{w{N`4H{h6?g%L)1Dw1=_YdH590};+3fP&h7!b^mX zl7&>&n;ubJ;1}Vi?d8kT)~eLetXcZ!j}{;b`dCsEy@d%WFnF_nvlOk`qW{4;?%QN! zEdCn!KH^D4VtM|IIQP!a&Hi0(UMZ4~Lx(UFyGq|yvA%R6*d0y|GzL@iOx0Lp`g@7?=t zvw_3aQrW2JbDHhT^i|%LVH{nl^tOy5vlC|VT8>e)HIm)kK9ykHwn{39cTvlm>Q*RR z!*rxkJxA$|g>pqttty#xo%)H4X3vDnkL=L>42Led1|M9>>JHTep?ee|#K`z&V}5SK zEsjS)Ez;T#jM+(^iFXPs^4g@4N)Jp12;%0W#$|qsA~IQs51cw|M>;&jvQd1)23#I{0KFZHW@l?^w{KaK5FiZ>7+iU(3Bjw#*Ibx*zGlF z<-NM!2~nw2&rT9c4A7_?;X!mFyK(pi1SSOO6?H>z&CJIKD3a;=vw0d1!_jcxeL}qs z92T~eF7Ij6<`+uG1GLd^i|Mi-Yo)Orzhs*Xv(R0779~7m?(dc5=w=p@egSQbZXwCWqGK`f=uwG6jX+3@ z#}9i8F@eWY4F;A~9c4T9)1>W@Vrgn8elus@YMr$RMU*bN(Gf*d)M(s`@^*anIVL$O zOrPAaT}ArV+Z{tM_7@87tM_8<9~~IXE|^nMKD$M_^fjy;&NyO;D6o>dUlBC)>r;~Q z+cOph7Zbx)e|gA(Nr|QFko9RyDFaNeBf7Z{B}TCowceV;cb`^S)L5#2H1W)2W1wMH ze@gzr9$jD}9vim6j7>dC`Z%yn#~HK@$9^r2yD|14xAL=+L0+mJ+fP^Wgg=A3<;x>F zZqSli%nx+G2z}h0XqiLP<{!F3EmhfVf>gNby$x|!Y1}g5pA&o5*$v9IB2*jnZss<59P$L5pz9Yu8xexYnv`K!lg@_~+6uf9XQHOluT#BYspcm!~ug zSuC)b<;RYPlqfvBvHs-k<>Xd0#K^%r1wB%MxLa!0 z=CI5Z3?bIg030L~dKuaej=ZkKpgMzVr|bQ)t&TuIsyl%Gpb-tBd-No?gzH z9I7kjD~IH&Dp^|MD;<>k4#l6TGWWZ*2>foS4BV) z$>_!%iYLM-sni>nFI-pDk0=IyWC#gJmfQ}(im9}hgpwlorEH_bli*Hym95&MWCuB% z8_=|L@0jc#+z1KG}~!$5Wv2d zBXC!4t=H&r+0k&~?d*fXoW- zrQ0i3fwuWF$HrN=n@SKefXrx~cw%H(I7tb6JEfnY#eM6`Z8jF+=?;?^gk*Er7|pW|##1t|Ip_z1P_$Wi?&+dkUlc>iCZB`XHP zv;p`zIuo=AQN{>R^bmijlY{8d7TN7LX$dUVQG=?|!mk6N1W*FY-3mHAok^pa&Dix;q?wSeq^Y4UWMDW5cgnJ}s8pCYQf_q7mzM zK)avo&#tFu9t5Gv$JqRG45wN)0hWBSK%(TyUt!WtgvBg3`j5_uHPC18yu)_6ti$*A zn40ExMjwudn4#t*>T$sY{8E{VH6#w2w{E#}aaU--K(pOh!qMZic!e66Nfw7zG^x?U zq3V-A_P%la^3qIkvJAbn>Nh&hNTygg_CDS~x@A)M=;3B>^*W!BYTbl1{{0lL>icl* zN7e4a-j%UoNfRwos@W%nS4>@h6K75Q6qZ`25HP!}AFdpHh{@-Fxn8Oslrxx#40m6t!j#p;HK#t+45%>efL8CZU{paFD?#yQuZ}Hf=ODD3`Zm` znOxR2VNlDReHS8_y|=NZR$@^rZ8f5A-KIZb3@RE0ZdHL*Lj+vFf^f9ky6=3=+t}B3 z40ufWKW{BiyuLPD5Hx@rf*@In`s!NWnyuYsU2wWuwOs!Mg~Hs>-@TKLDRQebQ@edh zS?6~v$n`i!vVIncpaRL=0|)OGa^E@v;qCj`_eZ}MP9Y|pkVu~{Z)TMbw7DF95A!Z# zhl5d2w`XTrQr%^KOBodJn%BWmXD2lyrc^2&!EVZw-sReo*I)a3zBZ^QCn?nNMEsO^ zNcf^G`C?tEV!8h01^th+zdxT0X6xyyow$)fqo5+`r?`nJnF=V{r;?r!fvvg?uUO#= z?@dinI)5#O2TtPN_`9w{Lki)*Mj;!HkJ|)SS6MRR8hEZw?ozJiYoesYC*c#CnJ#DV zN-MF58_J3-cWo0@J-Cs*?0HnkCerv>G!2*jE=G~na$8!E{(8N;x0Lc~Lydb6URm!G zI-3z$FiGzqmK#Qpo3igKAs(TJ*Kw!AY=t~D_}exS$J68=Pd!s846Wn@TFi@$@0$M9 zfQtg8Y5ejh3-F>ugjCZV7iXW<(*3MQ`%MM)ieNQf#;E;Cg8^i5k`oNW6y68Xxt5RR zkLN5^=fXnxv6bv%7fbW57J|DOBb-xEK{MgjDHA#UCB+Y~iYhgQtknod+4X{dpc+M?)=bHn-YJC0Ry>)NbPlU3Y ziNs1+&_>INb1h=UMN)7JW&VbGHE?~G`_OeiN-1SEYVB?~d^DvBcgbS&#nH{Z4J z#_lBta^?l20kTup$l!>NmGrozXCPyMw>-`^ttha3e>h%r1rxCflcxk z0!B1X4=SzCg7}CcP%qYpe!tjOvAZIVRnd^{)>g~?me$@Zs@{C7{SxOmE2m>mU)vhh zH^36;pm?LQ?XoeB*CYZ8;j{Cp}wP2;j5~g@R!?Oz}%EC-)3i zM~&Vn6Q$aBCT1jZP?EM`2MnZ1i7=I~;Rdb>JBQp|d@-08_Za{v|IQEp@b$Pom4Zql zAnUlgGSwR_MLg?R4%ZbUPZMr8gwbaMvOJ8ySowgOw%8_~26uGE0FPgH<@uzk;r{4q zGG(j-kost`H(J?0C9aEBXEW1kW4_<`R`T69Ce1M;oBc~(q#b52x9;0(P;S-fetqb0 zN*)tcs=ZJ{dwhIeL2;!7Upo!9kb88Mn8m)m6zW{&Q;cbbu5gEG2rj)R>uEZYT$oTp z=dnM;I-C;8G(QedO?+yg?=h#6q(lq$X_A43F?hO-lNXLky(S)|g*a05C1HyYx{tJM zzsrbOA^&^4h)`O)!E$=jR}PnK3gY|kZO4}ySEPN|)fe5~-S+lcG|slPI-1D_#NAA} z;@`ZNe&W>^J6d9nKmhm%F~%8H0t}VkqRD%(8gbxz-mYRBsj>I=r7|~?mD5>W8*zZg z06qW|D2}V??WG_5$q`W45{B_dVOaYx+E-REoyM~Q7W~C7i{8`QBboJ)ttcuT%`sG8 z|98g(5S4f3+Io;ai$z;foT}r~o7d!tDZ_rn#w!q^D`sr+^G(1GVHTl9%1Wub_}@OE znnVt_-)9rzTtXK#!)Dcl##h#qd@hf`xB)CyiXdBM7Xx zh5BvTdwm79(TE-Bvifvs)7(oRG%G{KI_V*)a}s>njp z-L^9Kn?&$Sw6P&(`k{M@OHdk<{%|u@NQ><{SFpyzgL$q+WfcJT3AF1V28*bsNff%u`!a#|k~hz_Fse0jS*h#0 zzmnT1^^z^ImM%grU8N=h{@#G64W_Qs`!N;~c#w^a&^;Gi8B!Y-wDfMrpqe2^0791*}xk64qE#nEvc_Rv-WvQ6&{`OIX;El7cg=A*T875r!N;_fiXb zv}B61-cKnZo3(d#H{H=lh}!&RefJFwXWSx$owOStui5hIuqNRC&;A?8zqJ;+!5k zp>IUP(;+{AQ|pPauNY@%dm-K^Gws}^h(v-F_Vrz+B}B=z{*T#`uak3Ye#iUWa}IHJ zzJD#``im4IbKUO?Eu>1Q=3xGL5_*;X$WaB-x16o?ch4Nn@gI|XZL5hSJHcNjx(Qcz zGkd;J2xot;QXt(HtwD2dC`@+KjonC)7`JTF;6X$69v4Krx#k@ZDxLiyv%WR9>75wyU z+mXKyN1hk>#;)k~UiHjkYw`15w_aeP>}Lf@uUlY?P%kYx;BaiFPpi{<=|xN8SNLc@ zPEh-JrH$5ni+d_XasFw?ompNAvq}?9ApJ#?w0#v}PHb0}G(BsvAt1^*csyAM}%1e zUg;y@+PEW%#PY&fzw;)ds5H#$_ia`?1ek}6+vj<=ZxpnReQ$3E6%7U*N9F2%-_Ede zfU1tH&mF?PGrKo0M?K$@XVX#VFHh%h-%q~|vv*v7;AeMxF{bc}5=aJfgv)!~WzHW& z5dUwrUvb%zo5IY3P8haj12ada2fR7=rH6z>x|07wYCw4aL4l+d!Jm|v;54qatKZUJHy_GL*<+q z?QlReBM$w$4v&RJ{0oP@Y?(3Ju#z+uj@DeTduU;E%)O2!bm?pU9?n&WjKts{axohE zaB#!>LYFE2y1{=y6sy@@L8F}ymvRdxT7eSURzuWS04bl0Tgz)|_Azgwg}w_9zE8$2 zfq$x8$6Cm8;!_u;3zIckl>Oax<-;FJ{;`9J)w!A|SBP2|P?|p=KRDM`bzx)XEGluK!K^Zfh z6uV!M{mRxFlOFR_2?v4WNX&MZcSFS%t}(aU3M3$c_LsmMnnp&=$#EuSGR^~Y86VBJlxEU`BzVrA zHsg+>)_d_9pLoaOT)|&<)5_Oz-^{r(wnd3!^gcvEVMS$xz<579x+A1J^$(i66953= z*@t=#Ljp#lVW~Kl&8$@%;kwWYjN_S11xHJ}ZJ0#W;MTOk{jI%luE*R!c0J)wNrZ~% zWCSq0l8)?U)a9M7_ML;5Emk*xPh7^(-;7|^wRzR9;{uVC*vcd7NJ_bn_WOE!m;s|L ze=F_eQXsE?-g~&O^JgLg_dDsU&Cpj(zyH~g@OqY1mTp~h6UV6bjGnRp3Ul24h?3^! z{)t^WyV=l*N3;X}(N%(GKhj)J>>$){Z{fON5^epl0+op}FCFs<_ zD3;WEKa(iRyiY^+K4orTyF+4%-{o_x|2%EoQ_FMKt0DP7rJ4v>XBBuFu*WESlX7P2 z>uZF_wKTIM3V|1afYcNgG}zMoZK~^ki!py%n;3i}^h%oY_*-jzsDQ6LW6x?!`dL-T4e2o1Kof~u>C}``+ z^NYdwWm_wl5^?rq)f_7xiY^ zH5Dw?57F55kpc;n6we?0cXsIC$CKamC(}6Xa`qoyhCn#2q!Q?Ca_&1zFe{ih9JA(& z?Z(ibgVP~XI>Ce;p&Ko6hhp1_lqCBj?cX8rAZ}-+v7gV(lwQ3&;Q|Dq7qe$o#w#C& z$geW%k#1Ul(Fa~Z0na|$&W4r=XL6_0UpQ(dzr_rZ0@D~2OwSQ$P6rZ=)Lo;0HYuSB zR?xbSJR+~({5(!HaVh8z0`ghFhL1b_KgQlVDvzew7ab%>ut0DRuEAY{26qV#fdIkX zCBZ#taCd^cySux)1b02d`+jHdeb>6@-ZOvjz~Y&no~r7u>iU&*;f@+N5O>Hz$Pk0g ztA&4ymR$@AYuCj>e*ZHf2rU@0KX!LcTXuBiOFpA%*eXew!wvbaIaI88Zn1Js0=S8O zc#w!QdSBor5oh+*mVN-&znsO995H}i6ba=xTNPeNM+#?j)%Q=M!TZGL4(%-~V%n81 zG9ntrHB21VQKhxTF09+#=OXsN`0T@kl+0}_^N=x#obz}3dEOL^@WkmT+L-!gH_M)m z*yaI(iFhTQ(%uKsEqqqq{R`oKRz%g_`-`qvx~+fPiZc=Mp95}ItM!Ng0tleQhKltr z8os4^lnpJmSh7AA1<76VS0)q=$9NA|D3JNX%Jvq&Q<_v`n*Y=pNwge4|C`a+U}2Fr z9@XVNdK8Lv`npru1Dp1vDwwZ}f1UsGNVqij* zT`jo{6ZU`;`QAwMg$Xj90MM)V*Nd_`Kbd6|GK(zF!+jW=swFf~CwBOKrvv%$&=2kO z0uoU4jtS}jw23sEJIBhUDI*_xTvR{~IjvfB(PzM=wlS;32Ec)a*XyAGWf{|Ej^n9< zpaD8cTx!FrcfDoHdiuIvA@96_LX%#;UvH(6s4#19S=JKLRTZlk3ql?qC^Kl3Gr2;L z@iaMABVsE!gIanrzIo#_h6PL28eZ!>Y?q7SbWWc6+YQdEQ`0SLnK4fUB*ZgR;=QK` z8Z@2K7mI)R0owYP8LK2(%j-$QtbYDQelvglHhpI!X+~8Ve?)`l5#0;*wsW%xdVYbi zP)$*sxdt^X6is6E=ufJEx7p)K-u>mKD$F~f@7xfoYVXpQxOGk?kLW)6yimGISgp?E z?lgpPW1(VP5(#t^r(+9Y8heT4Gnq!ASQ6L7w`-!hhaF9q|91fD~tphA|X*gD6{pH~#bTg2u z4`VGw_4y*IGrx=m9^-N^T4xC@IKwfOrhdj78r=0?sU49?mzhDyxLK|KwD{H@dM12h zMiA{tR|`hY`GlL>@3YtY97>$wA~R*D%-TD8kk&AOfvm|R)Lj`r@=1id ztfDU?r&sDvwDkmT{a=!3G<)l_%FVLYLpQ%Bb#pX`+hrjvURPfhXGoa?tIY8@Z)ChE zR|9^A$u{9+{e<4_Pp9w_O}DPl5c(8~-O65V=;k$A+$67Q0~QDxD8TI@@aHwMHwt?s zD+5sGIeoq8WRoW^;cnoYZS9MRlvIjTh#o2b31#XQeBW!AaC>i>SGdWgwUOYIVb zst9gMtp%&x$u~MR0{`n5tO7nyvqi{HadBNCY!jfSMG!z~Lq(t)AdW@_tPk+_kd!}k zT)vaepmgj9Pqj{mL|%e3SsvY@y(A|qzMsAVpYzj8*~X@4Ee`3Mq6%5bKzkhN)gDK; zKn)eJA;5$tL(1KRksgaT2xc>X_97oTtB2Dr6;n1{b-$|Aw^Lnjn`w5v!5&V*uIPgU zrogTtR-&cPFzUajXn>8&cNA}cx%#9n`lnf;pw8mz34GuNWm2VCil5J4Q)v3r&lJc7 zLGWZH4v)Eh)vo2;wQkaSP^mn+7nKm6%GAq=^U@&(dps38I^LVKs7%>8)7-RGJK`hV zt&YP3+gTRG7w-JiD7sD*5`(h8B8bxpfR95(>KH02)(!QL=v{PdGh7*)eil!~0{t8S zpp1};u&0P!3rGBZ^fVUR5{Zlv@45I3o6*i=67^C)i#Nixct{;v%$v@;G)_y@o*arw zSZ_!dg4@I=j}opvil`v6#5v@E-X-Juky@kNIoRcK7gcq&Q zpMygbq=cTM{sq>k1MaEDNfH|@VR`;2zNv*QQc3UySz*~jC%wkO zDC}6_vRd0|ws=DSi#R~+gUgSv_ukDfMEH%bTGzwp@A7X0izWHlf1zhWZK&DgRdcVg zxapd2A{4u4gfXmQwiJ)92IKa8Q(F>g>9?A+^Fc%bpiAbw%zo_4&_jT88-8b@)Maj^ z$gJY)K-?z#gZCe?D8O9bb8#6o&grkC7wqjQd81lL8*sJgWpyk9S5xwU83@#wLD@6B z@x~YTbTx`BNINo0%YZ3xa$R3Yc-(?`m^hgdct%OO<=clXlz19=f)Xq+7cO9wJSO6* zA9$$@YBe)A+%+_(U|sUp^u?viG?NxOTBlw@L;SGOUYxGpRP?XhVEC+@eG;%l^^U6i zjiTZ}$II%la^&(SVO4eraYNR4{?eaF_XV;xu)^eid3I8`P83@R>}yPa%fEdW@k^s* zqSvE)cS_E*)u5&$F&QO63FljllUYSlD+PPNP36nV>{5#Id{bJpl4LA1iGfl!4S{$@ zZ1)|Cn6;Vw?#c=PGHu=Y6gl!ojKO@SC1c<&o8=o&oTo*9-$+^qmQXc!+oaSpi!DgX zVvyNxhu&E+#9yce0*C>SA z@%a=zgO6J#AZ4#e+9HliKu5|$CgSel<$h2giAVS6e6p+C6A_*KS(fWZ7;l{!h6=1e zi zaO0QMX)n%@_D6o=^4Ao;8=C>6DWJzStwx+}Li&WgTX6Wbo@%9&)X7ux%2F@)`17)-E=)xEf!^MX5$+P!jukEkmu;W z23l*zYN%Ic5cnSV8<-Zf{KjYVX$()P_X>-k>ZTdpa2FV_^!C?ASEX^4DH5fW_wbu2 zn^Z5L#Swp!)qc}UTFz5;kD*6Tv#Sf>qn}jTYl=MW9qEotaF`EOOhrgXD5yKp{NDcE zKp`;p5l*ze?f&Au<-x2b=gssvYC|4`;LGLoG!tl_`rR=;&Ho&{^!L$Z3Q%ViX5hH- zQ=l9-St_uRRuB=!Yb-bsO||0s&caUZs1Yp0p4sc)p|+ArzUbAhVe&^Qrul8@%y5X> zQL&x%jR{B$e7PhVPRn-HO0}y`nh5;)bbd2W?I++QO&;i==rWfbii3Lcszpsh`O5m< z?u)*Q$C<{s0;kwrFKGNQ&3+IkHL!ELao}bz&}X4-r&%@n$zXrL@Nxk24o%Y?MnN>t=D{U z)xRo&I%=-{+0*UZ5j$g^ZORF88JUVbM*t!LnxVUetoaFLZR0P*(pyR3+pE8;O?Yyy zsHl5(6^Q0!(KVW0xs6>9Ze{$AmzeGe(@;X1gaGOx3C$Oa0a~xPV~A7ys~eIoTa*A( zLp-~zl@}qFti;~*Hp#hh&x!Wxy)26o9vit$Q{OnBM>*4ovQBDbU4c%Fd!Jc_zRnf# zlQgl6;zoWKC0EL0I^xhd%kP0ovT*b}YX~Cu-fL{ous01H>=jO`G=X{Y$mW*4ET4T6n@Uh@92T zg=VXu$XL!>cUE(n{Ok{|I9`PIld;U9KSWeR0o9F8zh(y+sT#tpAr3YLCLC zb7pp5nLVugogQ-BY23)w{7QSt+q6fBz?Di!n(#BQXD~$oyw`p6*za^<->OXsM;v|t zaF8(s&gs@hKTSM$U z-4+hwpG{fEZFTJz=utn|6s5XJosY+>WchNPe$7^(35m3#TcX|w>)mQ<wysF zo~yvs6r}VNiK)XdI)8a>skG-*?Ui?b?b^Zk2s$N+%Qr7D#9it8&c?qv6RpYLh0*rl z*oJ>!hbJuw(5_m9Kz9}|6@jq{A%5o)SafMGwP>(#iRg}b&S*^WQCTXj?zF1q4Ir)O zY=A7a3I%m0pn)L&92axfD?p#zL7xdtlC(G0ll4go7Wg&GgPyVkcWUAIAr(i2y>^D_ zk9BD02mCgt^_$g2M1k!_WZD}l|3AKzXaOVKzMjua&t5#FRzksY-h!6_+O9kF+NN0! zr(!1q!9iKe!xS2qB!I-Twok;D)wjnatX3zY1q$2<7kzO{S_+9v2ad!)#-?YmOfK#O z8e=wH6<4)a#roN{%y8wVxP%xU@1;(7D(hIl+8CLEmYJkN%QJ)ZslJT}Z)TBG#Ug}| zOulaJV@Kgn51|Ro-m$f9h&B=k2Du&GbEFCH7?Gmb$nY&UnQF$!jP@C4c;~&iC9Vpi ze|j8%tI?phyFUN4usg|rBhZ@VfY>ZDX=O=xy@9E~8xd)7E7$J;(gG~B`JvXh(_brq zeMU&9sv#)cjIcBItEVS7`^Ueg+*LO8Uv`D--Jl^?$s^#iAQF#)($kPgbYGVpaT({T z+_)IHjHytE}|YJcM@}TzN6ibWV z5@7Ta!fTE2NztnF^tD+q|Jvr{ei z`AjES&c9GiG&U^x@N8qOH(G`=lo1&BE~B&av2fm8#g3nk{>1R|?g;{j(l=#bIf&G` z0qYmpryt8QV6VheFN#+FKFbd_9noE_HUjsu#)O-u9!&E}4~}42n7_^CVY0;86#>RH zL8-i-_NJ&=tq;$R7qzGI=3<_qi9Iu>8kiCZhli8uFk+-9gA!1ea3yp5xB!=MVtueX z*Mk2-jc=^YtpfL<*1qU*Nx&#eIN#ByYY|GXu)m=;d<7@m*q%ZHTVnmCiA^b@b@sU* zgk*LxK}!H?@GhRsw`qXA!!S_ShH3y7a2Cf{BT$)K7o@g??K5cO^Nc(H(v2iexRL1E zkOM!MYrIv-*xhGDB!khSm>{gqv(AxH&o1f0?zZYyC;I>lM27rs?JCYt|Jj(2aA(z8 zc1h;VceTjC9%&UwOZ~DZoTQoWK=*ebYQERqlg`HKIfLg3dVh;~m+x74gm51n-))Kd z-r~n_0|Rfc3{F~Ms^8g)o$_6Q4|=Jg8@KccBCn>XW{`)k55rW)5k!Z*CgB-W=S$iU zr~2M;d?EDNrmN5g@n)XQ#tsOt*~BIF`t)b#~EdmRW!6#ib?bc;2~rpHP> zqdw1+YqIomf`c7qtxqP7$q)Mbga8zjIeNXH=}TgZ-dB_p^Yhfd$vsTr>lsv=8v@$z zoS0q`xy4rOKAnknZ=mGKiuv(xddV+-xe}o`G)Y3s4Qn|6vxeBr5UGQQLGfLPYU|S{ zd*W48u1#0$@}0>Ue}ng$KS(wvR^D~LX8^HIPGsG+Zd(*m&adJm!5fcJIT>W!CvSPB ziMs1Eh)?q6Uzyj#!Ht?@lCS^fS3sSl9LGH7WUldEC8Ox*dzw5k+Tb~|Ytxp;$P<$^ z3;iPjiXKn}z3;VZwa6-h>Er)o;`5@n4*L@ZpXrFGy*HE-lGThG)oK{m*7IvA4I{GK&vClXaP zW2L;`w*c2A>(B@JpNkN-Her^!Z;X>E__|cw8*=_5LgZRLszlI?iy}hC(W8*Gb>uPq z`we(gzvq5HZGvGE-OPoD_KnM)$``$tJ%3%n3V{>UhNNE}Ox>SG-$#7mb1n9t87_|b z3ioWN=fuvgVL}bd&bC1r;7rG6{h4FaC)N!Mu*9|XHV?icooP-}m?3YmUDFDyBPSem zq(=>CDpIc%M#88L+#hps9*q_wgrWWLs_a7DF$dfyKM6t2vqDaiH_5WLuVwun-8c!9 z$1L{}5P6UU0-sg`TB%;>Vgo=M-len)%UbYCzE6z#TD)Z$%!gbGmik#RkQ%SSQL7mK zq0bT9i8-lqY%_sJs2K`<(;jo4BuVt9M)JOP zcLTxq{CrXSqZQw7^ohBOVab~As(qY0x){@>ql#0DK<&Gx@>{C}y;J0qt4({Jv4ySZ zIJEO9D)W;ejzN*=aC0JAVway!3z}~GAuK0_l&mK805xf<0j2AMm zv(G=rasdB%JxK7*7-AsX>G$>e{sP@xe?oEAEK8WCP(o|dTFaQZO#@BfSjFxLC`9g=}Te})zG9J=4;?nh~nnE>& zTfL5`nImlH0L6ehH*yyeLeFVK)6_ffr116w=+acwNzt=?dz zxhWPO&7WLl(Vb+?%LXGuit5Ws%z7_izwX-hScNFQy=0bEj zn0O^p9-X6BxO{jSY+gYZ0D37a!sH0rnCaeU1|N^(@5OrDuOAOXYy*wN;S~E37!G$W zdB-0G!J!i8rn?mo=zxp3gSWn;;<4^6sqb=}DdwDX2Krw|D%-$CP@E&3HDDCp;0s*C zG{EjyLOX2#w8ULu!eb+o5h0Z5F4bX;TG$)v{w?X9r;`19V$cR1x;GlduJ)iI;P`)_>^yJ27h>VZMxaZrUA!e_!n8SL3{^SS zH9tV~(G+LTOJ=Fyr@4dF-tk&)FV4b`uhg`Av#V;XFr1Ccm1KH|u*YW<<~V|8eBU|8U`UQ2%3J6$S`yeA0)AEzw1Zld)# zeQdcpuT?L>HM{5ND+dXp6!-Gs>ZHvZn?WjslYX8@LwPyt!!eXstPft>UW<5)Cr-o| zZ@M!o5J7Rbn~RhVvW$NvLQ`VA%#O)-fwR}E7@`&(d^174d<(5Tn47?Z@NVVJgI2#W z#i-nsz&kifQWK-!$r!*S=ZLf@YA{(rO4yv57gPqu0KHMV=g*u23PF%Dzvf%R5htck zhkEtATfXp_ZntTyh2ahBoa9-Zf8LqP;o3sVxC&!mQUo6bME=+mf+nu_)%>hN;;Zet z3OzIPYY?VsZA@jqDSF1Rx6$pJ5o>xmR~>%ZAiD~JlhWeeL#o=CTqQY3JoGm}Jj!I+ z&3Bt3h|iR1VRS3EMqU$&>|2?p*dBK#%S)1+FyF{=ydGz+d1&&+FU&2Wzb2Iuc*K@r zSx^3gGF19Q^y9(Q;q;4$ROglBtX#Eh;IJxT634woT?X4F-NcxA z!Nt0qJs4L2=uS5!JzOPx>4IPv!A_cO2-z$2zd~Bxn#auRe=;IVa-p8n3BSSF`Gvo^;ftV8pg1evEq5u zxpd*|qljD4M<(s?L%e(ER}u{M() zU84?}(oLUfnCSU5YnT$d(+cuGJz?%X8f#+LZ7sRHEm^ardm3fmg**{U-`q(cC%P~hg?Znv*< z8CM?rl(%Fou7utY6iDaB|JZfNZmG;cQ>)NJ^}#Pg2k+~Hju4%yxfS44e(3SPM#Vd{ z-x%?w$=Tj}A6I>~7N-w~!Xdvb5Thi;G`XhjDL2+barhZ8H63p>l9EnHc|@Oh^PHpg zkAC!3)#X=j(3OW+$X>z8cKL&T)UzQ-$27~?1fBcS0*3YM|*=YzNnQQ9UbPAS^Nbt<6sQ?kWh+cW~Xm zmR{7;iw#5Db8*Tw1$7C~z3{4=@~*q5x=V#L&pt9exisoL#m}AZ@FSbTx?RRp^WbrI znYKG$L6{6d2fl7Q+a!tydqp}sWalpGJyYZ!Q&v7 zDyJ*K%1GYGuo$L``FbxJ)6G6k)@R) zxP~-Ghw=L>J?ZHCa6p$Q?{Rne9yy-tWk`pFdz0o6tMN{Vr@YgjwNG`n$|_|gT5T(|c{lrpvI%aUb7PbHG(rBkWQHBV2s8zK%~G+Klo&Sy z4YmMr5Ob2-Em1^6D1NE*Px8Xgq-`V{=G!~lnfV8WhfH5uriNiyTV$CU2 za$H;olOIkkyzuQz?BK$XblL}7S#;8U{N%um8F_9W|3(tKf#mYPULNG*V=?jN8zeUW zP*n{Xz=V9+RQMga87ooNWm|;4lijJ%?ov-(*l=K1Y9z&$qoQ_}msOO1?S=Cu1Ao{u zIx!XFoKwe+PIR`IaYQ+B$npg*mV^Mpd)R46HU#s;9FzZBKv}(ZGLK(G`|qspd;LcA zB)<)?Oum@5AU42QuEzM|5wD-+clOx~lBpYTsl1Jv z(6>bXb#^+wt<(QYBhfjzN9p?~;>k7mYfk?_O7&(_>WOm1HU1h-@~p4CJuTty#K_C{ z$E5|gIKoo3MnsMen|OKldg)t9Zi`40xIYvR6=W5Wp{1dnKT6~@SES+tbkOh-;sj#h zniTD5A*G7H5|Hieyh8&bKHfV`KwDmT11FM4VwikWm)s;y@w4KZA*+WZ_spD<|)soccat$psl1S4Vv`HiekO1on<2@^0#%&2g#(b>46bIF` zehH$(`iy+$d88SZv~D~!>1C`4x1xfn=+-u%=R(EE{gWJx4$0PABL_X0Qd<`z$N&3T ztPCnOg!kyU)6~^`x?Ck{uo_xwA6rCDQnZG%IOPT(2;ERMKluAmnx~hNO+*Gu(vmR1 z0)xUo#!=}a^-O<3P0{4Y^X}glQn4wAlv)RWh6lzt&3*WX#i&xnhn!>So_~X0W)XX! zHgJN|!zE#2&JX#YSA^UF{=cauxLt;H&-%NRv(6_q`C>yB_M=vo8ihC*yA{Tw_6HA0 zF9YZEHXZ~>{twI_$PJ7KfH00w{^4!fR9V{>-jy1PC5d*Qul6{#zGybOZN+UO|G#so zc;%en=6~i=;U{lvcfkY(&=-t&0+^l=vh@ED8Nv=UyaOP!NYzQ&Cx~J5RU|W^6=ji&FdGuQ9x8y@GRM^9v{S`ptY2kmeBrlC(s518nEfmFfct(b!_Mnc`vxH zJ+uD3^uSyTK>n@vZXTwM8C9yz1LS}IZw=IafIM0%6Ne={`RV>L7#sUvw`Int03?X3 z=kxR53#jc4ZAq`%$!lXVk?n(sFbO=B6ubOaW(cNC66sm|N`r*$!uK*u0!5j;wNk({ z9f|Ah!kbNF+pVKnm$G&}yG1t~I~M|sAw1vA4s`hIZ^cjU_vofEQQF+Dyo%$#1ev7H z)5HvO2_KeXLU#NH)q2L|qqmC~m-M_PuXS_MEb3>9HXP>Etp0|R`H? z{KBO>!&SbE<;YLl3^Q{j^TrqShHdWHMkRWVO60C|E_&|W;0)K;PI!65G0D8n+v}J6 zOC8cihpoxP%wd`0m|XRgZ%Yb}`9<-Qv4f9aTcngX<7YhiJ@#1#`aeGX{J>He6_SDQ zSh`m0#URk=JYK<|pu;+f#Q5v3*DF1%o{wk9C7H=gD)Xx~XiZm|Su78_U)UIfAQP7FBcF$Ltn6ojj z9|~i2n7c;B#VRpWx8Mi(1f%7#=BH# zXXs8se*O=Q(usOoNvc>cN^^BcL;7p&$- zJz?-`NmXfwoeu==7p^MQ3CpD|Y{%34ew4p~+TqHDpR#WX_b2?t4J>5~W4yE`f&~j1 zW99ovXUu-9IneL4`>B1`ZxzTqiQ()jqWUxRKBloXGDuT*Z=#Q&@oqS@zh3<#jciie z&w`Y{Z=W7H zi&bdt2MdY6zYG46!*M0R3AEeXeK6Q&ypxNjYPWV8sl3*6VLAorC8i0pG|Z&XK8q`>V!n zuC)9aG2b_oa$}juPt@y9Adkr2`8b$W?CCd{c)O`fMeuV^%8(=80ZNg2%yDhI^LFGV zt^3F2YA~Mp$Qy{FcV72*%NSM-eTK30D`ndT-7I#2wJf<<)T#N33h!jJ_@jU1Ypd9* zXZn@qNoqm_W%hh{Pd30st*u1!VuIszjNzlKKk;Wv;x6?||9ckxr!q+%K0l^{#=rQb z7EPlQg$+AolJqLfIN`i3^uC{mZ}hN?jFnx7M|K|)d!i}RT>Pl@zjL(XCq52Rap)>~ z8TWJUd8MnMA`~NLEVtf2ns{thRqPl<^+tZyrgpi3pX|&e#K=ogV!WElvqi|QpHIyY zm@G1$v)-qUiZ(3#9Sa@H22ae>j)=_KH9p{QQi|7#OnT|Q^W_B9)C@*{R8aTy?aTfr zll0Ai91y$ ze&3Wt^R^|`+zC~+z`bUt{n&)CyRhEe-+(ym!uDM)bW<1m)4;oYLtknE;(DK5mJH96 ztNqVjo4N+)p9&NcE97%_*JNoPkLN>kq(uF*xLVLRJ~AJ&vNO?%Gyf$J`R$MSvcOiy z(~=cw?qVf|tMdL2r`-T)LBk;PzRvnmziWlm`nz9yQe>~p%tkliu_m>4_+xCCcAC`K zo~!+?45p~sVmaa(eJ1HkO)4$nE^n0SSzn7V&0B*XaifO#-_>IARR=nha*BV6C}hE- zO};WwvFaz!O|VcQqp8aImiuV_mIMw1-=7IthR%59WyhLX_I3+16>U4ToG2PH{yO|Aqz8S&SoGo<{Iw~K6db6@vfkOh;uXRALHQwQxRzrO1yFP!`GB zw#qilaPwu`vx$Su4fag($lZ(Kd!zG9)%OaF*F_k&MsYV3B_3SZkb2I^PP8X7D6SP; zl$)LVF}T9gI~h_2Y#V$mXnAeJF{i)q212Ur$e7zp{UWcJqtYC{?~N*R@fDeEb?)c~ ztT!2gd83BdG-|N~amsz$k`kUlO=6A{&Ox@a171?oWJmRC_yupH#mME((&bgp(Qz2? z>3N!^zbZN{e$iP(tS#1YP?1o!EbM}vZ7-J=FHw~)lNx>jS71>LK64lCFW-V=*3`M> zt;1?L+jG%pO=?m?5eA|gQ<&(feip_SCzO1MquK5FaKeTz>EiS}=CSeX3TePs0(hO^2 zqb0@CJ+kHM$r&-;L~i`O_VLecs*Ur@oyy*R*s0*mj!9-1i!H;z!~*u~WfkoqZ#4L$+YPl;9My3#OUNTxxP-l8WS(u)%R?K>mB~Ei(Bq3;U~ik6kXzv-crHJ6Ne}MI)hgY`DcS3@bVu{tlR(w0 zj;&SMv#Rih>LC>0vJ%vNXi^-?{MFKK3FbYj|G;1!o{p$l&3;`#A55hVY(^5|P%`XH zm@_zo%uoN>{Qg-(s^NaSzx&Ksg)@_*!{&L)c6B1NX`~bIjI{S*{VJj;b7c87Y+Vz2 zvX5&jn`)?K6{`;lqw<%OZM+&-Cdqob?Ly!k3+{-H!jI^)x9zw)X&=VE-$RNrFeHzR zU`-Erd>8s$96YyPus6cfl78`vG_j;Ue)}ILk?9DJ+)39)JJ3z2{J(RErT|tji*bib z(MmWxHT8BImQrC5b=%X%Ol+99hHD~bAbfVIwJgjF!iD(It;gnFd4b#3+-8pJT~fPC z-|Usftn&DucPU`KYZHl*0}MO`b%h@@NrMzLFk~=u=c5V|3+^n!{wYK2jb2dd~aUM-d(v7VCl%{QtIm#Ym@(d+6QOY5S}Dg;PXZ|$?z&Zk5Vd&PVstENKhV1)q1>A&3pTC&0@uYs7YwJ zrn6(JRF_h-%~G@MYB^Bum(6;cTQHwmplb?Q|4rCD7~Qi&dw|UQx%dq`j`LVZ<_|K- zOpV?0R=;{?val0ri{aZ~f;S3}r5(Lkhg7cO@k@+{ZvJhue(F^&C+ScGaNQdZ`F|D6 zU)m|0Si*;nGrKLS&CX#9O;rPB&Dg(Gk*Qq;JM@0jC1uYqR%iPyqkw4mN%Lj9z0LKG zGV<2s#1*>yhfM}Q#ec}20jiZmo4vM`DfVEQzt$FF1D6u>P{|4Tw(LE0nUE1UIE!WXJ|HG~0Xf(5 zv~;K+vW*5Bjp&}MfoP8WkiM&QMF%O%BLg4o#al_md6`;(ZCgsiL)YKYEeX#KDiVtA zU@;BUoh4eB`i^X!ex-u*>}YC%KlnLy7I$bp4|HLLW~n0EE4+NB9rP-_J_Orw_>*0S zjD$w~2pGOpirC(g@XYXDf0vKkB|?THGrph}@zmL4H&0zP=od=JS*pg?sc|I zu%Cox>=g3KedLp9;LGjGqjILGRs-#YTTj`8%tV~|6L!Y?jF;#~52cg))v{#WLBvd0#E`Jj;js{RVCX?Bra+>Y@w1`S z%-i*mD%9M^Hn6KpCVAXMj9)`c0O8{@3YJAbRF+JzVx&=j$yd2>++>C%uMN++XEwKs zwQ8?gN`V1aeF{oVhf=Yhli9pciH&qbFB2IQ)kTt)j1MqWN_zezA9er2dhM(A^mpO8 zpE|+H3_!M#@S0!SXjQBTS(9J1*6FrPnyyBwpuciRxrB!6l|vK$G6vj~M!yqP zeYyTM(v;6_i+FKx(p=SJw`y{v;@2u!3riM)6zg5MCww&v!(n*_=(%!(X7zao+%ak3 ziXHtR@?(gj_3o`whDNZyn1>_&4UV_EU@YXjTu8F`n2T=4)Hx!dhO5_Feub}^RM(&W z)6}xYcyILb09-bP!Cen$1!Va<5&PPU2hB(=54^_j@r;&*2t_upI+(RUhh=QZ63C*i zEX(~8adX%S&DhmRyZxU5WsBy`9WB>cY#Umk4_00Jinz1NlYib7k7)_oQzuSl8r2uj zdQLK@HyP0FL?v0=+ts^wGcR6k|E*<@4CaLm)nC7>Ka$blU~p>;Za->~!OJ!GrADBa zuTu1Si<#(RLRZr?F#8@ohh#G9#eGlBMNwT*Vu}P;ApIOyNV4XB#T{PEG$K1uU;)kU zL@`x)OG{-PhUMBYJN>gLIY9?$V`UT8R3sE2v3Es^yLf>eVcz^ENF1kjjmmH}()84C zM0xJ#bhvzD;a-_C9e#w!{#J!lvB)uwC2B%-(~_jl3Qfdg8BMpv;BUqiiSNqVSLBjH z;)%hk->as6qBw5HZKNW(B2y1K$8c%uS|e?sAqce?8tsPEsPkczBib=dZ)TTv=^QBO zuCB!Y{8Hhp{d$UF5mz~euBVoSr?Ci!a4DpdNF)8~?34Jt8&#%IGwf%7a$J_!eWh5# zpL;eHJ8ln?=mXVF(Lq~3+G7iIdt^zHYl2znwTP0062{TFWVR)R z+c3+CUh#oPBQy@5ye+@mH`2{F8NE{HepDH8LCpcnt}Fqqvh<4~Hx022%Kwutv#k3s zwqJsxlyVpp&|+}8wD zX3f=06h3fGxL^JrFcz5^L;Odn9`emx^0`x-7iPL*D4iBz?l-;*25W?|AM~rrezO~` z?b;}>k?%k{oO#diC&V$|zvH~;;fggTHGY?1w{;-u%ri(6LLNO2S2Ryn?Hp)0Q&5vjyOw5NRLBA{OKX^_ueLU_vt^rRqg| z4RroFofP+qR|uo5Y)Gsv!Unu0+Vb=hPsS`=0uhTi5V06AN;hffQEd%c$5g=9-L)TI zeFYFM3Nucbkh=0j_ znTol2@tw4ms7D<>4EiRddYDH!?IVgUuqt%kRC;KF03!m*o4;OL{=uNHHm=8xJXG^1 zVWjd9{@{4M(B*B-b_mbcQ*|h5A1)S|PINio7ZE5Nub1AJ1u=@g2%ri{PQ=D+EWqvZ zG)HBLq)NT@cI)vMLhakO0p}jo;51%%0PfYntH-Q7O#c@AWOMICZ_+uzk0-wCZirIK zx`?(}BAJ2<8%0So>j1NTIZMWGIYbr&fW6m>@p{a^G5?X*{BPW_)XvSvCn@PUD&zJU zk!}1KkwwwXUoGlXfSCXsmtE$&528RH?1ldQg$}(X8?cXFfm-$fqap63h6~Ju80CH$ z5INjwmzf@wBZ~71e{5U!#wSiPc>3&jY+T7Q6G|<9xw$N%cyWDS7ET@^N@IjtzQ}Uo zCHX7^L)WfaS0bB$xvs6rZ=JNCZ-_6 z8P6c)Ghp`u5u17O7>h(z3Us%DYm<@SW$u8pp9O-^IJf_V5aE@OG-Y;J^9*vr4@CL+ zsR#nPIYxcRz!q4-2Vf++F(DdPiO&5Y@vkR+psp%Z69TsJc6!9`6RahUpu;*gAKZHg z;PUnB`OqnKZ?^J!xdQ$P4idyNPFu5rqSr+XYaj3u+{VGir*!0#2B?77twV4x8Wsei zUT1B@9jN&Od57vi{fK{-hd;!@dvQQ*bR=RgHS!&Rm~Ch82vZ9KP$9i~_qX+ew0Gv2 zgf6kc?acf9Oji>`0T}yjf=PhB7o#Jz7TCps?&?Zi`AU08J+{P;T^~CUC4tyBW^X|z z@W=L0dJH=1$*sXS8u~QLEtmk%p)C}7?39nYtdv_l<=5FmdiW;0eJs2-aG`b z1?EpSVT?p&nu>Dpm?ln?d^pjWr2A?0oc4Xpg%OAs4zZ$H$j#$m`|$A{AVLfP=uptW zK$pYD6-t=zwc1pJi#bv#`b5Y+gm+!o)U84{Kq<`LJ!4DzR~KKq_F98BnNoDqLE4ei zCWH}ACQT((v<#)RC;blPop+J3MM<-@%`_dHd^cp7UN1ek!G=tVQwT%ViK6@28H14> zu5;`+m+UYat=`r7OO=x}IzPUGrx#EL=>$Q>(S+cZzN!OxVx+v%%DN$2f$VCHKt(vi zHoj`s74%j^#C_lL&}Adf7AOR>m{Z)ZlAZm@`wvE@Nj?CeGbPXkL|9>?AGGbWDX7)U|Pyw#K=eDC}B zf+&nvV8@*gfmZv5GVU!n|4JlfO)w~t8+C8cr5622b8B9*CV$6!5&pau5F}hdI2+Vo zA^`-!F0}x_>&t+u4nY8>6vTml>2V(&(ScRR>MxKSJ^-yjyT~#+j-FgV$_oUEzW)Q| zj&%qCG`HacpfKVCJ?mFs=68JdUC* zEgjIfjiv9<%}@`cBO<&OWbf&r3gf@M_@rrk5PUNRrp0(0cmv))>RdBd8{rcB)$3eJ zo;Y-tgs8xF2|G}-{^lm|0P$jZA3f3jg;gz2iA%xJDgR$O&J1$}%=V8m{`UbI>60{q z%+NXY*%c=jrj5>KjuGth3?L0EK0&Z7Q5)I!2==A99^TiXt4FzlN>Sc} z)#HX>lM(0Tu>rxAk^SF)eQViJYPD8*z(<%mH+Z%bph5P1MJ?huarU%BgXw`_opdMR z_0vdCV-utTML!s0?<$=g!6wIvikxVz9z4}S?L5I!_0D)6wI}0kr~?TgtzTs>9@gjKZ}|BRS3OxPe`B>1b8AzljX6VcKTeIt#Rj!Hv!auSx6!?f@unIlJ@rQ1e!EW{m_KH5&W$u+oRH z!{Jl!DeE{fOrEY_=`V9(fXlVLBX?K3RvbhEV!uRzTmh@uO;xC0vLEmu@R$R!!*6(a z`j6-z*y>n*GJgb*B0r|fnPRF)i!h4=08x~H)2VSK5V!YE(Iwn#r_a<{fk}IVFAi3a zC_CeBwIDJp1|wN_y# zfS6F-YXSS@=xPlU5{S)wPMO=_NbxA6A{K;Xga(BW8&Y1IRmM>`pxOW|iYHht{O}Hd zcq=B%#bZND`i=s;a7}wyIXCz16BcT18QNQ_|Xd z&md7swN_D-+Iz>|#HhXZ-aANYMiSzm@ALd#{Ex>Q$Kmkey6?|5&THJ~g>12}ehA?F zws@H_KO)NU6~Eu_|EaOwuTS^Sw5G$`l$G6W@95+ITI9n^33&9q?_lZ!!9>34*>GH} zX07DU+`5Jxv{x-*11q5DX%vcZFI~d)NvkQrD?$al9vaaLQ^@*Q>bqek9jFl>@ru?V z?^aSu0VSO6Toz1SW$z8?1T2Y;C%N4CwS{UgmjJTjy?nxx1$;0|Zij#px_ttCd_4yg zaaLqpv2OKnXWyhUB8tKIC-qv#Mn%N(x?_LnHk7*djzB@e>+G_sFCS6xYObl&o>N@W z3Wpob>(q?BqilUjR6=N|tQq)OcHw=d?%gsxTKO;L$cLTyteE|6-mLMwB^gmr=fP7T z1UvM-B>?=bz3g?p*Bp^S*?}cU4ccdJqXuBFH_92s{%GQMf6o^%+7baw zKAV6RfveXvO)ud@pY9|P-2Fk2L{KJO>fV|l)5p;08O)43j@`k70=wQjLjaq{Oc1VL z9f8E1htI0B_cX;QFs;r+jBK43-u0!78RGJZ9rtE4>1Ah01OWizS9tQ#pJWKZD=j)g zKo;mF>?StwtAkZ;oE__VL6e!pz8rt~PEd>CVKM4aMaeeb*^Zd1dn!Eo9dF~X4)2}RcJovAXB(D|-h)@M#j;H6}d#)AMtbLD- zIkIQys#<;kn~%}`rC61m2E}j+e*N{VStZ~Jve?KkVL34ssq8EqeR*62$il^(Tx*XKh$Qc zrlsH?h{JBPmB?QaYk+hwIc}H>KD(4=6O8{Vd)rxE){~q9O;At-K#uT9AWPL_UPqye1P|2A=G{&lc?&;Dk&edK7*(fPtGtK({ow115M>*6iIQXj1Rpa2 z9=&vA_7!3nF$D_s<(gw>Rwr{>8)!Ju) z{&<9}vEx%~;mb*%U4Dbx`J>52<+p65(jbeSa^0BYb7E5kxiVY3k#6}D3&!TF%hm>B zEJ1J=vdvTd_Hb1XC$^fgso6AkL4%l;C;+0qHyD3N|ENtwJ{^9t^!(}9LF!AB&J`%b z(n>nxdOe`fo_xqGlB9OvBaQEmx?MP$XBYk1W*3q#Gz#%HT$6xWD8(N#Sv zEqK)r0s__KaE%*I!uvWa_3(JQWiKdb{v&T7Y9QimZ(PZImd!q?FdDR@2PbpYJQ1_I zW)sjcu3|`!`g=Z?aZ!bGyd^;z;$%=w)(3Khg}7CzB{UzoUc_f_jl&XDsZfy?xzhYu zbFjirv7f}>O4)U$QbA%@?yh?32&HP1#8nwcv8%P3*xrBy4psFapT9hUn&}Z0^Urlh zBM1q$(_I&-xMTMW*v=6C3@}e_0(dv%&Mc{5E0DI;l6{YF=}t$>54YCEw&r*(l-EqU z3Uao!WG28HgnZl8^2N@Nx{U;h>1+YnplK1fhIh`5UO$|(On|fn|bBYvj6|y;? z%^ew?M<9JUxBmvCc%Vq(wl?_3iojv`!`?_$nGzDktK-eiRNZ zP5Xh;gTNLGXQ2wEn&l*u)3Q{Uyt%t>%z2iVt1n7S7mUqyU&2O`*7gdQ&j(3BlipCD zEg>F|OV3;CFI9DWiQwYidCZ_-e22nkVra4Grm1ds(@eony3&07%8z;`pE~A=I{-Td zCB0;i0|mx*+Ka(l@(1R7#>!^Ijno8)xyX`DYVXnmFjoWHhm=~jyRU6xVkA?V0-xLk zJRm|&g5@bPlZOIcN~{dpxc&Q`o>GWg(^A?&PdqORSE~_;DlcKRBoYCucNRA#RxYHtLXONX!j0Ftqaa)vGQaS3ACn!`p32J zNC8g7d;rPWB}+?f>TDtreNq6bw1p|jbPn=qC}`$Atcd?z)Yk{wEp^xCx-%y$+_E>u z+REt@cbHgVe@+k%wrF)9Ti2%KVV?tKOqBFZldryH4v$a`4YGX|<*jaIF*-CM2bbL& z&LbO=S+tiXKdK9v53dNfwOPTxlBb^`G{HLvwL`IC!&l7mq=2lQ4?c1Yd%)+=Va2xD z`5(@vF*{Eg=Rwj4#P4&p%+H8OivEa_15X}CyI{H11v&BGF6$EhE-qDe0;m^rb>Y)$ zi0qFpujyijW4^jb#xfeLEc1D9+XaXAJ z2&t6T-)>FT3e+nkX%%sO4?AxyDm+axwa&JFRN27WS07riflU4pV-^pa(Vb)c{9EZs z9+f=yf8FXhYudtCwPyN{=BGxE&^rK)PVT4Fk&&|=n$i>0Yss%hSVh4ip)q(!my}8D z!k@Tk?>1Xq*4X|xvu$QBIigROOtQ!`?2D)`j!&8GzRH1eVf!y4_oQ2g`9GLzk+;djiKk_GOWG-AZ-(pw=X}ycbC-?6FYMCs(rbp2bsTR8jTK7%jpLwk=Ho9c) z@=K|Np4jO1Q$Il5Cbs{@wRMc7NFmsJ(vA=5rGHRh9Q&wF}SBlSwtoz`L~EzuxGW zdpH$xcCxKQA3sKZPXRNl3~fx3iM|8?YT2idYDqWFu0m9?6c1g{4|sCJIouyNkJ(+e z#SfB*75(|TC>dG``?cIx&D4WX*wTiw4nAmVL3xsXSH>h9Sj8VYXGySWHWe-gu4WEu z`UiQ$;{Zr=Rp&ma+Fs#NevYnm(I1cezO4Y?4OtOZpUXqdv<(v*a!6g84$a6B6a7!D z4jHRO=A;U7;i-dLCGO2;ygXqT#emp@5~TdkoZHrb#5u>`g%^rlt)KrM42PEN-w8g> zB9#}een2#&3U>(FjYm29N&l{1ali>T$7iNogmd^W-=0=BlqgEZWLRF#K8c-sWkEta zL)0;_ipEr=tlru=EN!6y0cDmg06lB#qaEV<^l8iBgQ=R6+817}KLtk`C+;>JvZsIf z!r*IK^oy^kf>7<-g+F`++HCn4iOwbmTk%5k0lAL=(KZtGnS7r%m*RJLhi>yVg@rAC z_hyj2jj%(fPqNy!Kq4O=9HI|)*r<3UT^<8EE*}BxKt#ww##8SykjQ9l4e%D}n(1dV z|I<;emSkQJpR|uImmjgLl{=M@iU{5T@NxVZvPND|M9tkOWn+n~BnUCnqKT$@mT~Pl zJnT=BXm87G_2e4(( zvs$~62js@6&wQ<^6nxpfo9P6jIuPD2!le}^2h7}AKJ;$}0FK$bXq<-1=29yLXDHL$`n8B6Qc~>xkV+BWY8(syFMYtiq@2P9y)~ zb!eb%-E-Y92A8kkSlIfkT(A-kN&quurjoB)T%Is^)GKc%U1O-2PgQx%eY>J)JJE&+ zQm5WOy^&SGY#RsJJJO_4d})6EkYUTdyGm8!q$c14gde-ojZo=jSWYQ(uyOTAE#xob zvua|b{&wW4>kanISV1)A47n0;Mi+`RcJb;z6y7mB1d_EWi03rtPT@;r08zE{#(xhe zgJpyQ^kZ6^u{{9!5p!y(ik1OlkiDhwJrDO<+{hau9u;Xd;b6|3Wea z(P!&CB=hA~MFS)6Re1}GYLc3X7rkr5Y8G9FBcQ5DoWS4&EY@0_I?+1QP>qlwI?sHdot^)%<&_s&;@ zhd#T#{q${kyr-}Kr?YAGdL~iDazwFT$NNZN=H2q|X=R3`V&0nf4@-&?R6ooO9gFFY zf$&HQcv{sD=9-&qyAUITl(z2b?HWkafJ&>z^`^EzGLbOVhq4Cyp}w1*;m*IW9BnT+JCi!<0(#9I;H8s(s^JnzNsw+1Vvg$-KI3GlFj0N_`B zP^31V27e6T3_L%+a+`L%bM%lP_;TmzX;@&zt3YOW$WgqtsfE;=@QO%d_oRHR+Xqba#knzUgV7#w??xNLzRCQJJ;(LeIea%-Zkmrzh^WkGPCRx1jGokDtQv zPbviiAc~J|pbv-}`x0r9h}+pWVu^y#u}5;2t6#v{7ob~lI!36|yMGp(3U+?HakEks ziqZIDNP4xMxUp-^6PAb9#90T?WX~R;rBHq6etPBLTRu*(U7nZ3@%uOQOOR7d2R%g2 zb$LcBuV5}mJG-mc_-Ly;!2=6;Ny9}k)^gyaWz2L>AB4>hx}Eq_J=UjB>=F z7GRui^H|=3Pniy_xE{K73}_t&yPYXlgwx_5u?IV!30xNJ_NovYX@;!{z`7^2W#l# zQAL>GilG?C$>oo`P9s%+>qECUl96fy>9{cv{O0R#EbE3CzuiUsV>><^?wLkpW{S6- zA-3>>sBc(K4JtL)@9xSi#iCS352*Ase^hqT$(yM5s(6dwNrQnNcc&$0v$|aPMEN@a z5A*Q-5VWuPnShrK`?r`$E}_a&fIMQe!>`axB=`6cAh^G7j5Pn`e6c6`PC4Zl6YxNsVbADgj~LZcqoZeczy((%xRXiNkzBFr5);NKjg%pQMmffZ@Dl8>t-~O$eO0-jKu;6NlVjgf7vYSVdg{%;j; zAMGT^&juu0)H^)0<x6cbeKkx`kLLFcibQe%Ld%cn$hMgU} zU8rrK`=g}9>;6LqlTm(CPn+?|CgY+YjZVh>dt~P$>EoBntPpU8(POUYeNEh={tPoP z2Cl(^f7Rt%V*7rLK;Y^0=jnk1wg=oVUgcQQ-Kr128;)w5XOD|%Q+zBBka}fswSKW8 zK-7LPa591a4M-jR=?f9s$KrN%fEEy-#aGA6i+emAc=pN|{Z$PEbA;N5SQ9%K12XPr za}SuzOGEr8)YAX^>5V)48L&T|CH|7<^vP&7_E2JliZwu2Y+w$mMxGi@YpbgnrrbhD zzSHBnYJd%3<0?%jz~x$-*4M0Sw(Xqv4I3dhiqz(r@fGv=?^}jl#m4GMA0ES9rvt6V?UG;;q12&my$pdei|sYT-jrq4@KMq#I4fPz)ftGQZDxzQvu zClovScZ%J;D9{{5Q^#s+rO$;{?0_8jMJ0<%!t`$Zs$x zVDk5ZE8-=MXY{hnFyV7}!mox*ORU)lwAc%T+Svoakp|1~crK8Dw-6$>eck#bxs|pZ zrbzrYbd62n4P7WFB(#Tz`1qG@k~8&L3_jX5j770M%(0;ACkQ^aYoiC`Q!Vx!#~lph zGOV3CC`$keDl%vncd(Ka7TQqB^_TeC9G-hlDg9R2;wI>XH8*=UZU^rlCxAj>YeUt1 zYC)0*S>E~<;pcx^ZtggEg#CDlV4!k<=t2LT@0rWW$YBvXPEgY!%_|ne;S$CZx6FsN zl~L9L0+K_`+2O*J!Webog$4CkJA61Y$g!w3><#B1&0zl9W;VLB+++qJrK$cv2LSL5 z$`R4RyvjnX(IeSM-y3-bj^Qic)p~*^tT?@61vyDKtt^^l)3C%U5pna7u0Pd#Ggn`g z)E>V3*)ZJ}aDu!r_u+UJYDI!jZE|E&0OglO`5vyq_(Xn{3>W$`*S@EXX-IM7v~}wo zc$%EX1hawCAUm?fNdQ@GXJkFD@&P*1oA-0SCg~jqRdIx#pCBdA{5n`xZef zT70ceWh|XSRgwC7c%_J z31vF!uhX#6ewnhR!3!%95U&s@2|x*z?dj>a`8BD7i}cMUr|+Z%g3<@?A7906ANS-q zU&%=CZYs61K_2O5PTiR>|pi<+Cdj;pWV1kG))I9QXpHDSq zAwLynRlwJA;*a0|bTadx{sC{ttgE;VVrqd8J#A;~m-vg=u2|;AY+C=I*5+m~Lz$|+ zAFMvw4&iqT{vLGA0-}cBSbD$J2u~Uq32=&}QJwi@i%2fZPekt53u(MwsNZtLw~Q*C zxlLmzeKjL{0}6?`UqHb`Zr1KU1ra5wDS^>xB7n-o#%895kcVpvYwW}A?~W!mR(Kza z3cuwmYSZ%#TW4?CvifWO7VP;_BLKkxLR1TK%0D*yO}!d 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 N8R{A9W}mXX_fL app +app --> loginPage +app --> registerPage +app --> studentDash +app --> adminDash app --> studentList -app --> studentForm app --> enrollPage -app --> classmates app --> overlay +loginPage --> authSvc +registerPage --> authSvc +resetPage --> authSvc +activatePage --> authSvc +studentDash --> studentSvc +adminDash --> studentSvc studentList --> studentSvc -studentForm --> studentSvc enrollPage --> enrollSvc classmates --> enrollSvc overlay --> connSvc +authSvc --> apollo studentSvc --> apollo enrollSvc --> apollo -connSvc ..> errorHandler + +' Guards +authGuard ..> authSvc +adminGuard ..> authSvc +guestGuard ..> authSvc ' Conexiones Backend -apollo --> graphql : HTTP/GraphQL +apollo --> graphql : HTTP/GraphQL\n+ JWT Header graphql --> query graphql --> mutation -query --> handlers -mutation --> handlers -handlers --> validators -handlers --> commands -handlers --> queries +graphql --> authTypes -commands --> domainSvc -queries --> repos -domainSvc --> entities +mutation --> loginCmd +mutation --> registerCmd +mutation --> resetCmd +mutation --> studentCmds +mutation --> enrollCmds +query --> studentQs +query --> classmatesQ + +loginCmd --> jwtSvc +loginCmd --> passSvc +registerCmd --> passSvc +studentCmds --> domainSvc +enrollCmds --> domainSvc + +domainSvc --> studentEntity domainSvc --> valueObjects repos --> dbContext @@ -118,6 +179,7 @@ dbContext --> sqlserver ' Implementación de puertos repos ..|> ports : implements +jwtSvc ..|> ports : implements note right of domain Regla de Dependencia: @@ -129,6 +191,12 @@ note bottom of graphql Endpoints: - /graphql - /health + Auth: JWT Bearer +end note + +note right of jwtSvc + HMAC-SHA256 + Configurable expiration end note @enduml diff --git a/docs/architecture/diagrams/04-components.svg b/docs/architecture/diagrams/04-components.svg index bd13627..9bc4cd8 100644 --- a/docs/architecture/diagrams/04-components.svg +++ b/docs/architecture/diagrams/04-components.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Arquitectura de ComponentesSistema de Registro de Estudiantes - Arquitectura de ComponentesFrontend (Angular 21)CoreSharedBackend (.NET 10)HostAdaptersDriving (Primary)Driven (Secondary)ApplicationDomainSQL Server 2022App ComponentStudent ListStudent FormEnrollment PageClassmates PageApollo ClientStudent ServiceEnrollment ServiceConnectivity ServiceError HandlerConnectivity OverlayLoading SpinnerConfirm DialogProgram.csDI ContainerGraphQL API(HotChocolate)QueryMutationTypesRepositoriesDataLoadersDbContextCommandsQueriesHandlersValidatorsDTOsEntitiesValue ObjectsDomain ServicesPorts (Interfaces)StudentsSubjectsProfessorsEnrollmentsBrowserRegla de Dependencia:Domain no dependede capas externasEndpoints:- /graphql- /healthHTTP/GraphQLimplements \ No newline at end of file +Sistema de Registro de Estudiantes - Arquitectura de ComponentesSistema de Registro de Estudiantes - Arquitectura de ComponentesFrontend (Angular 21)FeaturesAuthDashboardStudentsEnrollmentCoreGuardsSharedBackend (.NET 10)HostAdaptersDriving (Primary)Driven (Secondary)ApplicationEnrollmentsDomainSQL Server 2022App ComponentLogin PageRegister PageReset PasswordActivate AccountLogin CommandRegister CommandReset PasswordStudent DashboardAdmin DashboardStudent ListStudent FormStudent CommandsStudent QueriesEnrollment PageClassmates PageApollo ClientAuth ServiceStudent ServiceEnrollment ServiceConnectivity ServiceError HandlerAuth GuardAdmin GuardGuest GuardConnectivity OverlayLoading SpinnerConfirm DialogProgram.csDI ContainerGraphQL API(HotChocolate)QueryMutationAuth TypesStudent TypesRepositoriesDataLoadersDbContextJWT ServicePassword ServiceValidatorsDTOsEnroll CommandsClassmates QueryUser EntityStudent EntitySubject EntityEnrollment EntityValue ObjectsDomain ServicesPorts (Interfaces)Users TableStudents TableSubjects TableProfessors TableEnrollments TableBrowserRegla de Dependencia:Domain no dependede capas externasEndpoints:- /graphql- /healthAuth: JWT BearerHMAC-SHA256Configurable expirationHTTP/GraphQL+ JWT Headerimplementsimplements \ No newline at end of file diff --git a/docs/architecture/diagrams/05-entity-relationship.png b/docs/architecture/diagrams/05-entity-relationship.png new file mode 100644 index 0000000000000000000000000000000000000000..fc0d1ea7d9307ea36def6a8008474d4d2ecec077 GIT binary patch literal 40817 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
RImQivgfwPL#`i!w{xh{Vpz$k-|-;)UDeG@ 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%0D3VX`hB;A;^2 zF;=$Mty|w7bv7lef;mUo8{1^yE@x|>a`gtTM)xR(TUQegH+)J!54-~DOs6$f5q}n5 zFn(Baz*vPcDq4B2)9pnIOuA8Bk5la3jTD`v)y3wJ8Y>3)=#Zaxeo-m|%~bhj)`S?1 z@%ol1mjWN^@NY zYv4@Fq%Ut0&JipagGuV_U%*ksL{yoQK*y7Pq2x5FE;h!~SY@|RKl6aJt;&61ixRLR`WIXLm(05+ bkWa1xah()If=X3zfJ;qDOA-ClJn(-24A+D7 literal 0 HcmV?d00001 diff --git a/docs/architecture/diagrams/05-entity-relationship.puml b/docs/architecture/diagrams/05-entity-relationship.puml index 6b1407c..48caa0b 100644 --- a/docs/architecture/diagrams/05-entity-relationship.puml +++ b/docs/architecture/diagrams/05-entity-relationship.puml @@ -6,11 +6,25 @@ skinparam classBorderColor #495057 title Sistema de Registro de Estudiantes - Diagrama Entidad-Relación +entity "Users" as users { + * **Id** : int <> + -- + * Username : nvarchar(50) <> + * PasswordHash : nvarchar(255) + * RecoveryCodeHash : nvarchar(255) + * Role : nvarchar(20) + StudentId : int <> + * CreatedAt : datetime2 + LastLoginAt : datetime2 +} + entity "Students" as students { * **Id** : int <> -- * Name : nvarchar(100) * Email : nvarchar(255) <> + ActivationCodeHash : nvarchar(255) + ActivationExpiresAt : datetime2 * CreatedAt : datetime2 UpdatedAt : datetime2 } @@ -40,14 +54,23 @@ entity "Enrollments" as enrollments { } ' Relaciones +users ||--o| students : "vinculado a" students ||--o{ enrollments : "tiene" subjects ||--o{ enrollments : "inscripciones" professors ||--|| subjects : "imparte 2" +note right of users + Autenticación: + - Password: PBKDF2-SHA256 + - Roles: Admin, Student + - Recovery code para reset +end note + note right of students Restricciones: - Email único - Máximo 3 enrollments + - Activación requerida end note note right of subjects diff --git a/docs/architecture/diagrams/05-entity-relationship.svg b/docs/architecture/diagrams/05-entity-relationship.svg index 0817a59..bb66fa3 100644 --- a/docs/architecture/diagrams/05-entity-relationship.svg +++ b/docs/architecture/diagrams/05-entity-relationship.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Diagrama Entidad-RelaciónSistema de Registro de Estudiantes - Diagrama Entidad-RelaciónStudentsId: int «PK»Name : nvarchar(100)Email : nvarchar(255) «unique»CreatedAt : datetime2UpdatedAt : datetime2ProfessorsId: int «PK»Name : nvarchar(100)SubjectsId: int «PK»Name : nvarchar(100)Credits : int {= 3}ProfessorId: int «FK»EnrollmentsId: int «PK»StudentId: int «FK»SubjectId: int «FK»EnrolledAt : datetime2«unique» (StudentId, SubjectId)Restricciones:- Email único- Máximo 3 enrollmentsDatos iniciales:10 materias3 créditos cada unaDatos iniciales:5 profesores2 materias cada unoReglas de negocio:- (StudentId, SubjectId) único- Estudiante no puede tener2 materias del mismo profesortieneinscripcionesimparte 2 \ No newline at end of file +Sistema de Registro de Estudiantes - Diagrama Entidad-RelaciónSistema de Registro de Estudiantes - Diagrama Entidad-RelaciónUsersId: int «PK»Username : nvarchar(50) «unique»PasswordHash : nvarchar(255)RecoveryCodeHash : nvarchar(255)Role : nvarchar(20)StudentId : int «FK, nullable»CreatedAt : datetime2LastLoginAt : datetime2StudentsId: int «PK»Name : nvarchar(100)Email : nvarchar(255) «unique»ActivationCodeHash : nvarchar(255)ActivationExpiresAt : datetime2CreatedAt : datetime2UpdatedAt : datetime2ProfessorsId: int «PK»Name : nvarchar(100)SubjectsId: int «PK»Name : nvarchar(100)Credits : int {= 3}ProfessorId: int «FK»EnrollmentsId: int «PK»StudentId: int «FK»SubjectId: int «FK»EnrolledAt : datetime2«unique» (StudentId, SubjectId)Autenticación:- Password: PBKDF2-SHA256- Roles: Admin, Student- Recovery code para resetRestricciones:- Email único- Máximo 3 enrollments- Activación requeridaDatos iniciales:10 materias3 créditos cada unaDatos iniciales:5 profesores2 materias cada unoReglas de negocio:- (StudentId, SubjectId) único- Estudiante no puede tener2 materias del mismo profesorvinculado atieneinscripcionesimparte 2 \ No newline at end of file diff --git a/docs/architecture/diagrams/06-state-enrollment.png b/docs/architecture/diagrams/06-state-enrollment.png new file mode 100644 index 0000000000000000000000000000000000000000..59a6ea45572c211db26edad36ea8bee55cdcd896 GIT binary patch literal 48459 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 SinMaterias : Registro inicial +[*] --> Registrado : Registro inicial -state "Sin Materias" as SinMaterias { - state "0 créditos" as cred0 +state "Cuenta" as cuenta { + state "Registrado\n(Pendiente Activación)" as Registrado + state "Activo" as Activo + + Registrado --> Activo : activar(código) + Registrado --> Registrado : código expirado\n[regenerar código] } -state "Inscripción Parcial" as Parcial { - state "3 créditos\n(1 materia)" as cred3 - state "6 créditos\n(2 materias)" as cred6 +state "Inscripciones" as inscripciones { + state "Sin Materias" as SinMaterias { + state "0 créditos" as cred0 + } + + state "Inscripción Parcial" as Parcial { + state "3 créditos\n(1 materia)" as cred3 + state "6 créditos\n(2 materias)" as cred6 + } + + state "Inscripción Completa" as Completa { + state "9 créditos\n(3 materias)" as cred9 + } + + SinMaterias --> Parcial : inscribir(materia) + Parcial --> Parcial : inscribir(materia)\n[créditos < 9] + Parcial --> Completa : inscribir(materia)\n[créditos = 6] + Completa --> Parcial : cancelar(inscripción) + Parcial --> SinMaterias : cancelar(inscripción)\n[única materia] } -state "Inscripción Completa" as Completa { - state "9 créditos\n(3 materias)" as cred9 -} +Activo --> SinMaterias : cuenta activa -SinMaterias --> Parcial : inscribir(materia) -Parcial --> Parcial : inscribir(materia)\n[créditos < 9] -Parcial --> Completa : inscribir(materia)\n[créditos = 6] -Completa --> Parcial : cancelar(inscripción) -Parcial --> SinMaterias : cancelar(inscripción)\n[única materia] +state validacion <> + +SinMaterias --> validacion : intenta inscribir +Parcial --> validacion : intenta inscribir + +validacion --> Parcial : [válido y cuenta activa] +validacion --> [*] : [inválido]\nmuestra error + +note right of Registrado + El estudiante recibe + código de activación + por email (24h validez) +end note note right of Completa No puede inscribir @@ -33,17 +59,16 @@ end note note left of Parcial Validaciones en cada inscripción: + - Cuenta activa - Límite de créditos - No repetir profesor - Materia no duplicada end note -state validacion <> - -SinMaterias --> validacion : intenta inscribir -Parcial --> validacion : intenta inscribir - -validacion --> Parcial : [válido] -validacion --> [*] : [inválido]\nmuestra error +note bottom of validacion + Si la cuenta no está + activa, redirige a + página de activación +end note @enduml diff --git a/docs/architecture/diagrams/06-state-enrollment.svg b/docs/architecture/diagrams/06-state-enrollment.svg index 4412e1c..39efc08 100644 --- a/docs/architecture/diagrams/06-state-enrollment.svg +++ b/docs/architecture/diagrams/06-state-enrollment.svg @@ -1 +1 @@ -Estado de Inscripción del EstudianteEstado de Inscripción del EstudianteSin Materias0 créditosInscripción Parcial3 créditos(1 materia)6 créditos(2 materias)Inscripción Completa9 créditos(3 materias)No puede inscribirmás materiasValidaciones en cada inscripción:- Límite de créditos- No repetir profesor- Materia no duplicadaRegistro inicialinscribir(materia)cancelar(inscripción)[única materia]inscribir(materia)[créditos < 9]inscribir(materia)[créditos = 6]cancelar(inscripción)intenta inscribirintenta inscribir[válido][inválido]muestra error \ No newline at end of file +Estados del Estudiante y sus InscripcionesEstados del Estudiante y sus InscripcionesCuentaInscripcionesRegistrado(Pendiente Activación)ActivoSin Materias0 créditosInscripción Parcial3 créditos(1 materia)6 créditos(2 materias)Inscripción Completa9 créditos(3 materias)El estudiante recibecódigo de activaciónpor email (24h validez)No puede inscribirmás materiasValidaciones en cada inscripción:- Cuenta activa- Límite de créditos- No repetir profesor- Materia no duplicadaSi la cuenta no estáactiva, redirige apágina de activaciónRegistro inicialactivar(código)código expirado[regenerar código]inscribir(materia)cancelar(inscripción)[única materia]inscribir(materia)[créditos < 9]inscribir(materia)[créditos = 6]cancelar(inscripción)cuenta activaintenta inscribirintenta inscribir[válido y cuenta activa][inválido]muestra error \ No newline at end of file diff --git a/docs/architecture/diagrams/07-deployment.png b/docs/architecture/diagrams/07-deployment.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b9f27976dd4874eaab4bce180e4ce31ce0ef2d GIT binary patch literal 55439 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%0A-2cEZ!X$GDZI z@XAc-N%|>z6>E8fK98QEU+LB|JNo2?QI-AGBBI1jM>qOYREVE1Q^y%fJafO*ViXBt zwtxuIDT)F{oDk$B;a8kNk;Y7pbZ?J_={jxC=l%9~u~>@j4X#l*21;&4EqOuX2a<~J zH9nkzvLPr->q)TR6r#jcg*M-Ibz|tcR(}6AjT1t7B1`<0z$9DxFY-xI&wq6)?jI~> z4<9yj^Pf{)gwg`b+jkO57tIcM(t4z3XJ;uHdQMcQWS(7lZMDwZ-`v*>+xpV*?OtTr zJKv8M&>Bc8Fg9(#udW=_6qxD857aP*jNTQK*+1+^n0)8n@z$-8l#zdKX`?HX+(G}klT3o3`3vHa@LFNly~H8T23Nc1 z{?q%RuHS$$jV@mcS+0Ul5v>FV@)8*q)ng%|LVXB+$GyFf%;*@?m|mnvJge?BpPq0?L5yea)#J`-V<##Gn< zMg5;(H(kYZf$WK~i1}(-Yl!iQnkNr2m(yNT;}g0r?@1je*&B}pN~dtayC-Vl1Ij(* zfj#GeCTIV>eUBmuNki%sf!rwxCbI{nl^##JrrJ%93JMx-_o81J#4D6|XC9j;?;?wa z{^gP0*3K{GH@P>MyTAF!>bK`z$YpdRM@7*`ODk{PE&?|DUu?Z)TwJ{qHjG1|xD?ke z6lj6sR@~i+dvSMn*P?~uE{nSsC|2Cv-Q69Yv-kgbzP!Kp+wSHhnM@{`WUgz@uHA{n zfKN)@OvZmNM@AY)6c4my3F)m|8$}oRZHLWm;~iZhj>M&oH&D5fK3lnI3D1SF;5+E% zuW2f?bZUB3X}4$pA|qj7&n^&=1v_6|E5L`yN7oI^ZUJ6LVxN*?Z%98U)0B?zd|+}y zw(fKLcx3@1Y6O3?Uwv-pFD7&y0w&{shKcNk3`;edv6GVia+)ZdR|q5T0c(8p_n%jr z62`61ey6cZO1S2vswY1*FJjmXoh|h zrS?tIFh}96S)VfuXk!1`Z!S@k>s$_**GpeS9B>3QO`w50NznS_URk8q&Bn<6iMTb@Io8&)HcE-@zVZBYDyK>Ad-hKo*7X_%((GwgopCi&*-p zR2o$5_^o74#Tv(uL4SEcf8VY70zGn{u)Xrr<7hQ*TXXqxRqjkIm+$^~NkP1IPL{V) zg9LcCsITitDxIYMmOt|*vWH9fBMobv1zk11W_x+cL*+H1iXv(jH6e2xFYgK~6G;Q; zmGr*NAh0*?rO|SByPuTR3S)1s?29M;P?=Xw?CT&q>`?dIbkR-+W;DW34mm>_?koHO z{c`R?d%JeD{QWSQ^aPyxf7H{linBNt5eK28DYJTQ+0))5!lqH%1Qw^u_-DSS;{2>u zN9OD8?E5*Ru7nr&mp_yw-3l8ALYL>U0Ms@T)#|A;=a}F27(qB@3r~pRjB0XnKw3Zo z8{lNmMKQR;sDKDZBtD_entt4U6|#MKI2+gFn3(4$S`mdFIi@Iwq`uvDu-R2~{m){M zloVh?j}NnRoT-9+?8BMsxICMg#8l}e2RL17_srxLws-cag|Mew9%6@Cu5>WBTDgps zl3S#8i%zq=brZUuFcr@uW14;W*i1FO+?iN-jew|Hs>oPZ@KBo;BC=JDjP6gHe){rA zvW-t}XTC+1)DH3lhetqfY`gRX*O0FM4Q^`W3lSRwdSu`rlq$x5P*;8R_D$~@h|6&Brd6@59Ysu|wdR|2gyKPdM}Y_=fYPP=P`ORp4EDAVva zzmeX!aK_tmcf-L$r0=ofH*J&;Kicr==>4_w<7MZVc$51v<&DlMTj`M7IhAJ9R;t( zIJy7WDtQQb!sw?BKT*P&Gt&XPyYT4sc`Oha%yz%PP)uxa-`g8#qA`tgw2<<;7d~`w z;TZ$n&R@|q-_lgtr(k)qJVhwYffKm6l8Gx{`kHAf(8X??Z`8rn8G)v2NyEY?#mR_?gJeuaCdTia&0Y5M$ZqR2oUL(N}cK)Xov9_~C9nS}5l4t7Kk;DtlCdsgzedzOt1ojojisdKM!4!jA%8z$j8mvyviiTn`bxSQ zB!mP*;GJ9 zQ3+R|_tI=z002AeGR7Kyg3c|1w~uT?Z4k*^85m!Bv4o>wGDQf&tk*lLcaR1m3jPvooWgzMgYur8iT!5w*c&# zbfY5Z4h)Fx9Pj36nQy?OB%Ajbh|df6=lEpErL$H-192&Z?yXTm70p0xgnGzW6#`Fk zvflxfaC@i_fCNu=U;uPs2URCEqL5%ShPCMmj6Nh39*}DM>6B${A5xB?!mq=3U>JLo zFK7;_Dq`uJf3psEBpC>7El_mD3l7De?1LVQ*&hKlAgfx|6I<-}y~~2I;<5wON6@Uh z2E76y%me}8Z5o1Od6y^&x}KwQ7>QldP^s2rXB{|UD)iiS`YNX zlEQgy9#(pA9}a@QT_&7SPEhBrQaq5Hao8a!j!?^A{U^P1m5m^@(C?U#FLDnz*Pl$8 z4o4FE6+(mifn&T<42ZWlbcrM1>} zXbrfFs`!yG@q4(--~X602}><%7waK)yT9#K_gv8ELGt;RU;vP8=7*dc9h;-bKgI|z zJa&?>#`Pxs!oF}a`QwmX{s+hKEJI{(;p@qL-G539=^sBok;Mz`jkl6I(M&9H@9)0q zTyHy(o5dc*0Sp_ylx^jJ`NJvWtTfU+Ec$`)L;a0HMp0_5Cd-36-F@PSjb%^==mtV& z_E(tFi{J2ydymWKJ8A9eR#rx%=kRGCeVD<8*e2}XG$y3E371qhi6Nt@q|j#XMc&$> z{Knm~vq!H0YXNOT6d4pbHTe1^nc86CL>{HUrEogqUz05J7MKx0^MU%=08c$V-7Yx% zk2WPU_W$EISxJ9rcehS9cwVKr^u5a6c~$^DHHC`RvalYvx}N!hx@!F?St$r|y7V$v z53QoTWg!M)WR1QejPsQmO--K9mL%sd{~inCJK59A*ps8GgF{CuqxSs@eeB$;No@^1;=pK7~mk$hDPdcc{7yl8K8A%zhq-&JaeKK!OsF;yA15$rt@1kRTyJGYO zxeBbhvwR;UBA)H~l7Ra1!pgz(wX21s9+G&et5QkTLPNqa@PUCTgIDkqolcU^nER^T zSz}17S4nJUr4bzLTpllK?n8D`-qUetJd4>I?Q3Z7I zUeKIz#85CjFaEx8>XZ#7ycK{@2}7`|0hDn06CAQroc*U|a?^nbsg2{Rv}HX`jyR|A zN90OX=5GxH6$?KYE631L%^EI%cXvRSeE8x{k0E?&sLo2=-gtOVx)qQSa8YqNgOaeN zwOUu3DY1hFR}tf}jM`2l1Ef<4+~odRl^fvTkfFY+i%$Ew)bE|w;k~T->L<0fP=s#j zX+7`aNA|WnOx7*B8*rhAQTb9*I<>H#c~}bd3*dAL%;f&k;mBu}t)FVC z6JSYi0pjw-si_2qFIp^c(#E@dSpXaB5Xc$HwosgL8LE6?b+3|ScURRPcbRR=NiZV9 z1l&Lg-oiLn8c0O`>8JTUp)1kuz5eSE(~+181b(cip(9zu;c7pSXihT_OFLAN>~5{t zBIF;16tdO-+J9YuD+9s|j;=Fp;?zqOd;(N=@DwlE3z0=JTkDwGz>-@if;NsfthqcB( zZd9u5LJ!!mzr;UHY*6zeuQ?ol1hOlra5`JOu+`J?MS_^W8)i*zMkf!VwR;)b2@mPZ z;^%CNkc4~Z4b%fnm0JoS4QxZvvE&a_b;qID&x3(!BbfGxEgkwR2%sv4O7}2@-Q33p zN^iRG@%?bM#_G&~e@vSuD=?tg9L-Q9cG(1tDb}g$Or_bGdm?yidT5%3Q>{ z=}JJfV2A|)W!+btKdnH^gsSaKT&$~Q$*p_x7Dt=6^F{f_5d2ZsPZimTgswyUHNQyj zfb$FNR(DxZD|=a}Jn3>j0b&`2Fxv^>x1k1%rTw>fIv9y^y6)N{s1p0H9`u`s*enxu zv?w9~zNv*MuFgN7lk|%jIx!1}nA*%!&1y2f@|+oWU@g}RMc7EX8XNn5=jWHdI!$RL zeOG9fEZd}mk?Q_nY>7rnm z7)3>68YyM7c$1vP){_=?igU(>oa69dA_s9aNe^(8ERKy99<~5>ekaN;UsC` z1FjpN?ar1nIK6D6uv!z93_EzmVZu`|($8`t6U5uF#p~^`*Y`sjLXnGH!EVe=GhlxZ z+m1{qBm48Ob3hd$eVCo+q>2vJ3H=pM!MS_UHZ_y1!DGrX`kaQFb@s_o(d9#Wt7V6% z`yn)4WknrHW#WXd^uWB)OvDj?rc_q}NM-rGGGp zy{3xyYTf(0xQ&Cn&3^l!=8w|$2tvTPl)J&{#QS>egL4i*>Ed%9bB@p zf6!kEzyda`83VTx(^3pM_H)#G$XBpia(s3Ukv1z{(UT{@!a{pW6vz>G?XGjI-Rvyd zlj$y4Es6>`v6)TK)NGoZ+UfgX;apU&7#Mn^U0j}{oQLXJjF2QOnDSSR!_>theA9#xnWAUL?i2%s&j=P}EMY;Z0ztjGch$OV1 z2X~qW;mfAxjsx)Gv!0y|G4Jc`_tvhlwshI9r~Cca6b8#f##v{-Z}>{941{8lY4Q)V z+~(OtF1I?=9-H2cZV}%R?p%${MN_Z%X`&>z#r-)h*=k;_H`uogoK2Pgq}&kl?Esqq zIb!)kGV-4~mt=rI$f83=rQ>D(*k;o*G!{vJFP*+;6Sk?lD77`$KfIRy%|zlZXJScY zuV(b?*q<>*V%gQ-3_2YHN6u+Mr58o}Hv2wN`!Z*|6Ry6jxcIUq&}?^Z+3`y43+NW} z2sZnDu9o}-GHl0^Spb7V6wQieCF}Jg19gZ?dj}({SjF2*4xh{SLu{^Vnp*tIGi$1= ztk-L80H}T4k9iyyDU`owZ+<;``Ci?fN$9@7uh88^K#6^TI$So4_cy)KhVB z=ObTt{_2Tyr|3WNkx1c51GB^o*L!Cql~nXlw^Pnn3|KM|_`M>rwZfW>nV`i{jmIKV z2@;Qt>uaaqGU>p(nVR}r$X#ww3!dQeCmZ<4CY~D&vtnvjO>s~EBmX7dxsMec?IBdk zwr_)yog_@MGOoWS*STSh5->MH*Q+gUAs(m&SI|osk+f~ zsr8QUvF|3-)AQ`q+IGb!$GM(Pg&sFYiB{rcYAPXNI2>Zg`;>F8D>gkO42dq8_`6!R z6fWT9m3MHLo9Qfje@v7gC6qL`zWj7jvcNOuXQ@rEBj4#SUVGYFW{lCV{7rZB3VP8T zc1?}$A|Far5W0b3!=WW5`fGdJD{*`GJKm}6UG|i$3RCyC1B<{k1uvD>PxRV578ZGA z6_paMRv(YMp7O+cHjV(^B1M=_JWVp@u;GbscpIsLsG<>l6THrQ8eW8GCe(}M7vVQO z4c23iUP&Kf&`##i=1;15s^_&cUxtUn#~S1X61*i}Uc=$;liqLbaYbVZEG(H?I zO;^|KXiIV0PZo>aW0iv1DO@*}l9*7Sd5miOoqgKv1zu|hyJ|~N;P3DC)Z)}eCG5ah z=GKP3|6uybB*hzaMRS~KqdIRjsQmW#C8;(z!{i6P0nb%okuRqjN1LX;{sA+>;{;(u z4tUBVG#2G{CoW!J!{<@=C7x^Fxxx63h1qnVOw*U?8R?S$sJ6Wdd zyj3Wr*!Hsn;!hXClZ6kprO~0QR?Efi;uYmoAa9dmOoJBAK-sM>mrqKHzoV#g&JBOH zKU2AEArSmTBRETv248SSROaPphfqo=met6Fcf35cphgxvzNEcJviKB$(_J!@$gRoF zlzOY6Jtv=s2h3fp;cq?Tlz3xdTPo$fl4Y1NKS=GbAEWB0u|ZDV|2^@yAd~yA-V{&3 zdj(<4e0*f@R4gT-&s|lk6#4&^uUC_l!1jeivrLh);Rr_fYi%?^*SPnZ04M^}j$d+e|)_Ou@wl*I_b#Qtm02W;x5%9z}s78*S%Mo$&uPWRs+ z{bLgsQ{9g*KiD3beC@4UnZ2L_vjKt|WrU%V?2P0ph+PiXVY-}5e_?)O@mhQi@h6NR zKiW1IaW665w$B75?V`O<=8fWykXJ-NhUdKbY>Iy`Mwz2__d!p?yqaLtq~7Dd0z>mQ ztQ5p-hypZP=M4L{H?NY>G@P^zZY-N@>MTxlHV5QN&_Ih?0_Vq-=5_; z^T${f;D{?I+Jqsxx%pwvCQN5MdPUr%aKk^>kKy$5;OyIf6-*lEVNNtX-a<}T1jroo z5mf0l7H_iNMM4_eEpYck7@NE{=zzwf^mxCGuEzdszk;d?8S9F=CbZmVSs%>jjMX^I z{Z#ex>!edlK1HDDpz9Dc?Kd z!3Vrv;j;shU&GbykuCHxH-UtjBiE!(M z1h=3zs$vh~s-68che_`DcFMYiQ%rFxUyF0T%Vw-XPs6A{({dZc-r6|_-X&tdfvs#r zZ+Lkc0I^WL(re%RSD`7OMzuaT@$vxnS{7_I@$8mSPhQZ&LOgk~OAE2#;l9nc`D<3< z3~z3WPd`H`B{sayJL!-Iz2hc%{t<6x?UM*T*xSrrm|xAKiN)BJWm97meLW#~YZc^@D_SGMP z`?qJKha|!a7l*DEkdlouW>UH+{7M4kb$R@aYT@rFfb{uxss!lXO(PYqK@a=w$LzzC z;6qqoEg>~8|5F&y~9wrJ<8Pec}j)-gi9K3IdEGU z$BMxJ%_o;UWypgwk>J^v-`JZaoEVd3Wfi(+qSeqjZiVuV@_1SAgS)!x@63+YrlRj> z0+`)DE>K+$?RBRWMEHL{#C9kyH}Rm^O{JQdh3c8mGP*x}fo76@v3VM2bv>Nj-obyEw+o20zl|Fv5uaumh%LkZt57qv7ruOli$L4>FbHXyGNlrnPQS{GOTMu4+9r8@39VWJb3rR0!`DQKS zKe&GXz3A&1y?3!Il;vjL(t;&z6=TePM5&~g_lotV@1Ex45$uLDziavKhpYlaGumvlkwC6$%HTf`ndNKQLJm&GXZlf@@PD61QJWfL{6 zgjM@8GQ#BISqu%z2*L<_sJ*P~pHPCc0)=6l-#~DJv22@CYwCdK2$;qang;YWgt?xL zN={sBJdD-a^V2MkyPpQQoZAw2085YQ5NJ)G~&AH_N4l^_0>!ggK1 za=f$+7Z6>L+a^o$`-+lD37c&ft@XfG@5V)NAlpB+;yVV8yjhOEL^@Poj+k>)S&LiMvgWQJN@+h<4tWY}LgpmG|_4wVC60P~Zv18}h5w zQOe>H$Yi6>z?LS=G2+LZx?dqSy8?@DX2AK{txLFZeT4qL&(%XbT#D}Zo48LoZu0K{ zk*77eu#nIHVQ6`Qb~;U8!#}JAx2s%D^c`H=XQ7;4taH9s3n{{P2Mgf*rLso)W;Im3 zdywfQMg}`9=-M7J2o2eohJM7XVwS}qzZ>b6ber;o!NUBK=gKp`q{D^l{?j#)#th>0k_Iw7#H*;iZZDUtDz0pP zRvI|r_4vysz%y(AILXzH_)ZFC_T46YA|IR4x;UkII0~5ncj23HYOLQD;7&h#atxz^ zMcD1Pc4DsgA2YF6CU_)u2_$;0Ckn(L_?UtN9ZJ^>WZyT7P=HdnxY1(Az&v@mW{I?8 zGBl9he~MN+*D0z*$ZA&zYUj8i^mb~}bo)%i_sKVKY^-|j@Pw8nt*Gtttw1L%$!TII zf7|-Yd8v}DsJQRr=+27sbcv)y?5x1WlE(g%IItp@4i3++pbl23Vmc)rBw+#bK)$0-LYZn}RmSxd zHB`-#PczZqEP}Qs*H8epTrg;3d>J9DrgNp?u(BG>02iB~2Dvw^_^9`D{oIkd>4Aev z9dB_CTmPLiO{3L0t*Ou9H}k($5$`@|L{o}PYm~T4fJ)8W?LHPEydzt&D_?YAHSGDX z7u|OGU?Xa{94aV?cL@*& zJgsBWYCrpWU&PY#r{{am?y6dWcl-!Dnm?`yIeJ}= zd##;Tdy0S`P9;Kcm%o{R`_oMC2wyUeeYg0q)G#$J({22ADbGOg{(^v`svv#j$X8|h zQG}JGOvnVT>+TI1-NY5S^K5nC>qSC9#zrJEXP}TJaFmf6>*IPN+b2=@9!wv<@kEU! z*<2f+>V2%9JGUwI)OO=|7FT|Yd+7|zi z*CWFV|8>CRCrEY`mumQHnAXyad8bsQk~tO&S1m?uxG9<~sL#a(#tUmdR_O$fi}R+Y zM_PqWiT9#zJ(zPL<_c}RM43*3A7!T|pQAY`{b&@{;*%0W&G-E+=h=V_2Jyu^S?V4p z4M}#!dw$vXO{^Up2G76q8RYy(`FS|7?3}81$S2E<&P6?(ip0AYL6bvK6>SbHTMxA*J_zVQY}0f$gg-Rx98CUY@60uq!J$2^ zkiYGvfN9+wMO@AUMcgy&%ekvzPHMAvhNSd#PM!BoM)E=^K}B6S;I1xQ%##S_ z5GrBR+vSgbYk!TZm+E0YqgMEaUt5H7HA(A|z-Xu3sF&4BS^VXO(MRSa*ZR^EY8Cr2 zmjX}m7u;_76Ti*j=j!0l;?&72DCR&^G`%Xbx%bh;LAPN%Xt~x-XRS&W+)Y-TJCrp6 z$tI3U0jeb91X=K3^zh1cAhJXg0XJbbvcG-5rr9d0{+luls=!l_Bokgh@|2IQ4D5tx z#Aqx5!fNd8{CS7+-`>ROYLfh~^W296iXSD#=HDAQa~m8lb|g1|4po=>2|C3(cuGg> zuxN;STm{b)@uruVJI&QT>505;juQ@Xl<*ots)F#Qy&W0r2~ z?ONa@8qeOSq{sDLj1BA*bPi9ql>g|3fgrJYqS?nYry=Wj49usNzdt`U3xT&XGBWx! zzI8~|j2d@foUU^gVkI5@}Ad+Pm&~@H- z>%6NSb*y8W&~Nr30n#KDyli$uPK`5>>K@u)hPzq?2KueTCR~q8hjrj4Atf7(%A~5^ zM2IK*qa_6-`H=0{>sM2*K*zyWbY5fP2nra@(>82caSz2vO5ln#4&KrzO-~#P&~R`r zWmFYH6&(}^zKN#)ysSOQ$!t#SG6`y%%>Zej(E+#5#7tz%x$o*t^^&F+-xI;ye;8xP zk!pM(?(mlcE6mT&z6P0%IIm&5(%Q*dK%}aW{7WXezN0`a{2;@r5zp4IXgl@n47vWx z{UOtCnrnV*Ug=5XT5xNP+UR#eOI}pSwFTs0X;;NapL3Ux(e!_xg#z#9!Qv|FOW@3~{hCZcuFcA%th45uSlb@pY2!3AgN50W!gpRL@g&qIV(|7G_$=UZPeXUJsdtkP@uan;X;SwRmvqJmo96Or3@JI`S8~7{t zIXh+H-S%N~t_Uu07NmV{?gyH{;G3U23Lg2i>{! zJ{3a!cHO{I)HUOyp&uz4*do2G`QHh#B`)CQZo|4y;a0>Mm8S}=m!NVOX|T&_VOZ{B zcgpIXRhq|dgS^L!Z{|P_csF9h&gYWyEKN#ga)SAAcomk`{_oTa+^>QgdF0Z7+e89? zGBvm8_cR-hHwGirzPoUa)Q}nbrfS#^mZ_@`>q71IVv8EVcl#0_QgTd|Y3ZOWBww?$ zQw`3%+vzbY&OtFGzy3(LDB{YSoVD>(B(}(GNw~&O(!N*ps5G+r#6{yyX+cnW3>Owb zH|l2muVyczbjDaY{SL>ry{MXT~?gcU4Lb+_oN3Y>!q|c4Opd zDBsy>$qXnw?uMNWq$ku-C!81dK1fm;HX~MLJm2r;v7=*4{pAw#q89i3G^n*(SW~jN zCYW0NIXQ?0?@7%_?`jCPN{Zcab2bnoi`zmu{bKMYS@Nbm&_>>D`{z@Bdg{&yqPcV{ zF)L$7)MqKha*;y+j6Wk|aq_+ViYoI!IOwlz-&gG6IK7ROmSH3FGj*HYU6#qE>aG$7 zWCyxihd1sIqzPRtYs&|#eoW5fP`gmmH2;iIW!H!{{~BScE!e>v^q~0kwJYWpc%JCT zBM3goW1EBoFO-!W$4?b&#vT_HRY#&ZlCR7yoHR0}vSgAC2JCu^FAn9ey~rxO!e#*S z4KcJ&|9NJv`6OD8m4e`M$!?qL;H@_I-r^GsxLG*gdSM*O|KI~Lu>qM}prdbF%?GTf zBl$k{QktcY+DCnF-0VwrzVrgmKEqc0>W405TkrD6E{>EhLjLtEL!abRMWaA_7I|2( zeK(He$lmtTCpX~l7cl(WN)qqt(phOJi;is^ALu~E8<1}{jK&6>VY)RGQ&4Wp8&aov7a+IvaBz_mqBgc_l#U*E!~^u2`c8?idtH zY3P$lF47F^sN6J>nocQLN~4KJHflJWjqjinZuY>U_T4rM$1Zby4GoQ=6=2VfIK8#d zxs%Grx`hDBpP1(`<%?-&7*4(}S`I%cd_T^^xT|Zf3QpCrMY3UtT8tR!xwu zqdCj%-0zW@&<1T9SumbFWYWjCEc`Naa_B`=5`J_)@Knelv^O~jFH1e`?BsH9^=AJ$ z?-nWPc0?N(mb=-|7(*4uye`av zM#B(TC7Pxy!)YV|K0ai$5zhqSL8Z7s=nQLA3{xOqPb%;Iy}B4zP{Z; zeI6NV7t43s^e*Xj9NWsK`4Jy;Bgd$3hq&<0NUr^_-u^AFyLQ~3_*{xB3tMJmXXd*c zy$n<)e64Pj_L#@cdmSALM-)Ge&1l%a3fFjhIHN}FEI_MMm`d0bjt4t7cHd~4k4^sCZ;)Y z2N#@;$qjl5QPg?mJX3p6XX807?~>UnKz^S-gdU2` z4!XDe4~N19qhBY6i-psm==dA20vepTS(>BNM-$ldi`_P<4zly2O|yj;FavYOEZV&? zr2LdF&3ii-GDN?W9JiNhm;TmTDI5?DE-TKFn3z9l_n#2HBq^{hw{}`d244$O9L)s{ zw#dugFm|^*>wfBrYI9It|LH_eKll=m<%NvNb zb7{}aaWLV79INl%m_cd=pUu8Z`{6wd&sXU2BfjYM6U5(=>}N z)(Qb_MiX$`DjPpa`=kM7hlV^3#}@7xEk$e#@E=PoRI(;!VWTu7Oz%)Oq0;JT+O?L2 z?bV}pzgXI%%OsF`!y)OHH{jam#s4T_fpN_tXqm&tY0+o{vxQvq3{@m+LatuFr>D{TwTUrvseeD38PA z>CfCY&sp!#mMA>V@^M=_@K+F3?-F!8e9tA=0R0K9q=B1pbmSX;J8l~foi>MfWVO)n z^$tIK`q(5eUtKvDjN9L+@5O023X{yQrfFqMFTMXIzXK{4-y!}u9jTP+p%nX%cShL~ zoMJzimpjYih_bomNSwRI{F3>b^~nML?GlmG3>K-+3gq+espLFMclb@1p*%;MbC~7l z&SGduCu9bb>-xu1xzw1~O&R zVA|H=hhiw!Oab2zARfb4i#>e#X|GJ(Gwx$Hn zXgerkmAbX+uA3jg6hJ?Hw%pqUjwcrJ{0Afg)xQ(EFZ(NZP4CPd#_|#mqBm&G_|U7{ z&FwvsMV&j8WlnFM3$N%y+%!k)4s?E+rneBic%U%eR(?>r@ z``mT^6^u1m_xy)Vq%riD2mcyrP8Qik;Gu!|Ww_z}AL2mc>MU#Q&S3E+pR`OtT4lG9y&t!wOzYVlyK5eW{MLcEncMC7? z7cYT#)!tvgv6+gkK=fjBmcu?kBj=bBshc12fA6;`y%8WZb6GEs2^h5c)qZ&CYkH2n z$64A3eC4DNi{_qOyOAa6mpMjtIq!og-VXg{T>Gxyt##eE5X>oDfuwQA)Ys^KfyB(z zri+%Fl_c~d=fkYsZ?)yK{5)%n6f~}xXM+U{#{Av7eAzPx-mSzHPHB-Pj<^kGn#VrW zco9?H+W8j6wlla3Stt8PbU*K;C=YKD`Lr&+nQl3S!pRv^wY*)d$ePa&OPgdnW>0ZL zD86-mw$rq{_rm7BSP&`V?nA`2$d|@O#o)$7A~S7>1uB1c(Vn{Ie*cQ8^mLt`l$CJy z(SqxX`BW?M7^kt?W%v(fon4W4*rvagg-qISa^2S^{!XqxCQC5(qmv1_pVh= z>XjmLgZ}KL}yavdwNj9(af*w77Yw zGEQOO@LUM?XTtqTk&c&FO`IzA?E1l{ukEi7E`PGizzR^Ic0m8uk(E&kZ4(suq6a>8 zHM~0Yd8;=+w|Kx6=KW&2c+JqqBDZ3k+JE7>z~Go-#^5YE#l`noA~j3-3?DJ4`F-ax zF)ED66M6*oB(I>{$Z#(!D)f8yDW=4I?i*OJ{n~h_k2`mkrH#6E_Gcy6u3!-So1{kY3VPi@J1kw@gJ2kz_7wj*4M)+1BA5#s~~$;G+l+FjT*85C$9LA%S1*38aUU?$^F*a7}Hy z{WEVpeD6W`rs5%ekm}~N`@P^u$3ZuQivxe?W^Hir*Ug0pjF!}Csghs^odno!HFIHK zd30HKg;+ckh;24@*|kbF;VYB5?6$!yNqRyz%LLSzMbhkzrQ5L_aiNr}k za{@qO&(FSBJMZv-3m(Rg3CR7^yVS^{aKnL#<_p8;EMJYecEiqg-T?9tA$;#4aFpdB zwPyrkR-Hw}pZ*FLz6kkCV)z9Ymk9byO}lVQy~TzYmCl+ZEM6rP$dxfH<{C{O7DK>X zt^`tTtpHnY{q@#g)TRFDqSlcLI+SH-RL;Iv8D+QS)_DFlj*gl-4QqBY>pBY9u6}iw zT+Nh14`tFv!zD`Eh&QrC|_ee&_RYJ-vb7~)y9 zue@~`*ZzKqPYM2I z_JxeY8ShPi4hY^0M)~b}(`;DjXG9E;(yYk>)bD0c@8$dg_|&Vp!keqXTaG45=jkq2 zD;GfUFnScuyYuDAG98N{njy17kzDmOCj@!^DR6PI=+vHTw_4)+S#0snX6OeGFgJmi zgsj4cRmv<23E%GbyT4JKn~vu4&(rgXF~($MD8-ICpA6NU{9shRxe|{g!w^LUw4k6q zN^j$JZN6X>!$cjB z8wH#)1-2l#RSEh?v^?8_^77dwLBVcgtuiu$J*1nVqt+G^J6;^YSmZ)t7Z*#Ir5vOH z6(*V+G$_a?@*_luIT^hGYzCx&GBSvAVsHM#oF|e8*{_8G;Y8HvmdDYbF29fDLXhcS z*PlJ|uh(NbQVo12cmhg5FLUO*w{mTPg4b|Qmovi`t7#sg3NNf~Xa^)PxirN&Gf~F_ zeuu2jP$HW(}(Fkb)1tHZSz_hb1u6`rCu$|#C z%TI?;OE%60&lZuhgH*pkJP~In$#v>wUXUvPf8Tz1&Lxt7>JT6@285qmdf<~tnSFtb z8~*CYljiBCoS<1a$djL{&Bq8G@`7d&{`+>fILoX<3aVpgIwFBmdcSr^A|U&f|5v)U zuuJ0jA{1L)yu0!lltpBvp4Jt&eEuV3JHZjV?e*VEt~7 zyY}>e1^)-v4KaDvOE!bn;A5*?B+~|;M&-i1`3_`ES82!mT3TDN32h!e-RMYA|21V$qHfk9B zcR{0AZB1}Vpad7#!ee=5R=I^Mot6z7znE*s1NnN~@EG!J;4{sD)w#gL|JIt+^I>?v z%V`(vHt6HuWr13FFMg0xw@cb>=Bhvm&hZdcKUULFWi#?9F^UV+vefT{FCBgU3Eg5FObAjVvt0MSvB-dr|*oc%+AWwg6s`Pr@ ziQ#jB6(&r{mbLT1Eb%naWu9j)+$92w0utYz;6nu_jr{wIA9(_3`ykKk^3mpSM^?pJ4Ni-n2ixx=rF zL`thj3zuGUz)95L^Q1QyQhV6yhaf8)V5TTtwttxtF$$j}x#!3ypwh#iSNxvd*xM=c zXLYU0J<0ej5w044d#A2x6{b7>lpBi*4OoHdFNOQId#0H2$dO}(Mcf$GJ^?UsvWJwn z1+x+gFw6ZVSjZ!rkzcUtT^LgYT57+_`wRxp%GbjH;Omv0UK0<>fay>gy=^Xh)~g~5 zP@#VGSS?ucQ@}RBa01)Ulgf)<)RVITTbR;P)wk7pe%^P2tO~+$sk^<&uML})f)@Ay z^q3TWSN9NE2@f^~iU>^}k6iR1wNQattund?m-{5JN(VsWfPJ3@NuS}zMgR^R{2k_{ zNbCA1G}sGL%h+u@z3pBzHWgANiRX*d)+TyJ9%}*6M8Kj!tMl$&x`;~1kSBxQ@Lr83 zc#!hBfkk0~etMa-wJ#f*h%l}25hVwqF8Jhv7(4|OYkpD^&O%4=(1TXeTrKv%jMn*g zlOb{NNlrK`rp|ii2{{()^0~-pM%wKDv3kX$&rbzY^c&H`Ll_yTF4gUI3c5}B6AzWQ zsml={zAVlZn&`W7<}lz@!ssgdz8;wn2}(W*2`dVfMiIs;ylSzGnhQw{J+k3|>IRFU z-$m=K&L~dr;|6>-SRstS(lnm-3leKTaT5i`U-F~v|NVsUD9?2RD1mPlobxH?yV#Ai znFW*EYN0EJ1a1u+Ud56Z<>b51d>0V28~t zEqiwwB|ZR)QsKyHN6T9MNUaS1WsutJ7jlb zi9ngIzLB1W?OFS*DYl;3mxN(GZ!fkcfUpI}V3&<7YGrjLHRIVTZPlN`@}tYb($89< zxXS>-)Nq0Dx3Tk+0r@lC3it)E6 z9mtG)bJODs9FM^uh4~FbWZv~Rsd-G->HhRp=Hs=}rn;s4_FIjk zgg-w=S(9`s6K97aMxVhjqig=!k-%x(J z@#M>6ItLgH`(Kx0Z_c%tES7v^BxApv+N*B zB3O&!e}#?#z<(7KEWBH1`UclNb_h!Z=XVrn(&_NC&~737g5cy}zXZ~->fd&+)DV~K zrSK5;{w=fXqqQ~3`gU1=>$j8Eo6Nm5Fq$7)TcC(4)da`Ws0mbz+V7KmJH7iV}Q1e?=-<8P^9t z8g&CD-orvk>|!*8+{goJoWj@*QyzN8vJ}f1`~T7;!_cM+L)u%a3WiPB=Mz^yXejqo zEWG^z-&r2TZ zuC7Xj3h`++r7fbx?D@#TXj`Vh-S2gbYYHkzDOtztk>dtrc<6aVGdbqH!u%hq-ZG$$ z-)S30N^vP#+>5(=ahD>+-QC@xxO;I9E=7wJ4lbp*ySuylv;6+|`{Dg|_GB`fWH*~h z=9;+}yTo1cfm?)U2c4%Jm>2FeJG7T^vA1-5lhecGTf*c*INiEn8u-Em7q*1{#>X|8 zlWlJozP-*!d6wg*jS<-BfN&c>J-xK+-#MN8qgvTeT|!tYtI?kY$I9E=Ab*2@J>vw~ z&?fK2-PH>=aGIVY4>bNHhX!F55!%Sv^NPlwR_}O;e|ag4WI$|ckDTNipkE@T{6~N) z_h;}$v=Gdo5Vsr22Rp~*${EPrLTz@c4OT>vC`7jp+<7z*I!pDW4sBO^6V|vBaffqC zw?~*;*nbTZY*Z%S5S3f_7t>WS`YLglI*k^Rlj8nWi!W1-d_RkG?%)qg=W z`AvehPzmkQvc?Vd^2(`06t^#RV{O3>W6z@ax9CJVFcRutC3b(<=8;)q*L$dfJVdq~ zS-Osb;N@ecFAEgX#PAA6lk#j3p;vBQMQukd*YYcml@C{%$*cc`C1Ix!Smz9FVvjrv)s21C7{ zTmmpK%9x4#&qSiW^l}5sHx`UHpC8mo4I1?OtVaW848GvQXBNPCk=j9Pw(NnI5AOn& z8Cn=SlI5LQKDZA9?;4P>iIMIZzh4_M7xDt86m8Hv!&iXPIQ(59gb@Gjq26`5WHf;8 zH}b$HMrr+Vl!z7#>_$Il?=wu%NM6j4NNEB}qmjALPQQA8>iq-MlaTm~`xkr>4g&Nc z$=%O>_pzWdvH>;#J?I@*t%xsLpMn9a_%o)T$1lRUzvQ8SNx?!P;?Nm#l^%}(7!)jI z8%wiOOV=n+!v9?o)e`HujpHNzKPbWTpLr!yC!O1(2N{$W&sg&OQP&KE=pXDn)$HTpx9-V`se zyFUyUQ$^+s&IyeO#qP;CY4sb)zm~3V&$PQ+Sud#9C>HQ#{m_{gn$l9@?}&essNMdf zUqv?bf_U|>?P_P#Xob`O(myq>?=5ETdYS~miYJouMyd#qZSyhcEH3%Gxdk>;RVqXP z0GE2vba@aUzS6w+qYteH9|&Un1}a5NOq{>uYEV`dGe+|lO8I%!`LY7a40)m7nL-Ir z@c37FF3~;*KW5 zISMsGk&z|DnT${bM~J=`TPti%4owI>dWh+X%zAnge`f)D!7zymkMMDe?C)vmT%`}2 z7k!~-NvmnUStYDOzxWX?IL^kmd#ChCdcoHGC=hHTA5Yhs8jpYsm@+a3qRqcA`}=Y& zr(<&cIw7J&T)1mT7_eWjQ55`8-S!+)4uXA|T>5?1H@UmT;H9q^(is!&Il6Qmn@@YM zbOzyczYkmL_^FZu*;ncnMjZLXT%PD^xR9i%5w5n^_6UVR-5__j?~4|KEtEI1%d0uBKNM zfd!8IJO7)49;chlQrCCY$Uz75X=PMkh(ipa5`vL06;1&@{YhGkW`f)H$y_R%!JsUj zo?UuG##$VGeN<+rI2$=3e(NXG+olhe#fdK;Z}d&9 zW@KX3cIQY6PVB8V znQ&Cf7{A4yNI1mw+)kwTu2yrO)?vXHm5xP<>Iw+wf0IByI6SI`zc z_t|8TiWpU}!R?Agq`4$j8=h>y?z#h%q^eP6bDE3UBjW= z^=q~F#djYbcuDRkwk3~%JqGLmSsnFQ;;zZ$?%2veE$oSm$#ErwmQ08oq>;X3<2!uL zvAXyMH$H4-j`~xF>ed9zw8wkYUDfFaH7AE3K(5G>+ugFjy$eh3JOa|ErdDiD7lYhY zoCTdm^q#c2YZ7* z75kQSr8%haa+R!?vOT`IoLR1SLa}7jKRi&t5sc&f6O_i-%Zri?76TcG}l~4EK~lSl(n|w zKCwX_#FhiBXOYdM{{hhqp_{9KXoMs3hm0|eb*=F2wIvwQyS|Lecs;J0Z?-ZPww4y0 zH{v5&?3Qs!rNO20AK99&GA4wkd6Z}~wHGDk6@d;h|?oh`#EHMU%2;t=Q ztpz>oX(^E1Sz#glWNb+Z>4kdkfYfd90)R2^s0A;)FWuP6&pC4?xIpwj7@1e1x4>Ob zTS);Zl<|QGs*Zr;7f32%BlvD(T{;W71rm;47aqhQb8s z;7|QfeNUw-^g(z-SbnRi9YQxecRw}x&kc%JOGm%Na5VYVwXT<#>#d~qZS5XIA_GCI zE41v}`3uD@R$#3wA{E4*cSITy=KAQUGsVboijy`5Qz`g-J-i!5dIV}4g zxd(^>0aM?@4{v@p(K%k``lVxJpqi{S`OMy-cq1R)k{MYMtYDH^u$72yO>>Sj2|}~j zKMoIr?dL1ANbaKgvkffwG{tdlHi~d^crmtgzXeC4TxpGe0tQn!%mB`L8~M zo;r~Ni>9CkSOTS}|KRO<`7pa`@$c7vVf6kRD7}W^#5ug;5fb-$Yj+%$W+AL2hTgIk zjh6v<8w#cJjY&~gBi0P~Q(8l9<$4#SpTD6bRb&(nMGs0l z6ABEx^?Bqa!&cR8-gja*82E^%o&7F{KPb1D=J3AHOnS-e*8O7Lmdch`sUmwZU9ecBWO%p)P+w-46pcN z?3K*qOC+*_q0Z|A&kRFWvnoG+1*q(-+e^PD+H&s*CVH>$spJ}^9wLK}%SbK?HD;vM z2}N=YDb#cfOT8lMS)QlKH%JU8WIxcMcgc3ieOqn%nOkwF=l4m@Q~@R zh8n{%kzl=5@%>Kh)ZY&0L@%EQx#l8UmP_XPEu{(;KR39*H1H9`O3wH{!aM2z!`}mG z^0OBS0cdDSHZ@szkq8&Wt0;s`U}`v^HA3j~wzX8li?b{83#dostD2YbWhbgX^%1TV zan5a<+02tj0((BvYv!}AQ!~k>d_3fZa6O8!X4rPyA};nakPH-UO%qS&4gDacDPFmz z7B7Q&IEg5|_s}yZdy;Rkd)^fso#G5)8IAJw2;O*&8x}B!KKjAMN;x4NBBEzdhXF4q z+6jp%Pp2(KGr!(mZaCY3i5Y&ucWH{E;^DG0WznzCt0WSGASCB?v%v$q;*`nGMXuFi zf1iNkgaMzu)e~gGjR5e8K*5odwpHg{mPI^W67L=R=ed7Pab!p^sCn4g;AL{-v@`!D#pZ*5F~4tV5|PZ@D@no%tCdDamy z&^O+1%cXZSWOT+nOy1LwzFG#Bmv^VSJlP3EP3cM0n_h8SmIr6~OC#|0!l#O=?7$9~ zIO?MgpS@jrR!YqeCh1;G{p)ofJ{BD_UZ`?hYj^ zBZ2Ir@4#PAlBh@|V7cP@43^PQ53u;4nP)R35F7G#ozGioq~U2#S4vX%(dw(HBR@N_ z$ai;LkL&%2t(`fp17FX7TAs{cmCtqAWBy7~)f9%1-RrdV@6y7e6%t=%Js8IH3YRi{ z?k}plha@i;ZN=+;V=M|rgf~H$=JKs;M7gl##IXS9#YVw%Fb*TMLR;Kl)_$oYI&Grn zw4P)3etxFZ-~)z)o2Vsu9C@a}{dHigq!OICqw5%#j3wdY(`x1CPS^SnvXcdquW!F0 z4QAsfSy=bYbLBHiJ0dOmGc5(flug3>*n~=-+Z4*cR{bzbC_Vy=2*N!2h^faorR&nd zdBMKIm?PqI{+$}>Q7Ddt+-UuSE_i;Ez%p!A)OH+py;(dX!}#>t>bLbO%6^9*sjd>a zR|3MyS7co_4iHFf3W;H)0j`Ot%Wsk!9!B%-?3~d@96-c$?NfJZvs(zdyHJcGCZUCB|AtyW0Bz!0pbSy|o|J1OeBP%JXQoA6L==#xZ%<*1)E z@ZRlYpF0yYo#R6{Suyck(~Ny{@2q%SuHEo23BbrKY!z?CMUAFIyDnjqy&M=E;x7vN z3ZGv`c2q2Kyb_;y;qMGlwmS-VEXxC}@W*{lsmbDx;SxrR4FkM4CwxU!R$cUpE#VAm z(q|F68{-o{X%YkRW(+yPGCrA)#a$h+=E2_)UpE5OFPaPP-U>)}5TRWFn9Ds1<6!oI zzQ^XEKa?|V!TLrH+Wmxt3*Z@_#a>$1jWy0ybbcORS0j<_2h}2r) zfH(-0M%f7HyCN=AMVdK3W@o0Sc^U7prPMXLywQy=k-Jl5X?xgM6QZRx(l?LO?S-cm zYtPsf;(yCS-k~XiI6IHYip<_;YHyd`gZ7bs?h@SS!J`eVR+aJnL2C4_p7>{L?afYQ zGqL{l!}Ncb#W~kHxS^Q^9b6(bkj7srL%i{~^({PR>6o9Fg@rIhA&-1h&EW5tYy#6m z=b9MQw=dmp96=zznp%+(?PjT)AmRwFi^i-W8n>zC=K88k&S$Eb#7^<(m_+eTypEzOAzCLyP4@4dv{^pqT2 z_bJEW56;hj!ydKI+Bp%F1Ji9Q%(7dX-@dMFzGS9mk@oMhRbZ>}d_RY+`*>)OB9yWA zn&VRgMfF1dcI7BF3WW&Itb%E4SC3{933B+t8T4g)I3>M0mVfa%>MMa%&_kcMqM2K>KK%_UZc~obl4OprAvW1=Z_QvJ z@h8E*fKCXVy5#>(R!ialm6m1xus}gaF@oJPAu}~AAM@SED!b|j8Ppcz^FT#bhzm{C zi6f5ASFz!aSyqnVRlG;h^W^DL#8-#Bho&KW+vei~%p8V!24uU^FlO+Gel?Mma@5aX zLTtA!(IWE7g1ez}AESgGryh1Ti^y4C${QJG2$x#4KgTAfnsTo??LXK~G3IYD*j_9l zGelT=a*ujb8IDw$eDf(I-`R;izdBC{eR6bfiG>vnYvkW=HV9n9hC zc&6`nuI;7g%B^FKL3R-(4<>w#kpuvvwt#U1bF^gIk>(OMd%x!qs_&hiA#9GEox#f} zy}$YOiEg|*hCuGo(t@&5Zb{aN)s^3udZod43q16tKSvi=ve#!E(7rags~B>eObKLgtlH6{LhS_X6^RpCP1{7n4!`Kk zdhq%W=(hApY{QLlbkNLYf6kPn@1~y^CoI%GCcvVW{@yg45L(QhlHIz?K9bQg5H+8t z$~yWb+eAOZhir}|i9+&FXDs?cPcQ>($Q z$T!oi@Vib${^Gv?QFj+RiuL`&3vcHuS)XoKY9EHkQV26LPKMML=eQifnrGn`g~*ArFxIGr|Dfsz?vObPT z!)Vfc&~4I1r~gB+=W8h|BTOjCj68~X`9tz3S||z)eD}jh&etMry;h+7{aX$0(AXU& z_1q&=-gaTq#MtIumk!@iiOSz9$E`dh`>`rxQ`glcAvcT? zid0x{wilS)k}>=5^{f)F@|pCwn*Fy4zoLw*)CAWh!jptZ$Fj8uwMi9BI8(jjNVcHM zAgD75goLihUOmkIn*7F~G^IT{3#@%d#Lhr5oxHyzG-u^BIi^}!==m>5sk>?Cnw=Av zZZxnk3`s#*X}RQyN4euqY|IE=)}_?>Z_lE^eF8Pj@MgQ59TsJ>3Hni?`>mSr@&bkO z=rX=woSvXYWxH{_fiECon+Gd7k`d#q-C#U!#(kMZu0U>mE*5u+P&tRl_uW2 zX`(FlR*0MjrxorfE8){neI{hfglLZflSQ=xTY6`bX?8q(2R@agtRzwSAIv-5j;e2u z6fK{Dcu$dvP{jL21cI9qN1oVz=QO{h)AVIw%{V>EUQUvYbtX5;zh#WhJMLioe)bSA zijBp8GY{%%u98V7mg*Cp+9YNtC5np?(w^U}Svcla(jov_J%tv}ca@&wrde9-L141- zLF-G$A3cV4Spn+pvEIT$6EO*WWM5sMG92}jpL}t{8Tg0mZOt$f+<^(-FaKRl%!nS! z-?nh6IMcKUZiTbjx1Ab&_oMdV^#;u=Fb&VJeBr2X1MlG-79~&|Pe zy$VYWKRzDe;{39+#yt>fV;(RrmLYsc=R zCsg>&trR=rImJrjH9j;#^Youg86{}7ad>r?Qj^Qp3pq5lQV{MBk9$SA`A1CxBXC4i z9}()Xy(_npR8+5P-5bh53*pFZ{g4<-Uoe+l{GG~m*Xq;AW_R54gFss8!<^;GI%`V1 zi!E$)_u1*Pa-?yFu?sERR1LvBWzATnBAe&}FcXljsM@bouL4RO+)g8X=1 zEdrEQ=~{*TtUJomscnYT)}6XqEG5hLI1^ro1i+`^(nr=HMO7d=hOe{KXwTR#QV8dU z?e;q^;@M2#+a(r#3IdQRM(BGJ{tu1oG(Hj8ik?_su@!2E^MO#?@%MC1#$R~|{0s^v zI)}ffVGu7yt0Dmoi$H_VsOJ+>Z_&nK7)u2qXeNPmrfwCK_F%cohuMgyBi1g_)OY_1 zQq<5)mn2!6b7iH1Pr#KG|IZZ~qy<(TE2gKm1)l%EELzmk%78c-`E%?np+~NzI1uW& zMD>ZvGN29{Kj7Fl?G~K$sqGY4BiPt`J;RQTOVZat1-gzlHKB~D`w7^6u*y=!$z}06 zElHDn0heFB`I+%OdBsi^n+d@;bX^dz4*%P5n2KFCs=S=4dP!xfuvcXY;`+5Hy_rWI z$CZBZ2#9s-tF6VeGL4xmHK?rETe$s0k2*`w6Q}Oqs!}w0e>udA)&A6aQ$%2j9{@t@T8;1NSaE4O6bv~7d#i8Bq0g8N=E3wi@p~k%_DyU z9wJh}jyd}H0x{~LV7hOijtLw!*si@*3-jhwK@rW`@=f_`pK&ARJ;=>4r7YK*D_YSm zkDbmR{LLv2-}Qy9sZQ!x@P}L<{MB!ymUEl;xMGTfF2q|a|8=LZ;C%>xg=WNJ>Gyv$ zsyO|qCvND(z1V!7bVkSoKChBo1X5)>J$FFsaXz16I;i6MJYZz&ueY4#a}VU%t3P|8k0Hdsk^-O{e&&NBG~vlCEP(7WRI+PA^W^XK;HNHt zFz>@TtcCzK7UYYrva4?8YuVwO+Elo6JiROdjGp=&U80g;vUl$v>fjD99`b9!#8Fr6 zw-_69KC2Thyom`rU*Mz(3x3Ci=!JoKx~@M4xdc5h*6rvWg`_H{V9t8Ip4zVxD*0!Y z4CtRAaCU_7w-um`b9C<7D|@7=3padMj_>vMI^UD?w++mBKp4UJ!P1=l6ec{ZmAx~Z zuCQ=VSJcTiPMZU~CDc|LlbesI_wKgCid*rcKqr{5t;T-3Ms4J6K8pzbcsixGe)>lv zfSI1Fl&8nq%w2>mJDSl${N3*fnLN}7Yu_zs&rqf2Qk;(hcNXD6YSb7pNt93h=9xnQm zX95~+A;Fb|{hH`t+y53v>!J^1O6)gye@@$@wk*RmjfyB-w<>HJH*+^M4D%hm#Zh1H z5NM74cB=JMwEAGJZBl`(@g++D;qW1cT?v{|>!wd-${V#o`ir}!n^E8)2ROVE2| zk;<1AQZ?iixAnORzv}8k`>CsRY}rv*G)H0CUXC;YGPx5JbmWu4+dgszm088dYmDXr z2zpued7;6HNPME(T|@v_Tt<7S!+6_;Gt%L#b~F8ibjF7UD`uR4ViBXXo7F+MT9Iwo zm30z6q+bVSDmPHYyol z1XVV}`t-!L#^3fO8D@k+o(ebW=J*)E8K6<|RDJ@`m1+@N6i-)_aUGA9*}b!k&Z?~= z?d0_)LBH;ZjB(OPsoOmeR??uqx*gDi`7b&n=-%LmY1*nwC*PkI=5B*%Ad?o#_XqMr z{o^l8r>K1+NivfI*WV;~^By*J<3~=9&-!u81^O8k`3=0&lDsa<@rjfH-?7w;(Zy4c zIu~)N5ncXxua7VtI|Gk3s?9?ZWWUH9fRI$~Q(6@O1qL>j-}G-~=!wrv;RC0edcFdVTBX9`QXvnPiwKoy*2q?@~5e_!rDFW@1geYy)7sMY{{_q1pLE<7P` z?6etk8h}(?c6!Ue<*&QzA-Zo?QkvMlqefMaaY|)b-erN|_%Olj?t1+JfD)9^zem8} zdK|0gXD0)GcdQTZSZ9o-+#h3`01`(P?H!F9Qsn)HqxddO@Gi}Bf2{su`(BFhp3qK* z;Os*+!+R4+fhPV##~aOboIqFp{0{rZEMIzp$%rQjc?ZltoV)AyrQ}LM0%B5nI`(&{ z?-<4ZuKXJH;8sQW_)Rz*>@b4pp?$0F2BjB*#r`l+%`^xfO8;29octcJj>x>Eb8w8P z!XliGj+L`0D@xI=mBln83?Qi`-Un;Qkf*shEQ!n9+}z)fnQsW{O^tYduLA+{{~+Vj zPN;f>gvm|wN1}xq;lI0L!11+#s^sszFa@=Qc5wGg;X}aFc?LqBk|B>Xj`}Pvz}JpZ zWn1muj*fG99)WN9wi}Y3fBUZ`{D1YZEUcf5c%5^J?Wxcau)(d?&}G?p&u=FyG2T1OcC~H-m-y@C3f$cawl#s5PI&ET z*f9}8y5ZypJfx+MHWJr+BZ7?#4SDVe2F@HwuoWnl)=<~?ccgd|l9(i!1bKT(OoyUX z+^alf4qQ}niq)T=DgvJ^vYtbn`$xW2)}*1|Oyci;b>aWy-)sSKh{lS!4r+991rG@p`3H zrRQRfWHB*(4)6+gqwXyDp!dW+hfau>+QenOrR;7P_-~tpZ+OlHJDH)2B;j!b(*My- zX{dM_2(nZX zXszTHsaGcfQV6zk<@4R{&GWI}>qB8l?r4nc*{9~!?+w_fSV;fr{M8vcCscI2;d6wL zmQXke^z~2ihZ=Ok>Kx&)d?kQj(LfvuR#9O|7uEq_GwB?3IT45r`_h9B+ye`t%>fBj zGe{ZuowCU5faE?X3J=Ic-rN%Ovn7E(1C@6^KI<2rR6%ni0;!^*yp?fIs-XV&yPK}5 z{}?Dh01D7ItqV5#^%190frRMd+oI-10PvdN1CSU$9hoU-`dtiQO3V|{&gHju$Liz( z5=*Ce*%8g9kN~tuN;DhmSl1gLaDiq-4m>Gth~^r+vj#BEJFlM728aR#3-q6VHoB#i z+PU|E7SHL?N{5fBjRLN67EKOloS!aiT6lwzLL!G_Z>pQXD5DMstAUYe=`WliaFtx# zsbMle0jY>QcI>WshwtpEmgo$?&D<&i6DEmY>aAh=1SNmWG7$_xYwY3OhpnhVWCGj@M569cZ7f{ez;iK1``BI!MlfK? zLWSw~W=?W=+L6Rm{+sgE-i?9)Ut_~4uJTD_+58R#ijP#Z>)=bf(}0ZA8#Z3l3Bykv z{^A#g&*yu8?K}~%={mkPz%5myF0_SpD*RJ&_%krYbb}_Y8GJd~(tXfpZ1||D;%5V- z_piM~R2`Y}UzxGF6NJJCl-9ZgzGa`+(HBB6_<5Qe&hv>ibzh0>rxy?Z6vUnted#VD zzE&Xw4LyCB92KOphWEE)8N_rn#bN%gCGNCWx%&Q&(Cer`l_2PY;5usG{N_C#rM!$= z%w@y(`$t5Vs+NbNDc_vT_hK((F+I>0>nxozLX7E`MOZHPu!pb*==1!Ft^1YLD)(*& zTRMYzfoaH{BzV~aO1Myu$Z2LfUYrJ}|8Sii!jJckXfexg+nt}QtgbWbd;qNnpOUOB zcbfH^a6M6NV-I1m;GhYV+%@FzDvhM>V;op?p0>f<3Wo-fAN2d!`6z0M|S%;Gv4Z=b|Qa9AwI>%96uc^b1*@3 z+{BWL;(w0a=}LEzmhu!g9$$M)z4Ok;%~3@ae4T4-gI%a?VZnBGg$r8u&M_j2xc2lj z^h<18zS+YW!b)cewiAI@7>23PnmL8%KdcV~5hBD=wBAN|+#5S~5;z}J{_S(iUy5k@ zfbjc!2}|)5n;9L+UzDws`nU#h48KV%f4^FtPsWhEINruKmobN{9JEhlq~JT8`Hv?` z4#latN1IIZbFvtCW%`ufng+CZ)@MZ+?5?8?qXbta)y2}_lwu25zT#r;K84?3Xgdm% zwdvJ+HNN8bGs3IID&^;ByPYxApe};el~y4WHP}?2SWjf0^vz*6gVU<)mM{+Qe=p%g zHV?CSt~JwDsahOu(p#G}hA8~m$(0Moyo!A2s}moF`61kxQ?BkhL@8hI?H;Hb4_deJ z4xNUrln}W&#}^FIU&h#8{_GltdC93VMf~tD&@*iqqpqpRp;j(o7^lH03aluU(mPc+s=!B@O_-k!pnSoCy1Corc`^4Yz6)=ViOhQWq=^jOfm{DOl@;fp1D|smvp2>r=kFx&xOFP*8JV)v>b1 zKM#$Iz!@IXr(B7ja}zJfx#6h=o_h2dxc)ctlkZ**QMaY3Y-cG|-hBx+{O`TBn}pdY zD1WCtX8gr)ah1c*TX1LLI(kppj2}F`FQ5Or{>{h98C6?*>2!xPL-!XHeptoQZ?YI{eN>Xp;brgFRPFIM(D|7gxJ}Ie8n4BrRo3(lK z5})VtlXJ@b8`H?}@~fH~aEmwue~W*cVv!8)T+8j=%`s-!6+h;&E2*79b|j*PCnLo= zl9@PXGKG2t0F^%X)7YY{B7k8;OwmXPjN`AmuVIo-H_v&8+z8BEfi`iity zxk}UBo?s%gerAqF@1^oO>|`8q^)5ze823xbyuC*@4&E`YMRx+6*Kdr}0ey%t1_<;-8adj_wr)0s8=

E$c+VCHd$e<#_&zbL|;smVm*!fD0bPZd+3=0)rN_B6^Skw>p(y6T`; zRVt3YV`A7S1wL;n;qUadUUOM)$K`nu5y#t$`^js&0WLBBCbIr%rSG)19;rO#z@G(Q zN4@y5mFsq0-j~45#KBc$eLo31o}}`}A7S(hye(97$V`xzYiivG61y3$nTmNY!QJ9vqXR#-hCTLnT+p43^37^ zkQ1a+LCp8J z{GoL#5>lBNP%IlejqF@}w|_$P6>_EhBnaF4^|Ag_2AJlm?amHGRK;A!sEfpaCF{DNWUz%Ue+k;Mi*f zLqSlo$4Ko6I5N_sGvKXwd@e{HbU6S~ja1A3vaxDz_#>`0jO4`{)AN0+M3?zA@UCuF zRK?m%6|+Lc`9N)1f6XHvWRN!Pt82={&!#ECSV&#Qg?sUjO>t8wy^{ag55S`6Z z1I{-d*G4S8_$MBuByg}$25y;K zt8E}96Ti;XpYh<&LgTc%-je7F1-^E)n$Ij*%kwh<0v*!m9R$Rg&$Ad_`2(keof+@E z7jnys{L}x^Dqmg&eV@0#yBMuG06MV>21&sc27I8VyX7`Qw>hZU&k7q~)pR7n#Fsn6 zS2*4ubjaaX4~Kcg7+73{nNR$Vy8h1%)9f#g@YkKo9u9(-<>Z)=I#PDWmrJ^+;NCB1 zULxF7%K?CHVB3P2XzxH>WgFh7w@3N5**g2@CtgT6Ev2z;wC`hLso;%CH z-0vkPdrMngJ+vG>;)jHZ0D}@C?5C`xlKhi3mtyPc(&)rbuRZy~(^E~Jet+9C$v5!v z)gJ0QFx@Idt~1RgT-ClUtUc&-$OnnV9yeLyF8F0$16Q_*)UYNl!LY!7KtnAk>+F;2 zgqplMW~xNJ(z1W4>dC7po%*~#^;_nVP<@KVWzsPQWmn^1U@%~!kNoRf`Bz)0>~VHk zuE3JLLyP!btC-lk+)L=TzL3~EP(!D#b^B%h=|0sAAJATo3_9BHXT=36CT4^kY7 zK3|XeJ!i7ZBO}eAehV5?88jNv4er0U`cdUcKN{viKu*`iYeLP9jFJvYU3Zp&fS3hl z7{srhT7GUxdd6_SD}FOo(p*RPyf@|tgPxSnb;Xpm9kxH7|L${Ox}W7OsIWeRA`{=2bZU85f-Gf41%0RpVk!2 zA)ot{{wP?CXiu*lO2%cJV?fLY(cxmB#GY~8go>uy(WC#{IU1M2OkW1}MXcR0^6|!h z@)okC!Uum?esHYb8|N#sNNA7>JC!628rlbC^y_4~?X#?mi4fDl@qN?Fzvh4A!moo_ zvq{{!hgH}bY7JspdaN0LMo6Y_S|Xs?s^&jP!-ztpyz4;9k=LV`Qwh!&*@exRRZQ5_ zE{^s}ce}BEOZmJtMk0N@|6Q^8ix)Y~A*h?jN5W3?gv|BBL(CJ|TjuVCjl$sAhf-ia znw8(rMWj${|K+~R{q{#mjZQlC#EKy&X*XLkVds-qwcc5qG-(3D-Z}1qc#1LngTuw* zWzyjA2aQj_W0N4Mk>ugP*r@GiN}i%<-rgCkiO=34p0?S+c&POln`xf6U6c@aMo@70 z8(YMS67?67&pNU$*q@Xu0wENF7FaP#J|EmB9OpVFOtWCbezY)(&CzN^8d?zO(vc*K zt~TB^S;QzTaz;uRo6-ijgO-qFzVRom{t(6JHRvnXsaMJ047I>8Wdav2m?Y^Oo&ckIza@u0_2jV z8as-{W!is)F!S76?cHIV^!6LT9~A7Qi6~1pU`=GvK-t;YTUJ#|M#0B8L2j5mm|iuNv7mltrDW&W)`F-E&-$A7B6Z+-IN z&XNSo4bFy-!RnLrAC1j-!+{s%f{jh=^4nuP3d{`Z0mE9Z%2L0|Q%hLSuk%KMT0`vm z6Q(C>HU)BZzEzK`lRZHe*Hz*gZ~giAGmj{2vRd{KDWTNGSzivP$IjZqrrdmS@hX@$ zBlhDJQ5L;lS7k?R{i_4fLXFRRMXUDba18>Y=A$&$HCUdCVJhXyA(6A_z9wXb?u0~1 zP2QamsBRe9bgciTSC~=mrOBOMPC^la9o>r!v+H#;(S5sK|fG)9gS_BH0u{`B zq{1akpO%nZy8uuAmpvO3`SQ(sT2=LyUGnMXIE&OK{inw2q0IYDO9rpIQZC0|X=W%B zkLidL7e1i*IYpUYns}EKaqeprJn^_V)IJT+xLR0^=F|`xQ~nGBoaa|p2{cXu^2bM9 z(_M?%{YhMI`ok%oc8lljABZ+$m`WH`&Wn!!tf*B}x&8zZCr5W!yN6h{=f@OEtR@#c zi*Mre?})b0N+Cqp;O)_rF3% zSqqEftDLmah};?_>ReOGVn#(paQZivolfh9`gOkX)?X-PV%bu7sN@;Brh%Th^04tx zIaDVkg1BI4)%lX zoQWHVT#nh0r2}=96;q3mtcmjUNY2CzZWbY&Y&2S!Bigj}ee(wbQTH0{JLX{0X!!wHhuH&Z`# z6}fd{i^&fHyXJkyExG>TU%!b_RC3&;fjF+{l-Pj&G~5=SKPC4j^ZZ)#8Tia`rhA#B zoCO+`Zt%6UXLf5%pA7T8z9_C?M^lb%=D$b_X6K*Dxo)+)b63ecWE8dDjs8BOTAwhz znVGMD#sa&k`Z;4ub+U>dcfQA)9QPEr5V0f{ZRLRjaY;o08WRZQcY3-LX)Hl6Ra!Bn zo>9`yH=|vYvf7fL82&=dMUVUw+RF}o1On2~Ow1A+xA;G3mGedT~+wql4tJE#1=`yKZGdw$KFpVP%r)QjrqgY-*Ca zG||NGlP6&JC$ik4-r|iH%~k1H;))Pcq)r=#LQR9miGPclpSGvl3JtDa9C!KbK92LQ zR{Tk272Kw|S|08#5lOE}vFzZPo)Mo5dqZaUMt3g98?fkVcZp`X5H@tu%u}2sh&?*u zYsIg?zR3ZlcE~?wR_^o!H?b2d7m9~rnW!29m$t(o0(_#(4!91OlD+?YJMRpM$}u?) zSw1G(VLGk9%Uft&e(UqEw}355Q+(zdfc;H*n`?@(Lq6yTdU!>&2-SKgCe`fr7B2wB zmtUcrI&sk;BT+ZoWfabF#Ee`Ma*Rb2aZnLWVo7fk?k4=gTmrjsUXAy*Ydw>GdzZb6Pq?iB4!d%Tx@7p^^CeUHdr~xJ>}hcDpx0_qqzDw z;30c%f#2(vX++AoGo_aD(voVmE81?ef2@z3WEm(PD%Q2_1pP&w><49Puv*0I?N*Ge zR|G;~X2YjgU9ML*%Bol0R1Sac&CyE<30(6$Rc@)bd%0!8d^Se;G zhT8nmafE)VC-aW3z54>PBqP6tEKTMeqyGC{8PWwShqR0&bDN(cS6tHulzuPo-#z=+ zHRdukX}yM?`^Uwv?eE_mhYdHFmQb^;xow91%Ss&d zF6P}8O=T}{2;g?ohGGJHxEVy#6*5lqEutF7W!!b~{UlwkCeJRN?OliE?5XJm?bV_4 zheOYDPFD`dZZ7lX)yg5wp_!VgL6y(GL&-ib> z1PNo~bb(aic7MG7?wywPE|zX>i73K^Ibl6sJc>NA9nn0l5V#6V*~rm0ZTSBK-*cU# z?@*biQnWbhUbtl1#%`xnN!ThEVjK(MUV5>C&m?wrO<=b$s%#}9j#2QFINA|MoE}s> z(g$qvZo2;XTNv>ltbKD}j2m+kcMS@u*|>aGxxIS( zJhGDJi*t}$0B%#?0zFq1hZ`Mt58I8lev)4p$hI*M)xU~K$hPH*B^(eUrOvlG?0D+? zewa((H>A>1HM%@lrxo;zMxl1CDf!I-*OVhgoT;PuXO@d{8$lmS){eFUDcZ%l%9dtE z#?#-1k?8gCJTiD^YSX+H{)GySH8K3&5PLl|Gjp;VxZW{ec!QNVV)H8Rm^;5fc2-{Cl=b5^@GM@iPe|rOM@MT6TPCBOYeHQmk_%Yu2}SThmi@Q3QK(92T~S zK2s^lCnS!=C(E9jK}@Nok+*$QwoS%>sb@mF>d;~W^vJtxB%Q~-s$;$s_EM)mL4)1L z&MnX5P^3Jnlt-ziLiX<0g&8}J0?K9IyoQQHi-G*Jzivbudqe3^RYkx>Xv0|n>{|A- z=|d(=R%Pj%(yFb+_hP1rf#K=6zp&2Yk3tzH-r9&~cpSwr)xVjzM4L`tzgwkZuuUJe z4fzTGxCP59hOOp1AFn7<%buEP$2xu)m7E8^_2>=yHuc+ih6U)hYy^bx(ND*weOF^2ds;`Vg{PN@7$BmBb*pO9#% z)=n={Q5A6n;fY-fc-zI|5nS1-9+D8@cgb%6efNCKr|}ZC&g%L(EZ}Z$RU<8Kpa>uE zq_2(o`%YC&QZ9U@znWTUKDtsZAm(gHI^}fJzty!V;2yl(QdH|*RL1-<+>rq76p`n6F~XaH zmhEfa)cfv>?NjWv8Uy&2yS$CrxPO`~D~%e|o7eIWq&?U~y_{tzRcNhqc56@5dF-|4 z{)l(y&Y~Z;(oVYC?sH!5=*gs)PEFSAv6?KZ{!X^}@%5+SF+QWclyzjjm&`;VI>Rfz zB5G5+lXq4sUDGpex5cgWYERMbh7QGWr=F&=-M0ocE4`z+ugWwkKU{Vg8u0;h>+&hO zo8Ry}_{Oj7LMquuPx-;#(jqe5t1D^0r)}*?j7M3kq7*#MX14le?C?8(Fc&;vQkept zMw=6iDdEii2&uj${W~g~wfi4YeGjkm$y=DA9T<%IN#LXBnT?`8MGL%$1(_j$bNrN^ z%U&wG8B5a&u8O_Z63VgbwgXi3`VHRrkWl&HDT;BqZev>2Gw}rx`l0*`8uv>P-C4-R zdUZosY+Tu?yk@vq9;V_wx_nhReaf)b!J0F2%gOB3Q2602s~B*2ABY;_k7D76hO~x? zB`aEXlDBCN%3opGIObi~q$h z%wz^1eNm%;@e=BICvvEu?(y`4i6^y=Uov-QTsIb8<8RuwmD?CoELPHtc{!M{?Sp+`MdOuETD zQDL;4MO>jD*?sru^K4*t{D%6glJQ_qQhikYST;{(f*(1pRsTT$g;CthWB?>V1f71B zMfBDPYqdeAS5~+OEeK;ZLb#j*Q@*IVjT_6NBSbKoJ?wqOEV_k|X8hZFd>Al?4xj5Dg zF{jgfk&Mf{Ps@kgstD0>60_+?81jZBiQ;ae&1bXjyG=Q`jWW=^B~ zN8#NVLwTA~5}3x&=@w|Cf{qO&ki#+D|jiAAoy5yB_h9^lW10ZhYwi?*bd zVk*giva*{Jl?+3@^s_=EpZ(UQMZ>ZbTSORw7 zG}|=97Ii_?CHx(s(LixMBB)IP=>d@_i!VLvqWOM?80OBI4@fW>f$X+DotNjFE^?i( z4`H&QM-FMijBFSDQZjh%87PK6qD5glX#o?XdN)w53|~2e!0|9Q&U`?*D3Tq@OYqS( z^MhmRPN^Nl+38Fk6l>%)9z*E~jX2*OL!ssKfm-9G3>VSH)wgSvDY_a}7OK^4qF)=S zAOJian0tcgkIJ`p%qTRta(loRnTx;mbd~gPkos3bM4@wZN3s?uptpb^(jCD%jT1mP z04W`r4@k1dT4w{pHP*-F!!rA^pB9BxKZgJ`9MmfuF-5wtEp6ns==^O2yS_YRRlY#s z%vJ&rwhoH`fl8{NmE5>0^BT(&+tt|+X%1Ha1Dkg8^Q1XRS9MedB~eM+vB)pW<{JGU zy1swpXHr0(@zWLA|o093}`!AWo zBJ$bp2^T37B}234yBz{?aB`XWBTFf=k~j%s*kGQ@<6E6FNQzgg!Wr{>1J!~TTtCfn z$7ulngZwU$AhN1qN13?B8TtO=FiqJC{Em=D*%szWG$4?);OmF=ADUz}TXx+J9`yrF zWgCTF9XDP;gyyvAgY{P~`6fA-&fRdGGe$a<>gy$R>M7UMBNG(R<0 zm%St7|8ox0bIU19WybQ8Xb9YVEXJ;sEF$6?H6}rL=N6J|AnzeKE3ax0tYet~i4II( zz#(C8#}`JNF#;}Qhs!$y6Huud`zvKb5?s0?!qx0}z@gWG%<^Izu`tv~xaK^vY z5P=eeBWz9ktJVP}<&b0j_5wx2re-e($R}$cip^VjV#MZzHaxEb+6P}ytr>X36G-#Y z5d2{V0_Nc#W&%LKk5)}&akESA0tpL`ZI^pOcCAVxN!8JlGVlwE=pf zySwMLEl^aDeJQxwWr7-?7HT)2K%(~BxSPBB(GN6z&b#&lnf|S*{6Ef7ZOgX9@Y15nRs1~&IP|oQv?v;O_> { + node "frontend-deployment" as frontendPod <> { component "Nginx" as nginx { [Static Files] [Reverse Proxy] } } - node "student-api" as apiContainer <> { + node "api-deployment" as apiPod <> { component "ASP.NET Core" as aspnet { [Kestrel Server] [GraphQL Endpoint] + [JWT Auth] [Health Check] } } - node "student-db" as dbContainer <> { + node "sqlserver-statefulset" as dbPod <> { database "SQL Server 2022" as sqlserver { [StudentEnrollment DB] } } + + node "Traefik Ingress" as ingress <> { + [TLS Termination] + [Routing Rules] + } + + component "NetworkPolicy" as netpol <> { + [default-deny-ingress] + [allow-frontend-ingress] + [allow-api-ingress] + [allow-sqlserver-from-api] + } } +cloud "Internet" as internet + ' Conexiones -browser --> nginx : HTTP :80 +browser --> internet : HTTPS +internet --> ingress : HTTPS :443 +ingress --> nginx : HTTP :80 nginx --> aspnet : HTTP :5000\n/graphql aspnet --> sqlserver : TCP :1433 +note right of ingress + Dominio: + academia.ingeniumcodex.com + TLS: Let's Encrypt +end note + note right of nginx Nginx Config: - Gzip/Brotli compression @@ -55,6 +78,7 @@ note right of aspnet - ReadyToRun - Connection pooling - Rate limiting + - JWT validation end note note right of sqlserver @@ -64,4 +88,16 @@ note right of sqlserver - Persistent volume end note +note bottom of k3s + CI/CD: Gitea Actions + Namespace: academia + Seguridad: NetworkPolicy +end note + +note right of netpol + Flujo permitido: + Ingress → Frontend → API → SQL + (Todo otro tráfico bloqueado) +end note + @enduml diff --git a/docs/architecture/diagrams/07-deployment.svg b/docs/architecture/diagrams/07-deployment.svg index df29dfd..2ec4546 100644 --- a/docs/architecture/diagrams/07-deployment.svg +++ b/docs/architecture/diagrams/07-deployment.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Diagrama de DespliegueSistema de Registro de Estudiantes - Diagrama de DespliegueClienteNavegador WebDocker Host«container»student-frontendNginx«container»student-apiASP.NET Core«container»student-dbSQL Server 2022Angular SPAStatic FilesReverse ProxyKestrel ServerGraphQL EndpointHealth CheckStudentEnrollment DBNginx Config:- Gzip/Brotli compression- Static file caching- GraphQL proxy- Security headersOptimizaciones:- Server GC- ReadyToRun- Connection pooling- Rate limitingRecursos:- 2 CPU cores- 2.5 GB RAM- Persistent volumeHTTP :80HTTP :5000/graphqlTCP :1433 \ No newline at end of file +Sistema de Registro de Estudiantes - Diagrama de DespliegueSistema de Registro de Estudiantes - Diagrama de DespliegueClienteNavegador WebK3s Cluster (Namespace: academia)«Pod»frontend-deploymentNginx«Pod»api-deploymentASP.NET Core«StatefulSet»sqlserver-statefulsetSQL Server 2022«Ingress»Traefik IngressAngular SPAStatic FilesReverse ProxyKestrel ServerGraphQL EndpointJWT AuthHealth CheckStudentEnrollment DBTLS TerminationRouting RulesInternetDominio:academia.ingeniumcodex.comTLS:Let's EncryptNginx Config:- Gzip/Brotli compression- Static file caching- GraphQL proxy- Security headersOptimizaciones:- Server GC- ReadyToRun- Connection pooling- Rate limiting- JWT validationRecursos:- 2 CPU cores- 2.5 GB RAM- Persistent volumeCI/CD:Gitea ActionsAuto-scaling:HPANamespace:academiaHTTPSHTTPS :443HTTP :80HTTP :5000/graphqlTCP :1433 \ No newline at end of file diff --git a/docs/architecture/diagrams/08-c4-context.png b/docs/architecture/diagrams/08-c4-context.png new file mode 100644 index 0000000000000000000000000000000000000000..3dee358ad10e40456e3f08ddaf84a3171d1156e3 GIT binary patch literal 46717 zcmcG!V{m0%&^8>~n%K@{f)h_{+qP{_Y}*r^Ol;e>ZCexL&D_uX)c522{jNH-t4{B= zukNe6*RH)*ceuQ)7$O`l90&*qqJ+4xA_xdL5CjCQ0|xv{a)!vo1_A6v$K6@ zyr-vUYHDg?YG!V3Zf$LCbN^^>Z}0Hv_~`iL?Ck9E@$vKXlc9~0@ypS)&LZm0Mt1fd z)+VOTAYvxACXNQqCdR~u9>nI(&h}1R3=H}*^oM~Of{polG$)t&!W z4g&gxanqMTAxx%OTd&}Vqg zC;>a)DJ?khhotM7bjp~naAsnQ3Ax0Lv(A$dAW!Bb!Fp^@wzjrkvb`6M6EWZ0T&cd5 z2U}O3W>M~7x}7$`Hh6Bx8qp$h$7XG<%Mc%XgU@D z$FIJ~>PKQoLtBwq>_Y#nBmYWI$^; zXpdHfLR%}C0vugPi^s~1je_4)IGY#fk_F;OSk3RE5oE;H4(SS@EJhq?iz)xQAgpC~ zNAvQn{}hdd^lQqHr6Oue@t>E*?eF7K1hX<9ICvZAR{J>34mv7hf!}YOi1)0}oqEP( zLQF5r885fr4(KiWV`mrB*r`gELY>X?Fj{`0cKSLg*ey6^Sjz+0_Z_NzXO1k5jUE=8 zpIik=KLb;BEk+<}8J}wL3jDnsbz`*BndOrao(^l;VF8qGT$;EVNkzxVNOWdgi$#P? zvK>OAd3aJPBBL$A^JW+Fac$wAYEZHR5whO&BlwwfeT{!ZWxNsnx0tX%z;1U3cS}6j z!uk<{NMHPq>y4@09hRl-{pvdbD5m4P%>Zn{j2q1hxLBoG5Au_l=;>d(@p`?Id~eHG z-5ZW*zMEm`;W5n#3l=@&6KVosP0g~gO0)pEg?ee7yjpI(VDHpu>eeg4d@L4E$x`D8 zAj-yRqe>~~9L2^DqC6Z)HvT47Yi{sT;XJt{W%(9!QSXSqvwsx&50-P%;hz2S0!QLB zlv1j0M{Eh#^#eM6EM%gJ#Yd}U(Hi>@2-HWzW{RtsZCums0Zz_aD$_re)gm33;!Ie( z`1f5naTXC5HgDe6OLvp!MsQZk#n-e$14J%hb9&o@y3izZsIrtT`fJ8)RVMNrsPv9@ zkMe#}(Hq&TcKhB}gk9A$f@l{Za1HxNJ4axC1_HJ)>9@tqR&7IB9WE(THFY&Ch$@

x&k&m-OP#H;9R{^&n~ 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 b;YE=1V1iSI3(^Y=_>&To7p)Th8t{JrT#q$r literal 0 HcmV?d00001 diff --git a/docs/architecture/diagrams/08-c4-context.puml b/docs/architecture/diagrams/08-c4-context.puml index 3dc0cfc..7d1e543 100644 --- a/docs/architecture/diagrams/08-c4-context.puml +++ b/docs/architecture/diagrams/08-c4-context.puml @@ -10,28 +10,44 @@ skinparam rectangle { } actor "Estudiante" as student <> +actor "Administrador" as admin <> -rectangle "Sistema de Registro\nde Estudiantes" as system <> #lightblue { +rectangle "Sistema de Inscripción\nAcadémica" as system <> #lightblue { } rectangle "Base de Datos\nSQL Server" as database <> #lightgray { } -student --> system : Usa para registrarse\ne inscribirse en materias -system --> database : Lee y escribe\ndatos de inscripciones +rectangle "Servidor SMTP\n(Email)" as smtp <> #lightgray { +} + +student --> system : Se registra, activa cuenta,\nse inscribe en materias,\nve compañeros de clase +admin --> system : Gestiona estudiantes\n(CRUD completo) +system --> database : Lee y escribe\ndatos de usuarios,\nestudiantes e inscripciones +system --> smtp : Envía códigos\nde activación note right of student Estudiante Usuario del sistema que: - - Se registra en el sistema + - Se registra y activa cuenta - Se inscribe en materias (máx 3) - Ve sus compañeros de clase - - Consulta inscripciones + - Consulta sus inscripciones + - Accede a su dashboard personal +end note + +note left of admin + Administrador + Usuario privilegiado que: + - Gestiona todos los estudiantes + - Crea, edita, elimina registros + - Visualiza todo el sistema end note note right of system - Sistema de Registro + Sistema de Inscripción Académica Aplicación web que permite: + - Autenticación (JWT + PBKDF2) - CRUD de estudiantes - Inscripción en materias - Validación de reglas de negocio @@ -40,15 +56,24 @@ note right of system Stack: Frontend: Angular 21 Backend: .NET 10 + GraphQL + Auth: JWT + Roles (Admin/Student) end note note right of database SQL Server 2022 Almacena: + - Usuarios (auth) - Estudiantes - Profesores - Materias - Inscripciones end note +note right of smtp + Servicio de Email + Para: + - Códigos de activación + - Notificaciones +end note + @enduml diff --git a/docs/architecture/diagrams/08-c4-context.svg b/docs/architecture/diagrams/08-c4-context.svg index b9e691a..2a6bdc8 100644 --- a/docs/architecture/diagrams/08-c4-context.svg +++ b/docs/architecture/diagrams/08-c4-context.svg @@ -1 +1 @@ -Sistema de Registro de Estudiantes - Diagrama de Contexto (C4 Level 1)Sistema de Registro de Estudiantes - Diagrama de Contexto (C4 Level 1)«Software System»Sistema de Registrode Estudiantes«External System»Base de DatosSQL ServerEstudiante«Persona»EstudianteUsuario del sistema que:- Se registra en el sistema- Se inscribe en materias (máx 3)- Ve sus compañeros de clase- Consulta inscripcionesSistema de RegistroAplicación web que permite:- CRUD de estudiantes- Inscripción en materias- Validación de reglas de negocio- Visualización de compañeros Stack:Frontend: Angular 21Backend: .NET 10 + GraphQLSQL Server 2022Almacena:- Estudiantes- Profesores- Materias- InscripcionesUsa para registrarsee inscribirse en materiasLee y escribedatos de inscripciones \ No newline at end of file +Sistema de Registro de Estudiantes - Diagrama de Contexto (C4 Level 1)Sistema de Registro de Estudiantes - Diagrama de Contexto (C4 Level 1)«Software System»Sistema de InscripciónAcadémica«External System»Base de DatosSQL Server«External System»Servidor SMTP(Email)Estudiante«Persona»Administrador«Persona»EstudianteUsuario del sistema que:- Se registra y activa cuenta- Se inscribe en materias (máx 3)- Ve sus compañeros de clase- Consulta sus inscripciones- Accede a su dashboard personalAdministradorUsuario privilegiado que:- Gestiona todos los estudiantes- Crea, edita, elimina registros- Visualiza todo el sistemaSistema de Inscripción AcadémicaAplicación web que permite:- Autenticación (JWT + PBKDF2)- CRUD de estudiantes- Inscripción en materias- Validación de reglas de negocio- Visualización de compañeros Stack:Frontend: Angular 21Backend: .NET 10 + GraphQLAuth: JWT + Roles (Admin/Student)SQL Server 2022Almacena:- Usuarios (auth)- Estudiantes- Profesores- Materias- InscripcionesServicio de EmailPara:- Códigos de activación- NotificacionesSe registra, activa cuenta,se inscribe en materias,ve compañeros de claseGestiona estudiantes(CRUD completo)Lee y escribedatos de usuarios,estudiantes e inscripcionesEnvía códigosde activación \ No newline at end of file