From 9390eefa93ad27ea80d57cd36f9afcf78307529a Mon Sep 17 00:00:00 2001
From: adevopg
Date: Wed, 15 Jul 2026 14:33:32 +0000
Subject: [PATCH] =?UTF-8?q?Correos:=20portar=20el=20dise=C3=B1o=20del=20te?=
=?UTF-8?q?ma=20y=20unificarlos=20en=20lib/emails.ts?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Los correos usaban un shell inline distinto en cada remitente. Ahora salen
todos de una sola maqueta, la de security_token, portada de las plantillas de
Django. De las 7 de Django solo security_token y activation traían el diseño;
las otras 5 eran HTML soso.
Las plantillas de Django eran un volcado del DOM de Gmail. Al portarlas se
quitó lo que no era diseño: los enlaces iban envueltos en el rastreador de
Mailjet (079xk.mjt.lu), que además redirigía a ultimowow.com en vez de a
nosotros; había un píxel de apertura, un "Click on me" oculto y atributos que
mete Gmail al mostrar el correo. Las imágenes apuntaban al proxy de Gmail
(ci3.googleusercontent.com), no a nuestro /static/, así que el diseño se
rompía el día que Google dejara de servirlas.
Ninguna URL va a fuego: todas cuelgan de SITE_URL, así que cambiar de dominio
es tocar el .env. En un correo han de ser absolutas (se abre desde Gmail), así
que se construyen a partir de esa variable.
El logo nw-mail-logo.png daba 404: solo existía el .webp del tema, que es el de
UltimoWoW (león negro + letras "UW"). El auténtico de NovaWoW, un león de acero
sin letras, sobrevivía únicamente en la caché de Gmail y se recuperó de ahí
(600x320 RGBA, íntegro).
Verificado renderizando el original y el nuestro en un navegador y comparando:
cuadran pixel a pixel. Eso destapó dos fallos que se corrigen aquí: faltaba la
etiqueta de apertura, y el estilo de los párrafos de datos era el de la
letra pequeña del pie (11px/17px) en vez del real (14px/21px).
El activation de Django mandaba la contraseña en texto plano; aquí no se manda.
mail.ts: leía EMAIL_USE_SSL pero ignoraba EMAIL_USE_TLS, así que en el puerto
587 el STARTTLS era oportunista y, si el servidor no lo ofrecía, nodemailer
enviaba en claro. Ahora requireTLS lo hace obligatorio.
Co-Authored-By: Claude Opus 4.8 (1M context)
---
web-next/lib/change-email.ts | 13 +-
web-next/lib/emails.ts | 352 ++++++++++++++++++
web-next/lib/mail.ts | 5 +-
web-next/lib/recover.ts | 40 +-
web-next/lib/register.ts | 12 +-
web-next/lib/security-token.ts | 14 +-
.../nw-images/nw-mails/nw-mail-logo.png | Bin 0 -> 266768 bytes
7 files changed, 380 insertions(+), 56 deletions(-)
create mode 100644 web-next/lib/emails.ts
create mode 100644 web-next/public/nw-themes/nw-ryu/nw-images/nw-mails/nw-mail-logo.png
diff --git a/web-next/lib/change-email.ts b/web-next/lib/change-email.ts
index dfc45ad..acd5043 100644
--- a/web-next/lib/change-email.ts
+++ b/web-next/lib/change-email.ts
@@ -5,6 +5,7 @@ import { authenticate } from './auth'
import { bnetMakeRegistration, normalizeEmail } from './bnet'
import { checkSecurityToken } from './security-token'
import { sendMail } from './mail'
+import { confirmNewEmailHtml, confirmOldEmailHtml } from './emails'
import type { SessionData } from './session'
const GMAIL_RE = /^[a-zA-Z0-9._%+-]+@gmail\.com$/
@@ -14,12 +15,6 @@ export interface Result {
error?: string
}
-function shell(title: string, body: string): string {
- return `
-
-
Nova WoW
${title}
${body}
`
-}
-
export async function requestEmailChange(
session: SessionData,
curPassword: string,
@@ -49,14 +44,14 @@ export async function requestEmailChange(
await sendMail(
current,
`Confirma el cambio de correo - Nova WoW`,
- shell('Confirma el cambio de correo', `Has solicitado cambiar tu correo a ${newEmail}. Confirma desde tu correo actual:
Confirmar
${link}
`),
+ confirmOldEmailHtml(session.username ?? current, newEmail, link),
)
return { success: true }
}
export async function confirmOldEmail(hash: string): Promise {
const [rows] = await db(DB.default).query(
- 'SELECT id, email, hash FROM home_accountactivation WHERE old_email_hash = ? AND is_used = 0',
+ 'SELECT id, email, hash, username FROM home_accountactivation WHERE old_email_hash = ? AND is_used = 0',
[hash],
)
const act = rows[0]
@@ -68,7 +63,7 @@ export async function confirmOldEmail(hash: string): Promise {
await sendMail(
act.email,
`Confirma tu nuevo correo - Nova WoW`,
- shell('Confirma tu nuevo correo', `Confirma este correo como el nuevo de tu cuenta:
Confirmar nuevo correo
${link}
`),
+ confirmNewEmailHtml(act.username ?? act.email, link),
)
return { success: true }
}
diff --git a/web-next/lib/emails.ts b/web-next/lib/emails.ts
new file mode 100644
index 0000000..4d4fdaf
--- /dev/null
+++ b/web-next/lib/emails.ts
@@ -0,0 +1,352 @@
+/**
+ * Correos con el diseño del tema — portado de `home/templates/emails/`.
+ *
+ * De las 7 plantillas de Django solo `security_token` y `activation` traían el
+ * diseño; las otras 5 eran HTML soso, de ahí que aquí TODAS usen la misma
+ * maqueta: la de `security_token`.
+ *
+ * La plantilla de Django era un volcado del DOM de Gmail. Al portarla se quitó
+ * lo que no era diseño: los enlaces iban envueltos en el rastreador de Mailjet
+ * (`079xk.mjt.lu`), que además redirigía a **ultimowow.com** en vez de a
+ * nosotros; había un píxel de apertura, un "Click on me" oculto y atributos que
+ * mete Gmail al mostrar el correo. Los 9 enlaces reales se reapuntan aquí.
+ *
+ * Ninguna URL va a fuego: todas cuelgan de SITE_URL (la variable que ya usa el
+ * resto del proyecto), así que cambiar de dominio es tocar el .env. Ojo: en un
+ * correo los enlaces han de ser ABSOLUTOS — se abre desde Gmail, no desde
+ * nuestro dominio, así que "/ruta" no valdría.
+ *
+ * El contenido es el nuestro, no el de Django: el `activation` de allí mandaba
+ * la contraseña en texto plano y aquí no se manda (además, con Battle.net se
+ * entra con el correo, no con un usuario).
+ */
+
+const SERVER_NAME = 'NovaWoW'
+
+/** Raíz del sitio, sin barra final. De aquí salen todos los enlaces e imágenes. */
+function siteUrl(): string {
+ return (process.env.SITE_URL || 'https://nightspire.gg').replace(/\/+$/, '')
+}
+
+/** Los correos son HTML crudo: hay que escapar todo lo que venga de fuera. */
+export function esc(s: string): string {
+ return String(s)
+ .replace(/&/g, '&')
+ .replace(//g, '>')
+ .replace(/"/g, '"')
+}
+
+// Estilos calcados del diseño original.
+const P_MAIN = "Margin:0;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';line-height:21px;color:#ebdec2"
+// Igual que el principal pero en el tono apagado: es lo que hace el diseño.
+const P_DATA = P_MAIN.replace('color:#ebdec2', 'color:#b1997f')
+const BTN = "text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;color:#ebdec2;border-style:solid;border-color:#211917;border-width:10px 20px 10px 20px;display:inline-block;background:#211917;border-radius:0px;font-weight:normal;font-style:normal;line-height:19px;width:auto;text-align:center"
+const H1 = "Margin:0;line-height:45px;font-family:georgia,times,'times new roman',serif;font-size:30px;font-style:normal;font-weight:normal;color:#b17c02"
+const TD = 'padding:0;Margin:0'
+const TD_LAST = 'padding:0;Margin:0;padding-top:5px;padding-bottom:20px'
+
+/** Párrafo normal (crema). El HTML que se le pase ya debe ir escapado. */
+function p(html: string, td: string = TD): string {
+ return `${html} |
`
+}
+
+/** Párrafo de datos (cuenta, token…), en el tono apagado del diseño. */
+function pData(html: string): string {
+ return `${html} |
`
+}
+
+/** La línea separadora. */
+function divider(): string {
+ return ` |
`
+}
+
+/** El botón del diseño (el mismo que traía `activation`). */
+function button(href: string, text: string): string {
+ return `| ${text} |
`
+}
+
+/**
+ * Enlace de reserva: si el botón no tira, el usuario copia y pega. Lo hacía el
+ * `activation` original y lo hacen ya nuestros correos.
+ */
+function fallbackLink(link: string): string {
+ return p(
+ `Si el botón no funciona, copia y pega este enlace en tu navegador:
${esc(link)}`,
+ )
+}
+
+/** Cierre común a todas las plantillas. */
+function signature(): string {
+ return p(`
Atentamente, el Equipo de ${SERVER_NAME}.`, TD_LAST)
+}
+
+/**
+ * La maqueta: cabecera + + filas de contenido + pie.
+ * @param label rótulo superior en mayúsculas (p.ej. TOKEN DE SEGURIDAD)
+ * @param title el grande
+ * @param rows filas hechas con p()/pData()/divider()/button()
+ */
+function layout(label: string, title: string, rows: string[], locale = 'es'): string {
+ const site = siteUrl()
+ const year = new Date().getFullYear()
+ const head = `
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  |
+
+ |
+
+ |
+
+
+ |
+ |
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SÍGUENOS EN |
+
+
+ |
+ |
+
+ |
+
+ |
+
+
+ |
+ |
+
+ |
+
+ |
+
+
+
+
+
+
+
+
`
+ return head + `` + esc(title) + '
' + rows.join('') + foot
+}
+
+// ─── Las 7 plantillas ────────────────────────────────────────────────────────
+
+/** `activation.html` — alta de cuenta. */
+export function activationEmailHtml(email: string, link: string, locale = 'es'): string {
+ return layout('ACTIVACIÓN DE CUENTA', 'Bienvenido', [
+ p(
+ `Gracias por crear una cuenta en ${SERVER_NAME}.
Para empezar a usarla, actívala pulsando el botón ACTIVAR LA CUENTA.
Tus datos de cuenta son:`,
+ ),
+ pData(`Cuenta: ${esc(email)}
`),
+ p(
+ 'Recuerda que se entra tanto a la web como al servidor con tu correo y tu contraseña.
Puedes usar el mismo correo para registrar hasta 10 cuentas de juego.',
+ ),
+ button(link, 'ACTIVAR LA CUENTA'),
+ fallbackLink(link),
+ divider(),
+ signature(),
+ ], locale)
+}
+
+/** `security_token.html` — el diseño de referencia. */
+export function securityTokenEmailHtml(username: string, token: string, ip: string, locale = 'es'): string {
+ return layout('TOKEN DE SEGURIDAD', 'Token de Seguridad', [
+ p(
+ `Alguien desde la IP ${esc(ip)} ha solicitado el Token de seguridad para la cuenta ${esc(username)}.
Si no has sido tú, te recomendamos cambiar la contraseña de tu cuenta.
Tus datos de cuenta son:`,
+ ),
+ pData(`Cuenta: ${esc(username)}
Token de Seguridad: ${esc(token)}
`),
+ p(
+ 'Recuerda que este Token es sensible a mayúsculas y minúsculas.
Al usarlo, escríbelo exactamente de la misma forma que aparece aquí.',
+ ),
+ divider(),
+ p(`¡No compartas el Token de Seguridad con nadie!
Atentamente, el Equipo de ${SERVER_NAME}.`, TD_LAST),
+ ], locale)
+}
+
+/** `password_reset.html` — restablecer contraseña. */
+export function passwordResetEmailHtml(email: string, link: string, locale = 'es'): string {
+ return layout('RESTABLECER CONTRASEÑA', 'Restablecer Contraseña', [
+ p(
+ `Hemos recibido una solicitud para restablecer la contraseña de la cuenta asociada a ${esc(email)}.
Pulsa el botón para elegir una nueva. El enlace caduca en 1 hora.`,
+ ),
+ button(link, 'RESTABLECER CONTRASEÑA'),
+ fallbackLink(link),
+ divider(),
+ p('Si no has solicitado este cambio, ignora este correo: tu contraseña no se modificará.', TD_LAST),
+ ], locale)
+}
+
+/** `account_names.html` — recordatorio de cuentas de juego. */
+export function accountNamesEmailHtml(email: string, accounts: string[], locale = 'es'): string {
+ const list = accounts.length
+ ? pData(accounts.map((a) => `Cuenta: ${esc(a)}`).join('
') + '
')
+ : pData('No hay cuentas de juego asociadas todavía.
')
+ return layout('CUENTAS DE JUEGO', 'Tus Cuentas de Juego', [
+ p(
+ `Estas son las cuentas de juego asociadas a tu cuenta Battle.net (${esc(email)}).
Recuerda que para entrar a la web usas tu correo electrónico.
Tus datos de cuenta son:`,
+ ),
+ list,
+ divider(),
+ p('Si no has solicitado esta información, ignora este correo.', TD_LAST),
+ ], locale)
+}
+
+/** `confirm_old_email.html` — se confirma desde el correo ACTUAL. */
+export function confirmOldEmailHtml(username: string, newEmail: string, link: string, locale = 'es'): string {
+ return layout('CAMBIO DE CORREO', 'Confirmación de Cambio de Correo', [
+ p(
+ `Hola ${esc(username)}, has solicitado cambiar tu correo en ${SERVER_NAME} a ${esc(newEmail)}.
Para confirmar el cambio, pulsa el botón.`,
+ ),
+ button(link, 'CONFIRMAR CAMBIO'),
+ fallbackLink(link),
+ divider(),
+ p('Si no has solicitado este cambio, ignora este correo.', TD_LAST),
+ ], locale)
+}
+
+/** `confirm_new_email.html` — se confirma desde el correo NUEVO. */
+export function confirmNewEmailHtml(username: string, link: string, locale = 'es'): string {
+ return layout('NUEVO CORREO', 'Activación de Nuevo Correo', [
+ p(
+ `Hola ${esc(username)}, tu solicitud para cambiar el correo en ${SERVER_NAME} ha sido recibida.
Pulsa el botón para confirmar este correo como el nuevo de tu cuenta.`,
+ ),
+ button(link, 'ACTIVAR NUEVO CORREO'),
+ fallbackLink(link),
+ divider(),
+ p('Si no has realizado esta solicitud, contacta con soporte.', TD_LAST),
+ ], locale)
+}
+
+/** `old_email_notification.html` — aviso al correo antiguo, ya sin enlaces. */
+export function oldEmailNotificationHtml(username: string, newEmail: string, locale = 'es'): string {
+ return layout('CAMBIO DE CORREO', 'Cambio de Correo Realizado', [
+ p(
+ `Hola ${esc(username)}, te avisamos de que el correo de tu cuenta en ${SERVER_NAME} se ha cambiado correctamente al siguiente:`,
+ ),
+ pData(`Nuevo correo: ${esc(newEmail)}
`),
+ divider(),
+ p('Si no has realizado este cambio, contacta con soporte inmediatamente.', TD_LAST),
+ ], locale)
+}
+
+/**
+ * Variante de `security_token` para el recordatorio de `/recover`: allí se
+ * mandan de golpe los tokens de todas las cuentas de juego del correo, cosa que
+ * la plantilla de Django (de una sola cuenta) no contemplaba.
+ */
+export function securityTokensListEmailHtml(
+ email: string,
+ items: { username: string; token: string }[],
+ locale = 'es',
+): string {
+ return layout(
+ 'TOKEN DE SEGURIDAD',
+ 'Token de Seguridad',
+ [
+ p(`Estos son los Token de seguridad de las cuentas de juego asociadas a ${esc(email)}.
Tus datos de cuenta son:`),
+ pData(
+ items.map((i) => `Cuenta: ${esc(i.username)}
Token de Seguridad: ${esc(i.token)}`).join('
') +
+ '
',
+ ),
+ p(
+ 'Recuerda que este Token es sensible a mayúsculas y minúsculas.
Al usarlo, escríbelo exactamente de la misma forma que aparece aquí.',
+ ),
+ divider(),
+ p(`¡No compartas el Token de Seguridad con nadie!
Atentamente, el Equipo de ${SERVER_NAME}.`, TD_LAST),
+ ],
+ locale,
+ )
+}
diff --git a/web-next/lib/mail.ts b/web-next/lib/mail.ts
index d79b480..b510cfb 100644
--- a/web-next/lib/mail.ts
+++ b/web-next/lib/mail.ts
@@ -1,6 +1,6 @@
import nodemailer from 'nodemailer'
-// Transporte SMTP (mismas credenciales que usaba Django: Gmail por defecto).
+// Transporte SMTP (mismas variables que Django; hoy: Proton Mail).
let transporter: nodemailer.Transporter | null = null
function getTransporter(): nodemailer.Transporter {
@@ -9,6 +9,9 @@ function getTransporter(): nodemailer.Transporter {
host: process.env.EMAIL_HOST,
port: Number(process.env.EMAIL_PORT || 587),
secure: process.env.EMAIL_USE_SSL === 'True', // true para 465, false para 587 (STARTTLS)
+ // Sin esto el STARTTLS del 587 es OPORTUNISTA: si el servidor no lo
+ // ofrece, nodemailer manda en claro (y ahí van tokens y contraseñas).
+ requireTLS: process.env.EMAIL_USE_TLS === 'True',
auth: {
user: process.env.EMAIL_HOST_USER,
pass: process.env.EMAIL_HOST_PASSWORD,
diff --git a/web-next/lib/recover.ts b/web-next/lib/recover.ts
index ecc5dbd..c67770d 100644
--- a/web-next/lib/recover.ts
+++ b/web-next/lib/recover.ts
@@ -3,6 +3,12 @@ import type { RowDataPacket } from 'mysql2'
import { db, DB } from './db'
import { normalizeEmail, bnetMakeRegistration } from './bnet'
import { sendMail } from './mail'
+import {
+ activationEmailHtml,
+ accountNamesEmailHtml,
+ passwordResetEmailHtml,
+ securityTokensListEmailHtml,
+} from './emails'
const GMAIL_RE = /^[a-zA-Z0-9._%+-]+@gmail\.com$/
@@ -12,13 +18,6 @@ export interface Result {
redirect?: string
}
-function emailShell(title: string, bodyHtml: string): string {
- return `
-
-
Nova WoW
${title}
${bodyHtml}
- `
-}
-
/**
* Recuperación por email/usuario (anti-enumeración: respuesta genérica siempre).
* `value` es el nombre de usuario (type=password) o el correo (resto).
@@ -53,12 +52,7 @@ export async function requestRecovery(type: string, value: string): PromisePulsa para elegir una nueva contraseña (válido 1 hora):
- Restablecer
- ${link}
`,
- ),
+ passwordResetEmailHtml(email, link),
)
}
}
@@ -92,16 +86,12 @@ export async function requestRecovery(type: string, value: string): Promise [g.id, g.username]))
- const list = toks
- .map((r) => `${nameById.get(r.user_id) ?? r.user_id}: ${r.token}`)
- .join('')
- await sendMail(
+ await sendMail(
email,
'Tu Token de seguridad - Nova WoW',
- emailShell(
- 'Tu Token de seguridad',
- `Token(s) de seguridad de las cuentas asociadas a ${email}:
- Consérvalo en un lugar seguro y no lo compartas.
`,
+ securityTokensListEmailHtml(
+ email,
+ toks.map((r) => ({ username: String(nameById.get(r.user_id) ?? r.user_id), token: r.token })),
),
)
}
@@ -124,11 +114,13 @@ export async function requestRecovery(type: string, value: string): Promise `${g.username}`).join('') || '—'
await sendMail(
email,
'Tus cuentas de juego - Nova WoW',
- emailShell('Tus cuentas de juego', `Cuentas asociadas a ${email}:
`),
+ accountNamesEmailHtml(
+ email,
+ games.map((g) => String(g.username)),
+ ),
)
}
} catch {
@@ -148,7 +140,7 @@ export async function requestRecovery(type: string, value: string): PromiseActivar cuenta${link}
`),
+ activationEmailHtml(email, link),
)
}
} catch {
diff --git a/web-next/lib/register.ts b/web-next/lib/register.ts
index cdcf258..75cbf35 100644
--- a/web-next/lib/register.ts
+++ b/web-next/lib/register.ts
@@ -3,6 +3,7 @@ import type { ResultSetHeader, RowDataPacket } from 'mysql2'
import { db, DB } from './db'
import { normalizeEmail, bnetMakeRegistration, gameMakeRegistration, makeGameAccountUsername } from './bnet'
import { sendMail } from './mail'
+import { activationEmailHtml } from './emails'
const GMAIL_RE = /^[a-zA-Z0-9._%+-]+@gmail\.com$/
@@ -19,17 +20,6 @@ export interface Result {
error?: string
}
-function activationEmailHtml(email: string, link: string): string {
- return `
-
-
Nova WoW
-
Activa tu cuenta
-
La cuenta ${email} se ha creado. Pulsa para activarla (enlace válido 1 hora):
-
Activar cuenta
-
${link}
-
`
-}
-
export async function registerAccount(input: RegisterInput): Promise {
const password = (input.password || '').trim()
const confPassword = (input.confPassword || '').trim()
diff --git a/web-next/lib/security-token.ts b/web-next/lib/security-token.ts
index c75b9ca..7dc7cfd 100644
--- a/web-next/lib/security-token.ts
+++ b/web-next/lib/security-token.ts
@@ -2,6 +2,7 @@ import crypto from 'node:crypto'
import type { RowDataPacket } from 'mysql2'
import { db, DB } from './db'
import { sendMail } from './mail'
+import { securityTokenEmailHtml } from './emails'
import type { SessionData } from './session'
export interface Result {
@@ -34,17 +35,8 @@ export async function requestSecurityToken(session: SessionData, ip: string): Pr
[token, expiresAt, ip || '0.0.0.0', userId],
)
- await sendMail(
- email,
- 'Token de seguridad - Nova WoW',
- `
-
-
Nova WoW
Token de seguridad
-
Tu token de seguridad es:
-
${token}
-
Consérvalo en un lugar seguro. Se solicitará para acciones importantes de la cuenta.
-
`,
- )
+ // La cuenta es el correo: con Battle.net se entra con él, no con un usuario.
+ await sendMail(email, 'Token de seguridad - Nova WoW', securityTokenEmailHtml(email, token, ip || '0.0.0.0'))
const [created] = await db(DB.default).query(
'SELECT created_at FROM home_securitytoken WHERE user_id = ? ORDER BY created_at DESC LIMIT 1',
diff --git a/web-next/public/nw-themes/nw-ryu/nw-images/nw-mails/nw-mail-logo.png b/web-next/public/nw-themes/nw-ryu/nw-images/nw-mails/nw-mail-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..046ffdce0ae6e863fb5726e9b3f629b52c0e4976
GIT binary patch
literal 266768
zcmV)5K*_&}P)k`uzIR^1c5pU;195PQH1aPX0tf^gm_q$GfyS-se-FD?1*(9MW&!}i
zK9fdbd4I-L&mZ24w#OvaFqo;~})^_t;@3p_jt{niP_MNEH!S1!^X8vjZ
z=kV9G7>7WbKvkg5lld-hTLd}))ugr2OwoJ}tY0JeH~XqU@K!#a{VcQES((U*BUgHBynzB2~{#k^`b>eOP
zPhyD6Ew7gCtLz>Tbk~E6br!CALoUCh>u&b}(|vnhm~`chd)OxcXg>Gs$KpDn7kN|d
zU+hEjfsIF6{jMYUNIO(amyDr+zct@x4C?_&;QuKBL?H-?;}ewh
zq7f?wZ~|32(`ygV)QRkXBZ*4oY|N{pJ_s|)fGKmpI9FY^VFpCm4Vhcc_fIg=esHF`
zEBuy8nxCYT2SYj&^Wkqn%a2blRBWICv7;9g$bvtygQWg7?Xmq$6fG2MW4^G
zFXB?Jli&$-KQ|M|OX$b8D*;n5XF#fcPtec>-oR0VLfqDyav}XVJ|k`euy{M(FBJp*
zyMC&=a`A>l6lgN>PgSz)x3)cy_P&%csRGRnUD9^!03C%Klunxy1rnHf`vJa4#1VXy
zK&1JYsf=w*6qzQ*^ePRif~GdVs>55g8B=vAtqMpBxFZVzQ_@X!IGAfbrcwA~1g}{i
z#pbX94XaaUKqcG7D13sVPz&z>3TKey{m==?n?^H9!$44j0m6IxY@S~PPiTxG=Pd8%
zyl_@X0g{fqqv|@e$gJHxlBa@KHTtp#CUvYKQ~9O6L&-C@fkpkjI?T1HYaroziTrq_
zcNRd3-fGl=e&29DiwC_C@-q=qv`MF904fl7umUtVuZ^nbaT}2C<@Zb1EobW1GiCsn7P`T5+B=2!x5+f)Lx%yO)!G4zdd7)wqYHCzF4990je*WqXF{qpn?d`909VD
zIzU83FseOE260bZ-GicnXCM1A4+6J20y8A>%qgL?|7CrxBA;-!OdQNxW1D
z2*Yp9S0!9%s}@}vg>l9pNEsOPUUadMXyF;}cl|q!n32?kphq-DoB{HF2bfCXXS@D6
zjTrU-DZK-Asgq`YFmzz3!>ypJOydhK70h!u#J$Egc~cU@s+AY!&GroEKrS@(_nA^gTF
zx^&+s3P{?l{e8}FNZUl?GD5d%(2`(Fhk{uF1p!({wD(c03Fr}I_ZLKFs)#PuOW9LHD3MFM2T_#|}?oec3Y
z3tE7&Ce0jo)eq~|w?KtcG{^@!N|d9Rr$PWX0HGk<@)CKI2!nC3oNwN)%HU;DXrvG<
zl0n97E~tYcJO8P)XjD$2=w<VXA7p5Vikwo4G?DlW1>%@w$iG5w2?Ks5ji
zl|BXA`_saBr7=V(b0Jw=*gQ7(h3=~MqBuBk_te$WO-2MyshCCu;~da7={IS`n~8rj
z5|WXaJw8UsSH9TYAIg3HJ|Y^szZrc|ELTP}8G}Ff{O)%ZexcGd&!D*QyG*p&CBNLui)rT>=1}QmoM$$9!{Nc0e;k736_3Run^}
zGp+vhD|Lt}Fl0u7WylP80bxbY0;$LC_ZbxCd?R?9shcaqUUkyW
z_)355fk9-2)KTR;T;ZQNJx`7AdD}G0>t|N4L6&PynrX
zh@*M52oY%@l27Bvjv8GV0EmenO#6&LwEz{NDQ<{GGE_Y-qs6d{G1qr-@TMKmw+kRZ
zJKSMx8|YDoC);eoh^Dm=T7d|QindVflgSANWvzf2vw`m9B)D|qb_Z6C3Y3uqrozNQCk2svmSgrGolcpRuOk|0v38W51PHZg)3U^i~j3PFvvBOHuicaMS$
zDOAMq-Gpy~XKISs=sMrioUb%Ob{=sH;ii}6sSce5V5)iuwK
zUg|Wba&6=(>zjJSN<8T$Iv@iWO@U6{%6<+Jh%QzaqT4h&iKyNVA`ywGIbC6t#ph2H
zZMlQA1-e~K8S{HOcn)eZC3Q=|7jjNCzW&|1CBX-}d!`z(IZ8r+v@`lZ_7iR|)f8`z
z+3pO-6ln;vrp9Twt3jc0h1br_=}YTdP373t(!mQ*MUd!ssKgx9C{xU7>67tdC{SyQ
z_f6s&*J;w)?E@#M8JMojt4*A@*@0$Ys^#(g6Ry0e2j
zJrs4cPWwT}2N8UT37TklEsMkj=9uMu6~K!3-}t|Uo#yv7VpT6?O=l@(LcgG^Mu7r$
z4sX0u$etb*t{_YWXgblnrU=;=%P3S}j@{J(2v*iQ5&W>)LjaEoF-L9&eUu5dT%`?W
zI3XjFOyUWWF(eg>)o-wOr7pnJP{TuZjiT-Y9I94C=KVY!Pq;jO#>-#*$|oe-lGcEp
zir$KDt#6G;IcUrNWSCPGQ_6+*EWnP4BXV(Xo}fok-@Ae1Vt{-b!Ggrf9<3sWn>w6&e*}wlznSiuZ%+#pPJS82KZ$AeW(Wo7&2#
zPHzGp%7ze{wp6%h9QQuU9<`>iddMU7N*l4~cgsGc9ve>2cuV|DOqFuP
z%+V-)n*bDT=@m(-e1yqj@`|EcgRYV_
zr_%xo|3_Ue8GYOLbAPR4eWs=yGQa#_)ajJTGZSBnnIn5nXZb7==N4SZ0qH
zXg7wE^oT5q#lNXoIaVpclyM{x!RWqvA%ut|RP_C7jQBP^+%OrMb!O~$18b>_ma2eC
z2h%ta9f&r_Xejo1uaN1HW}mb$`P^6DlxeU=VJVEy8jBR90uIQ8n$f;ms9!(J$7*gq
z0o~XEAHL7ZZY2As1)w28iv*)PKnqX46$R_jHvgTp5Yl>QuqWC^N=?e@$tt)^ftNO1
zR+@*Wr$`G&E(B}MDZ+HNI~a=O6PMM-#SZA`y7>3}TriZ%F6Y?*ykal{2LfP)YKOE2
z!QykW0ouX(L37Xs&<)f{TWtYC9}yXdl%m&z&Fn@UHKN~HBR9apbCDIQOrh=!O_2qg
z&jg#Z9MpN__&oks02^zY`1wAvLOwSAn)6*1`XmeSKBSI>2BYez{GF>`StDi7-8KZK
zFEH!on;8*%^+D)WFDvOp%UaU51OX89moYVw7dS@pks$wpB28J=XREfJwQw+1ZZvLYi`IKb(HZ2
zOOFB}j17v-i_ASk
ztbq|ssSLpp0F)x>xpV$OlPrc-AXW!O4wv3bdQeQ(*1ks}z
z6_n;|g95Q{cm@xZVbef%hE-?1xqIH)2oi^Y<$G=^LKdF~`J#yB+Mw_q^fv40B60{C
zo>YT&c>!f8PI^qW>3NJ{pxC4EW_@fK;v+F^*2UikI2RPK6&irDQriv5GQfr!^%08Z
z{O&JYX{d_E*?pf2MF18|3RBcDO(p=w*mh5EpaC}G*dl@9DR&v3zHWyY5nA(e4AnMbgNulM@IfjlTp0ZiB=9SSlY32Mz5?S5p;0$+oe#DfGis!zVRfc9
zkB=R&Z(Z=j-cfcZ3Zq1NQTQj1FVF_TA$*)I450vMYRl<@B0>8rzjJaxfA`
zuk1YqINhpa;5BansOS_h-I~$~U|2+eD?-sNGBJt*q@ogwLWMvJ=YX^WL^EM5%_ALy
zm2~d;hEko!k@Vo6Qe_Mi$mLFEoTHxnE0TQS?~9r(ZYO{SLEVy}@_5p|uA;TB_&8a2
zA{N!KRmr~p7ZjX%wizXEPRr)$K7uA+i0>{Y9Q=Aybs0s?S321Pxlb
zujrv2mH2(u5Zg_Qq5w98nB4|d_E7ZCbq@QL@5$d=vl=e#8go1AOarT9%*Hw|i!y~?
z3wmGoao>;m=b$LeG{Gnfwg_M?A|_~FJPvT%CYJm(>N~!p@Ga%)%jIw>V}s9y-X^fy
zM_$t*iB^Q;@^J)SDf}4siuY-lEchHWmDq!<%0vJxjhqy;wa^1qOpPC^ZenSSU=44B
zFK{auooxf7r(o%>UpTj1eqy!iSFMDB1tA8qqV
zX+abV&kkUCs;?R6B!lP58VaAAX^Rj^j%EUGBn)A_q5y*gS5ycB(_?+?)=-L|8ZsT8
zDD||fIM?l~eX3$ea8uK7Bho)2@cIwFnIrVR6oIyOeC~-|Gifkv90cSXeiR1Su@Y7q&7_F
zsI8;}m6h9=mUGYTJgg?L)y}d7;erE6-H^(%iB%vC1=nX?T@!#
z=WExq>F&`BcrAtQNQDd_CPukRQ9CdQ9~db~InBiw`?+^{)1v6PNp18{6GUMNgTk0$
zK@2-^lC+$nRsjTxF;hV5(hKTGarxoqkp+KN#Q=%o-$A;@wh_ikuoD`jH
z?r02uCHaRjC
z3!LQsY4zW%IcC&-=992#Y|EXKF$R{U=wes$m1h}cGu_m%4jS(=VM#^+U1tWa00}wZ
z2rx%|1S?=h)^|`DgaI)NTp8tXe-B{br$2m$AOHEE@zak#;{15R(-&Xk@bW3P$2WMj
z9`S4e{`vbe4hP`=uHiE7aQESe2mQbCDBs}y>tEvM-@d@pZ+?l3HuTeHo5ZDgy%CwL
zWgkFqZLf&vHHw$uR6yah3wuUz<*iYW_*u>dAI{c`bz^9?)&-d{bPepvVVYdp1Ad02
zH@h{Eby$|#ao{s4KkJu`!$ZO}_Rb28o_IV)#F&cUMQTBiu8~7RHGIE~Mbu
z?^HfWB_694b6rZly#iAk_fk`_rM4h4EzX;bbs$tC-hVWK>I#d%W<i7o6OeGS{$$NqX0l5zLgTIz@Cq4JkOiC-;%#egTVH8E4tnU
z*xTM<`^#1878(X2?fwzzC}tdF>Yu3ux`!H%H^7}M%Dw$uu)Cax)oZ1ia-Q-u2$r{4
zfBHOG`-|z)uq89!q+<%?_Bpk^yf0;0!R=Cd{Ovz`eV#N9Qss#_eL0mrqEG6Rmt}-*JK%irTj-zJ`67*)j8blb8pX=>-
z*^2#qPcE2fX?rW)L62x~0%A{H-e`Ztm{`&YombdDc7jj1azxDyXnz-`$+y1
zq<~YQ5=6F^H!4>%3W|51<5Cdx)k-k-m1)E2DIZq~x%HnAXijU<$VE4~T4bjj2tI{8
z(
z|J((=UaD$pNSz>dpA!x%d~RbN5a{GQJCz3>%S-0*VIPDbNw)4y&!IA-T5=Xd~m
z_9KiMx*lNejMathd1o)mHTpsMr6XWb@Uopp0U#FbOlK4r5k&}u3$fZW@jF>(Qa2}!
zlOr;MFzKz>Df9ZVz@H`mWq)5;tbqcU)AkE{pGXc*f)L
zjCUUeZ76>BmEya1!0R91;_-)nfnF>McK`Glw#x|!PsqpWV2G#i#W`}IB623X+8l4X
zEhdM2qB&g-8b*47l3Q4CFEZwQ!>deN?)X%TU{aW=7)D`qepit;$CW>G3Q0!bBS6S{?BNT_^}OK0kyL;@$R;Gp{rci=uwee%|$fhkx?1m4@vCek&NJ%
z^eKZTm9FX=kcx6!2RHH&x$B7ObkJ+CssL+76dhQaEZ7~gxY751HW;X&akB_VDk6jvBc7Y6uXUQurj)
zpFN7@?Vo|{rvg@dTZ~N@A^@@D2hObH5}jp{5_RS@YEG^`#gQgHHl}cQRjqIkEXl>O6w$E_`w159aT4d87B0Uz80R#SNOM
z*BWJQ$ON8Hy;-|*rJIeJ%9fZVRXmpiS31rLq{Rf%1GZ?E@#k0DYpK!*aBxZ=yQactM0iN0Mk4t
zt>TR~HIdS!jYtPiOA`cYBO<+Xo7r}5r9wgyq(_9)->b-)tr3}V%D%f$0jSa`;`?%6
ztbO#i47~&^s_lyT@_%ndjIMYn#*lWEFJeYX`zfr5NUe#pXIkvlXLC>*FRwAW(GCFh
zIe*5}feYAj@ioWLa$@
zRAZ2Uc?3fTmUYG26x-#DpME&wrysw=+wZ@_Nhy|2lVr2G+CjIXK_jFyF{^M{&-2k#Fcs|GD)78jEL!`X&8M0d@ija3`?MUOP{$YoY8B<_5xi1)
zmf!K;P>!<_7gWXSZbLNf8)kavMriRCwfrG#Y=g!&2Gc#llU-IZaM&busiGn~Nn8P%=E-1->D
zY>}UfanXodxgSiA-uaBwGz0!^G$Sz8wj6(8;
zDl^=JDpNep#E2uNLg)GZZM%KXVqU7z6-;$nC_FAVH#gGzw=8ARC}r*5fskFsT{
z`H82q0mPFNeR2d-`p?H~MfU?dK1|&vEDE4|M#2?xZgCW?6q{(97&p>H_kA2`OM)iW
zmJAn3@jqNg6jPn@Lz^PDskjBW1ncO25UWoJ)VzKHS2!qqttrkQ-(h<^qAd+NI=0Ih
zecP};++%(5!Wms{IkZpS;qDGi1gFb}fBOAD;LRWYfX|O7Z0Ao{mlcP5tDP9VV;hR)
z?kU>g0XTnx9zWo6e1yQ4m+Qddgs2N|;%W<;ZV)}=s4wu{X~l2uFZhq&4*c+G;Gd3n
zcz0@e{oTLd<9ENuFaGQezW(#S#QoEkxST!#+Xh`0qn%|z!;uFl86rGQcj}->%ek|v^+Z_
zOd6NMW7gPZ%EF2}>*x&Bt=`36_$xV}F`Y43n?<9v>%;W7eBt+`v&LVwHqDj#WT~%>
z4{1HYQPL(>J6oz#VUFNjg93mlRju#0{toqCsT=Oy7}C*XZ^$QmaO5B>cq`vAMHU@w
z5rpw2`>2AE$Wyr92OiKxb!K?AY{(jY$TLNaJ7yiieYJ!U?k2v*c&i
zPA${>rw~Um_NkDlJ7lkBgBJ4@v3Ib}&T6$ZXgz_Q8!He4s51IB(rMU7qHoFh&Gd1k
z6su0WzGlZX+qX@Gy`ECtNp#tBOjG)9HjTdOzE26J>U#!aFFBTB_;9zzK#wl(xaI%SuL83Fnoz#
zq~PYx)KoCZ5ZCR^pH)S{PS6uIrtmixj6=Ya8#D@1namp(RbyTaFjPqq|}vp6vq0mVT@Ze6GfsECecVcg>uwP8MjH2{GQmgm2?L?
zWvc*D40w6gE_(4xfT{Fyl{L(;Rh?A|QrJZ#Hn@W@ijXM~_^4+WVCIYDH_yGpfRl>t
zvYxd|;`-irTR0y8q_uMPS>Z)85~7)WU(nvhF>Q)b45_`jq`E5T#jJ?)3^L=LmAjfeZxc9JAlPkNTwfO=ZE~m+N{{M16>*Cm5DBGLWY#f1k<{s
zPuv^0i{OHDkdXjuidKic<5n>mb0$ug+Hf27y*DD1-j@-J9jt8wS>>YBx;MmS|1EpP
zbh>EiO9C9zyJP1R6+N8l@&-6@gY2uTsSESF5zo^$&KH46%lmJDhQXS{KxF0JE=QB0
zo;r~~`TYn!pZ7&muw-RUeV12)^~Uza2x?|JGx-&$_AE!w%vK&v*QW0XbbtgPY@^n0
z&F=!3F|vllBC6v1CekK?Q7e}x1r{IBem^nOfl_pMW-TT%t1a?i1aEO5J4D@i+&eOR
z@K@%|$0rzAx6>I*TVS5685KLi#U|=}JmT`Rwq6I0J|wzR5$E_fZXRGg7`9LLda|s^FQ5;;SVs+M!lG>!}G$jb(7un{u&khHFp{pi(g>9e+u*qq+hUIj_7^E{oTQQ)@5-%N<_}>54c1$l!Gi#5p-C+
z#GRb+;msSY;|Y#;E1s`sKn3Tc;$;IK)(alniu1!a`0)N69{-R3j90(;Ex!J`K_0J-qtJRvVJZ?q6O;dd>
z9W7Y=PsN*9#}!{$e`p544MhNB#8|U#=-T$Wd5-t;dj;}z0}%`^o`?vW#&qrtG*sO|
z&;SFB-bQRF3`$KgY5Z;}6B~&Dxf6QKH2I126TS{m&4Yw?hL({n)_MtbhtL7YXRM~v
zX)`o12l3mq#XxM6Beb$UzuA@<^aN67Oq@($4N55lFVEF6ztIPpbf97f=?#~)dEvtdW`xG|8SIJHpjcnOzTx7O9pTEmQpDVq2ldgaK
zbGB7!X)|T=po4`719CY5+AX553NEjqo}_);2Orb}MEm#Fl(GnH-%kLe8NV|{YC27=
zT#C*aXm2?->I!0mhP7`Sw#yl+1Lw!jXv>1blPB0N7n~nIo1$zDz1#8w3h%P6Sk@IE
z-o3;7_wVuX(<4roiycpcfx`+6hK1D!IEJr0v_oN^y!Ztko_~dLc|`96+jhow`V7c|
z-h8i(+=e+lD6=CDcs#o09(RN7j4mSBwhfo+su3fZW-b#0LfTAGu$a)
zDWFp1OWma8M6npu#?S!w0IF!u48IpZoxb0HTn~v=AeOCE5LXKtV@&kwwF=#BrBJ_`
z6w9>(6Mf;~u9X({^?pT*6jV`xzWfWAQGbl2`
zikotw!EHX*X@H~Wp@513_kT=R*}HBl+u+Z0<7gz7H(_lpCY&ID8@_+VAH~X
zY7rL}NJqp9lsD%w-p6U7rxGM{6Yn)0I?YLf<9T50r^a2R-BsiQ86gVCBRqd1^o+Pc
zm|`5Bqm&ST<#$u04}E!w(SJff$em`WjotM
z_j)S5HPl+evI-uL7rg!Md%Su58kaG!G@ywB3$Sei8)e8RUHj(VrmZ}@yMKnhU2uH+
zJ=V3MkAc2j(3TZYpbtyQ*>?BtsW$V-#nTEArqdCMc7f^QF%0=1d~5snN5PAq{S24W
z8$7$)@Qbfk{PXKGK0GSMx?sqHC!%=v>^bD}5y!v#f6<@)0-t{NYrOd89(U`4-j|$A
zH1qBofYD;|Sd}2%69+s4%$YpzV?@p;J?$3Y%q8M$?Gz<7mLXt)FX~r7WTz0~Y&{y4
z1Q$g4a9Tk;*9|EiE1Ron(0rbEG~Y-u;TDbZnDsOxD?$SX^C*gfj?@zN%nQ_dH|rM1
z;NQE@F)dhk=Y{6Z$4q_mJ&ZIE8b+3qU1(uGQy76M{T7h~=Sc-hBiZ2O9eWr$^Y%5x
zFwlmr^i%PDbi_Ak)O1qhidL>9Jx#27y;HWm-{wbE06)cE9P>+KB#rY+P+>dS*C_48
z&n41hN6t76Bv&jNfq0J;F5)nX5u#(@t9NX-f6eU}1c2n(a?FgW>jJpp9pQ*1tq79r
z6Gp*(3jhZt;Oa9PAaVX2>;%A8iN#EOF6w|{5}Y?F*R{`5Qp&*2aVUllj4B#!xS$~9Lt&*Dq26{y
z&?9-Lg1OLv5#F^ruMvQPnFQt2MlU`;cQWZR(Y!?LufD5b;o3P!a8ja(te=$nz4u0P
zyv-$h{~q$Gh(No>7!-4R_M^U+8i_ltTfcG(1p;#FjadoOE@k`I^~5%91f4zX*EP-R
z{H6vlu^T~8;W#CMIn?*ojPCI`KE)!q;!&pD>-$3A7Y8gfwWfVYhpR{EBC9(D-Fa(q
zM^y)G<7b~sasFF-?}j{C52=dF@dQ(rf^EBCT^g39Ve12@^9dh6zQ@OppK&@Kv9yMD
z0Y=|2nss*c5p9|AH3GG}r(Ps)f3FL0e*A=wZ$IM6vlo!{VBK$m11Dt+EQ<-|;3gg%
zN85SJZb+Fb2x0CY@%h~ue`w#};kUoWr+5F1XUiG?=9>lo_@?9Y)`3Ow5erUT@oYWd
zei^ub{0^V~{tbTk=@nl6>0jW
zAJtP5_K8Y6Ug7=aqt^fQ5JpV-RJ>S)7a9kSOWny?BjJ}1sQu4%sylfQJ!O?6=&pGh#VUb>Ah*-X}kn9ZXLG!G-}Dz^piCX6XL4r6feZ(3c7exA-vXqJiSbs
zjlr6VYu<}-dE0h`j&G~NIyL7n_4*|dWUUH$a+G!?w;G5j1r3zKqxm*Qt4quU7kf^s
zR~Ymdf`jScLyZ!KSTw^GQDE9^KyF2HN~y!-%v|-U8m#*9tu09E?-k^g*RmES7%BBx
zI!M$J#>dyi#X#McsDit^m>%07lEZP1NoH@-h^^j;ETyBNSN-ENeBZ=7WSepdH34Y8
zBA>BTpL6BS)0C^0(f}i=2TdoKJ!yapj3Lvzs?(%u_H6ie5Bz;c5oCe<4O>*`Ge`as
zI8Jj7Agddlca;I39MklA#cp@_T!lZ=pYw7Zbf}=Ia
zdJmNay`Qn2Pq>^P{XLeV+|Cz_?Sg)}pzCG=1Mj@AN*ddi$_n!Y84+PoC86OrLbau#
zEx`G7!FdDDUGV<#5wE_z$J1tDWgP?1fzR4-8G@|?LmHkR243_Nr@77TTlT8=mZ!oaFIX+D8v>f_ji5RNK9{A^ZgWGD>T?xVu)w!UPHy@JnFVB@v!@5P_<`O@^Lo$x
zf8`(2C^y$+|5+fKo=wDEq9}M@{995a(N^|1^@#eo5P}`by&O!={s^>WLDI-blh_nD
z>eb48%Z_&ND62)5eA7->eB2+)7QL5=0Heu^w`bdL#
zzr>(1k3%y;s`Z(uW1Ec``^=Y8xJBLwmRK9d)rP5a>g()B$|L2~
zj_aXfAK>0;08^S0f>9$QHSNMCgF*qIH9$(pUI$;j4
z^bK1d(37IIBi6<0zYh0zSk?v0vIK*W_Hl@5Okk}=QfOPCZMA-09`X7QN3@@Rh0En0
zhtFsH=I8ei0OzCPl`7tz&v<11_0w(&DuCL|g;I
z_6|1SMM;h&>{%z1bDOklZ3$b$IsT$ySaMv7X0<)-0xu#20YRiQ3y+2n`ulB>#%$2l
zc^iUQT3whaX{H|Gy^0)o>e1;ZDEtI?lu1o73yo_60TUCZ1{f76#%SUN&g%gp!*mO}
zPYda^+Uzk+$Mh796NgJ+HK}gasgXzgU&MCaD~(}|qF6G5yHwpu8!FT1gkvgwx=veNt+3~mAnXum+T8=j~(hcZH7
z7yaHjxG8c$Hwpdbf45pEXl;cp0@4wc>$#6P7H&*ziz$}>@jv~$zf#40=0AbYk0-o&
z`wp*vdXG1+ZSShq6k|JEn(%l+9|LV!eCvW?>AN}!i`Dn*7*_b+HyjT4xW9YAx&Yhd
z?5jtBMS!+gq)8gj0(3Lg2QH@zdf&j6NKNFLX}Fq3d@mrebeGk~Sbdj3v92o~PZun0
zK|c;WeZJsf0lL~AS}*PvJUk8w96HJ@N2wi1a5x{58#mkk-2JzJimEVZm;w+*oA&HfJEHT{p$bnZ
z`H>7K1`wj~r8w+U8@o9oF1!AWXwD-@jNlNM`j|t0s<4!;9m42SPx2Oe+uYF`Raj&v
zIHfqg^fHAtL)~^+q=N_bq6u1CVWw*Ky5Y#%
zkws*hoBf#gj%@1dI|3T_+h`p@UWRznUzH=v&^YNZ$GupI{GNLYe&^F8-`Q|aaR
zdz4nBM&D;#3w$Lam3(;Q$>qkZUNk&0uR>Wf
z6ntEb7E*Fc#7kA9aE}|O20-+G(so$Cw17GS6$6VNvFcugttLR>As37h@}?T|Hjba6
z+h*zH!yVT9r#^ojlZ>{aK%~?>gu#vBh2U0|%T!#bfjzj40`DrMg|4AQ@;kr7$va&5
z{W#r0!$Uwtq4c9XDgbIgmA?>QoB#kI07*naRK=CV67$0v
zI}!LEbz~jMpV7-0NX&r(Q0cZT8d2qmu3oGDcjGz;bD6s6P9cTSb!
z?UF(E^%+5y8<7q2(5*{%lWS4QQJAq8b`hsVBnwO5eWP19^y&*}Om=AeebsaAqabPn
zAznKZ2)`wuL-NmXVoJ=>b-fQkHGo{=4+0=x43SSnUqFBnqEg__1mF<;-0P8)#hoz^
zgTod$t~U2S+M%P&p3f1f+aRKJZ35a~yb}axGWCn8z-nAst2%?G|9_yW>IIZBQtLNja#keiDu!(jkBVQVqH%`7u
zNs1OrR337{7gi_ySH!g`BTGJFYfWXpHBGhZO1QOu6VWzq}yb@x)*$P
zFZg&Icz5nN-#tNZ&+y|m@b2Ro-##4iZM&fV_z%$YM;sr%!Qn8lK6#4E#hD`!&pc_A
z1Fn{EAR$t)5JjQLfVef~qsNjHt#I
zu0*K3ScC}xJc?%Uux$5a%Q9l^7wFj*R$w&rzCjdN9-f#dKz-9%_FE*<(9|zRrpl6VeYhHWBK0acsjwtL8t;A
zfJt6ZUtSs5%5&fB26vc7^P{)4`=XrYHkQV)8dgo7cG_NDja%Pnk#Xc|M}p0w#KShLt<+ho_VOQgH7qrb9oCu)x(T$^+964Me^+kK2g;P
zM5H6_{WZp!#$2O8W0Z`?4t#~4Eiyfi!D-x_u3htW?y&3m2;I&AG$KVzFB&Fm7`}Li
z5lnkG^+eUH!=I(xG3sh5S~rb5?j%o^ae+~6mlO3=rqjEr>8#vekbKmlu2G>_x#F*H
z9qW3)-75I-_y`Q(eBSVI-|*z&84mYP@XKHP0)XInwj*r5`sx*4ynKO=A3xyp=g(M|
z1($8Z`FzIX<0AxS%(((#S!`G8^XV~$)whmiwT?18IUK2~4m;4^6_*OZK`uuMW*|5S
zL*^!+bJtcFi0ObH2iCRW)29tj9~xeKwc_vp{xg1jzv1bF;OQ!OSQ_rvhP%~{1ri-N
zef)^AEO>f%!2LncagWd1@cF|L{r&IpD6er?7ySHBzQ)sUevLkWF*fi24q;7`tTgRb
zo8(A;D2-cv&QW#*xCkD(A*gufuBKqjTO3MZ*9iyYuI4FV{5v8jlQ0_~oITc2ey1?|
zKquwxfXo58i~*c4$@L9bMKF#ZF}4$y`zL6JgFUldpkkXA3hNYTPbAYN0VD#&j^gz@
z2-MQ+Ftl|%^J>c3<0a2Epsn5ydNS4)K|&Pj!$E9-TMyUQ0$5mQ$ipHnDz@rUVYBI`
z9I2=m4Cg7rX!}VeLBrkL3f2uJ0iX@`r6Zz!J0lq6hzP^1OvkuDWO0xPm(L!XWhQPK
zv1^FXpiOBrA1gtM^AHuQw>Ebz*PQ!?iU^(Ilps7pbgsHn-Pwb;{dFs3?cQt9ri!a~SKVhF^!XYxJzM)uFv*@pgx}k*>A~A6TTFfVQgm-hGpgA!
z0xa>iY=ha09f#Mq()NhGuvBs5=(*$_njeWlI2fvXqB)&-4kIIJQ#5ZUo}^p`_e|p^
zcMC*%;E&887>~7$urkHeisT^;Y(rxOEb^|A&-UeOF;|MLy!^Q)guthvo}VwbYm9fSH+NKJeaO}
zcAOj(pytd>TH9v~>pJs!e^eE+EYQn_emIRZL*)E(xkKjTl20+oYO`Mfy5
zfUjQCLO>cr4WI^Vn?@OCSm{jY)L+gD`N`%%0LZ>bl{5kQu1vE3GQ_+z8!wBq{oQH<
zwKS-$xD#m}mE0hsL7N-B0(MHk#);)CU>yLeWbIl6>&0kLxbEtjjH#2L?r#NPKBg&d
za;02qs7y!&D%{~2!B>&)1KS@YraOqH#QlZUk^#QwG!1#%&0BXK5&yodMV&N%q>uK-
zjZsR!1_X={P(DI8*aOtU$a<}m+p4Ft0|Mb8#Zo>G<_G4*9zHva2<&Dc-=mlY>3>Ix
zo8WinY)(efkMR-)*cst3fWRbzGMi~74K0k2&*W3mgsWtC;PeY%D?8Z=O#vP5h)FM?
z&*sXaCc5i)%0TMTs-xX5jF~R}WB{n3cwv9NqI;bgOzn{l*TbD7gZuBfTA1^qPLn=1
zjPqwSrltt~G|L5I<>#)^1b>DDh7L5XGERKpTMtponP(1#VuU>q#2%7l=P)4DvG9`>
znwQRGFhN5{I>+jOc8S&9tEz3w008~m@$m2rzxnmQ!FssEaya0!Z8%;!RxVHW0h-Fo
z{V|xw5fSJZXiJ0k4sPVN_&!l}MS{4-J5p&*Rb3yBLtJ
zxvJ9GKb6@S7@v<}P{!$KZF;&8>k2kpo!i))Hum8%zL-FvCVld3He`EFFbYnAEcOn)
z__$cSoit%io&v}niQ^r@bmzVhp1kLrLc{9!(9Go+hHt>TSUC>oPRrrFU$}01pvcg;
zDZB)2c@t%8l5Eo3Y)mTHjvdsI;7-*f*XH5yOe`Giym
zN%%!En#K6dfR*>|oriLd>)J4Kq@zC>}iu}x<@$*~#n?YZu%kr81{nVosBytGidb37>I7fCo)u``u;69a9lm#=UtNWzy
z_E*xOE>G~Gr#Z!#B9ylP)Qz^QOce+HW-1?@dkx#7wzgQrZabn;M|pv`j;gV8Vat_F
z^Ib*1P|kC#L;|cW@|w@ePox3UkpyUku5*^AO0=NK0*wVqi9=GyHLO&k8pVhM_xDdQ
zbYMH3Tm@-i2v1!#3-hUZ9h578!{H8XS}7*5vT(JGo=0w
z%4Q?}Ob*KZzwF*LS+;Zc7!2X1U`jD=Tw<*{(EEVlO3$N?qQr|J*)n;HDy_?kpa1qx
zasT82>)NcazpcukrZdE&An*!;>di4iEV7`aSOM6!$N`#yB4Xcnpxy2`Cj&
z|C*gZz$7Yn-}ulBtuu8wY+lOPC≧rfOwD&Dw6BbBY=P%uye4fD{JOzDY
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
OFjJFp6{MFj2D1cRrxyW3W3R+;
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