From 5d6f77f868d2f9a6d03e155d9fe9019c34c4c291 Mon Sep 17 00:00:00 2001 From: "every.channel" Date: Mon, 4 May 2026 01:06:41 -0700 Subject: [PATCH] Redesign hosted web as broadcast console --- apps/web/app.js | 50 +- apps/web/assets/sony-master-control.png | Bin 0 -> 2283568 bytes apps/web/index.html | 116 ++-- apps/web/style.css | 572 +++++++++++------- ...0118-broadcast-console-web-presentation.md | 31 + 5 files changed, 469 insertions(+), 300 deletions(-) create mode 100644 apps/web/assets/sony-master-control.png create mode 100644 evolution/proposals/ECP-0118-broadcast-console-web-presentation.md diff --git a/apps/web/app.js b/apps/web/app.js index b3f100b..17f2502 100644 --- a/apps/web/app.js +++ b/apps/web/app.js @@ -110,19 +110,19 @@ function bindPlayerSignals(watch, name, extraCleanup) { if (status === "loading") { clearOfflineTimer(); sawLoading = true; - setHint(`Connecting to relay and subscribing: ${name}`, "ok"); + setHint(`Tuning ${name}...`, "ok"); return; } if (status === "live") { clearOfflineTimer(); - setHint(`Live: subscribed to ${name}`, "ok"); + setHint(`On air: ${name}`, "ok"); return; } if (status === "offline" && sawLoading) { clearOfflineTimer(); // Avoid flashing a false negative during short reconnect windows. offlineTimer = window.setTimeout(() => { - setHint(`Connection interrupted, retrying: ${name}`, "warn"); + setHint(`Signal faded, retrying ${name}...`, "warn"); offlineTimer = null; }, 8000); } @@ -133,7 +133,7 @@ function bindPlayerSignals(watch, name, extraCleanup) { const hasVideo = Boolean(catalog.video && catalog.video.renditions); const hasAudio = Boolean(catalog.audio && catalog.audio.renditions); if (hasVideo || hasAudio) { - setHint(`Live: subscribed to ${name}`, "ok"); + setHint(`On air: ${name}`, "ok"); } }); @@ -197,7 +197,7 @@ function mountPlayer(relayUrl, name) { forceAudioOn(); watch.backend?.paused?.set?.(true); watch.backend?.paused?.set?.(false); - setHint(`Live: subscribed to ${name} (audio unlocked)`, "ok"); + setHint(`On air: ${name} (sound on)`, "ok"); }; document.addEventListener("pointerdown", unlockAudio, { once: true }); canvas.addEventListener("pointerdown", unlockAudio, { once: true }); @@ -205,7 +205,7 @@ function mountPlayer(relayUrl, name) { document.removeEventListener("pointerdown", unlockAudio); canvas.removeEventListener("pointerdown", unlockAudio); }); - setHint(`Live: subscribed to ${name} (tap player to unmute)`, "warn"); + setHint(`On air: ${name} (tap picture for sound)`, "warn"); bindPlayerSignals(watch, name, cleanup); } @@ -285,7 +285,7 @@ async function mountArchivePlayer(name) { video.playsInline = true; video.addEventListener("error", () => { setHint( - "Archive replay bytes are not browser-HLS compatible yet (legacy container); timeline is available, live path is unaffected.", + "This replay is not ready for browser playback yet. Live tuning is unaffected.", "warn", ); }); @@ -312,7 +312,7 @@ async function mountArchivePlayer(name) { hls.on(HlsCtor.Events.ERROR, (_event, data) => { if (!data?.fatal) return; if (data.type === HlsCtor.ErrorTypes.NETWORK_ERROR) { - setHint("Archive network hiccup, retrying…", "warn"); + setHint("Replay hiccup, retrying...", "warn"); try { hls.startLoad(); } catch (_) { @@ -321,7 +321,7 @@ async function mountArchivePlayer(name) { return; } if (data.type === HlsCtor.ErrorTypes.MEDIA_ERROR) { - setHint("Archive media hiccup, recovering…", "warn"); + setHint("Replay picture hiccup, recovering...", "warn"); try { hls.recoverMediaError(); } catch (_) { @@ -329,7 +329,7 @@ async function mountArchivePlayer(name) { } return; } - setHint(`Archive playback error: ${data.type || "fatal"}`, "warn"); + setHint(`Replay unavailable: ${data.type || "fatal"}`, "warn"); }); hls.loadSource(archiveUrl); hls.attachMedia(video); @@ -392,10 +392,10 @@ function renderLiveList(entries, onWatchLive, onWatchArchive) { const mount = $("liveList"); mount.textContent = ""; if (!entries.length) { - setListHint("No public streams announced yet.", ""); + setListHint("No stations are on air yet.", ""); return; } - setListHint(`${entries.length} live`, "ok"); + setListHint(`${entries.length} on air`, "ok"); for (const entry of entries) { const row = document.createElement("div"); @@ -409,7 +409,9 @@ function renderLiveList(entries, onWatchLive, onWatchArchive) { const meta = document.createElement("div"); meta.className = "liveMeta"; - meta.textContent = `${entry.broadcast_name || ""} @ ${entry.relay_url || DEFAULT_RELAY_URL}`; + meta.textContent = entry.broadcast_name + ? `Channel key: ${entry.broadcast_name}` + : "Ready to tune"; info.appendChild(meta); const actions = document.createElement("div"); @@ -417,14 +419,14 @@ function renderLiveList(entries, onWatchLive, onWatchArchive) { const watchBtn = document.createElement("button"); watchBtn.className = "btn secondary"; - watchBtn.textContent = "Live"; + watchBtn.textContent = "Watch"; watchBtn.addEventListener("click", () => { onWatchLive(entry); }); const archiveBtn = document.createElement("button"); archiveBtn.className = "btn secondary"; - archiveBtn.textContent = "Archive"; + archiveBtn.textContent = "DVR"; archiveBtn.addEventListener("click", () => { onWatchArchive(entry); }); @@ -480,18 +482,18 @@ function main() { updateSharePreview(); if (!name) { - setHint("Enter a broadcast name to watch.", "warn"); + setHint("Pick a station or enter a channel key.", "warn"); return; } if (mode === "archive") { writeParams(relayUrl, name, mode); - setHint(`Loading archive DVR: ${name}`, "ok"); + setHint(`Loading replay: ${name}`, "ok"); try { await mountArchivePlayer(name); } catch (e) { setHint( - `Archive playback unavailable: ${String(e)}. Ensure /api/archive is configured.`, + `Replay unavailable: ${String(e)}.`, "warn", ); } @@ -500,7 +502,7 @@ function main() { if (!hasWebTransport()) { setHint( - "WebTransport is not available in this browser. Try Chrome or Firefox Nightly. Safari support is still incomplete.", + "This browser cannot tune the live player yet. Try Chrome or Edge.", "warn", ); return; @@ -510,14 +512,14 @@ function main() { await ensureMoqWatchElement(); } catch (e) { setHint( - `Failed to load MoQ web player dependency: ${String(e)}. Disable script blockers for esm.sh/jsdelivr/unpkg and retry.`, + `The player did not load: ${String(e)}. Try again after allowing the page scripts.`, "warn", ); return; } writeParams(relayUrl, name, mode); - setHint(`Connecting to relay and subscribing: ${name}`, "ok"); + setHint(`Tuning ${name}...`, "ok"); mountPlayer(relayUrl, name); } @@ -537,7 +539,7 @@ function main() { const name = normalizeName(nameInput.value); const mode = archiveModeInput.checked ? "archive" : "live"; if (!name) { - setHint("Enter a broadcast name first.", "warn"); + setHint("Pick a station first.", "warn"); return; } const link = currentShareLink(relayUrl, name, mode); @@ -552,7 +554,7 @@ function main() { }); async function refreshLiveList() { - setListHint("Loading live streams...", ""); + setListHint("Scanning stations...", ""); try { const entries = await fetchLiveList(); renderLiveList( @@ -574,7 +576,7 @@ function main() { ); } catch (e) { $("liveList").textContent = ""; - setListHint(`Live list error: ${String(e)}`, "warn"); + setListHint("Station guide is unavailable right now.", "warn"); } } refreshListBtn.addEventListener("click", () => { diff --git a/apps/web/assets/sony-master-control.png b/apps/web/assets/sony-master-control.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9d3aae72bb66863b247f87d3b79290100c197f GIT binary patch literal 2283568 zcmeAS@N?(olHy`uVBq!ia0y~yVC!IDU|!3?#K6E{`=lU_fgxQ#IngNsL}!)eCNVHD z$Yqu0rX(8`Br*sx2sAJ-tYWa3UC0a;U|>k+gsO6fsLDlERa%s11yX5cmY8H_W|^F- zo04RbrfZUFZmw&QmTID#Xl#~Zkers7Vrgc|z`!8(6l$C%#JI#_3`_MAi;Gi>N;32F ziWwLfI4?pqSc5b;oaQmw-Q_WNIk(oeFZIru!XUf#GL!T37#J8BB$ADaGrm7*f4%on z5Z4OTn_7%=Zw(k27{rs(Qj!=la}(23^^42WwJUOSKqi+bWu_$A6qltdlxL=tWY{X1 z8=5I8WTa-MXOuuWWtpkvPWctKN(KrB3g(7pAgrX2mYI`dtCW|Ym#U;tk(-lOY^#(} zQc_^0uU}qXu2*iXmtT~wZ)9L#0J2TVj?1PXu_Qww#a7AJ)WAZ|+{9AB*w9?h*wWJ3 z)X+@N+}vEj$iiID*w91)ByVYHs9+mbNr9b~ZLQ(=#$QR4}wK(X%wN zP%t(z)-$$LFf=#OvotkRFg7&QGc>VKFtjk%Gqp5xHZr%+voru1XQXFjY@%RfYN}^q zs$gVju4iOvq+n!X4zdhF89GCRL2d=9GE^|M1nDwX0Gk4`6J)3<)DlZ)h^6LGH-O|p zZZcPZxX}peW)r9%Oq?NpGJ|;0)DkRjW?`%V2?AJ0eBrqCcXf(EIv0wjnb zL2hDT2$nZDbv8D()H5+LQZO|(&@(qNRWLR;(lfF!Q!q6#&@(qQS1>U!(K9tNRWLO+ z(lao(bT%g))-y3NR4_3!&@(bJRxq)&&@%?bl$nK|u_4HLAllR!A`aq% z)R{o_DL{-dgBoiAwZ_aDVyzj}86ayx&N5ekIMW#7YG}eSF)#{)CZH%^6LSMS3rkA{ zBNG!nb8|Ci6ALpv3s7X48R(gtE0|as>zRNOjD?Y&nSr5#iKT&_nT5H6v4OFkiJ_5? ziJ_^UDJTJ&8R!|9m^qsm8tIuBf+E#I&&UwuJ_|il14{)XQyAY=&lr>@AnJWU?f`|V zv7v#Ug;AK1xw)RHk(o10*vQ;e&(P9P!PwA3&&Lm|r7*wh?kAT-sP_&{=mse-YwiJpn2VVJRnp`M|IsSivYIGT-(!2U3{ zv`~P`he6fD)j_g~NtCaV891C3jLaLxt_VDMVPUf zB`DZ@jLa=PX}*^ z`WPFV>lquHE0`FX=^2}u`WPF4Qm3(kiLtSsfuXUpv4NSM38+{!HqkS*Fa)P^OEW_S z6ENRG!Pvl1&(hcuqTa~I$k;^B(%ewN*wRGL*wozF$iPC+!puU!*xW+T+`>}9(9%@T z&=^!~n(G;v87iRpI?5O1esgnE1yJ&{bT%>qX){zXF*N}fqoBlUXkiAi&D<0mD3&0; zp^=`EnTe0Ffq|ZZrI~_>si~eB$nnN{MrOteCZ^_kCZ?b)YOZH!W`f`w8t54tSwNLT zQ?@a<1hFtR3o|jc&@(i#bcUpOP?j;!GqC{G3FdkRMn(!ICPsQ@P|sRgnk$%?80%RW zTlyFqS?C!USt^)V80ncB7&(K&$i&iA!Nk&B&)CRF!N?3mLrW4+76unIMi4)HKtmwP z*TfW54uOm{)w2ZERHg=cCT3;|Cgx^(#^#_XFaTR)YG9&gU}UafY-y=yWTapU3JVKR zO=YfUYz``|E%XeH%@mAHP4x`TEWq-X#zqRDY-4I-u3&0lpl4_RDz}XF%uFp6Ouz}r z!WonzEQ~;5X`*LoXsBRfXrTv=8E^_WLhwz@^(@TI!;DSL^o)%xeN0Tu^~?+`6^zY{ z^eoNIolQ(E^~{V76^zY5Im%Q4<}G70ka|$$K)h*e1}e}j!%R#--Zh2NMp3>H4;exI zXXtDSN|K=9H8RvQFtY#`z!rv}BxtT@28srALp@^)!@@|< z%*@!?#K2O|5L7K#80vvz*U(VU+z?bt8tR!?fO3?vo;j$>2h|g%ramSX272ZOMheD8 zhI+<^7GQ5!fC_G7Gd&9nP&H_vX9|iZGYdTvLsM`(8Ck%+9R+J7CFLY0XDjL3aoK>{ zLUvpX42-VO2Aw0QL6@AAUxeHOgf!?9lflhDy)q+sv(CW&Y~Z8$Hr^M?Ja(=>&0)pB z!0-p8d0{$Kanq7C2rCENCQL3$O)N=GNh!}r%{x$HWME{bYhbEtU=m_rU~V;>`TK^n#*PT_Zh%!j#PP%#y^M;QZ2} ztBE!KysF9xeGsVqpz>0JE5N|O)dddBjQr%{g0RG#;>Jp@5?@bG4}bela>qbd*YxyMQ;@on5N9W|M9*+1r@&-w!_>@jrxKrv zqSVw(!!X0tEW^;W+#r{Tp!5LWEXPW}EJs6M7teBE7uPDkkd#DUPxnY)Pxmli*X(lV zz(_amauXNFjC?mo$G}iy6Hnt%L(>o=7yk+q$3ROjmxzj#)T9jOjBHmomuyQ{*R4CvcPLAnODF&&*;T|Db zmfpdh*~XzoQQpqJjt1_|!G-R@o=L_ofv!%@<)My_CZ0~|fleNtp>F!7d6k(_CRrAN zNfx;-`Tm(sKE)=H`Ih?W<#{>Tm6nMfrBUT(X;Hx`;i>M0h5F$hVc{vBk?t-TbL<>AJb5!!B*;mPF@ zUQQwD`Xy1Np_R$bUS7V21=+@dM)^i*;cii0`5D1Q`DSh|jzy7)m5wG};n~_%neOS~ zNfrg#zJaE0i7DQW<#}!{Rh5n*ffm}C*#)JhN%>V(71{blUQya+#U4QhC1Kuy7CG7B zmPUDHo?fm+J`sr#reW@G<*pWqp}{5Ijv@YK-aZkLS&;!%d8R1^F8PJ72KtVfmA)0_ zh93FG!T#D+Z<1N%{F+B}o}h6&0418K!BY_k!BsxqhQZ}-K8D3U0gg!(<|TQ?F8 zmFZ??&Z$v_9!U|}`Vk>cRgr1lo=(Y`A%#`NVJ3ljKAxrCiIy2A1xC3h7UsE;c{zEm z`hkJI$ripTVLsUr*&$WV`UUxJ1`*oX5ygQP#b)X0>7fApev zj=s*0fu7E;?tYbKWhu!Xu0|DJW?^Y5mPTnQ8O7x;fstO``B9!3WyyYyfv!GIfsW1Y`0>R4VL8EWX~>yztOmK5yd;+x~->CWq6P|{?LFwgg>5(pB zfq~vGj+P;z2Ic92MwXSy?v|C25kUn>MkW=`RgPXx>3(5Oj*%gbIbk8bP9_m9A)x%@ zTJD?WS>YSvYUmf14-zx>bwLty%P$WJarNcBxpyGgEiNw3ULd!WMjBa`c)I#lhPt|@2Z#DOdAfO4c)D7;gc>@g zhvtS=CA(XeM!APo`g(dgBf^Y~Lk!AOf~wN;(nABn)ABt- zO7i_PBlA2GL$b{xGxPFFN}?hSQuV#6(h398ivvP3JuHfgeaeb6yI(u}=J{Y%UO zvqL?dqaq^1L#h(Ut zg0!<;jXd)my#hi^LyQeQBJJ~CB673~%8R|qGY!kLE0X;UUHpo?jnds+y;D=Yd{UxZ zic12Dq7wZJf<2NwjS_t;%OcFv3j%#BtK3YC%*wMJ^Yasp-BKznqfAZwBlAF|yrZLg zR(fP|d3t1Exr<|@OIVOWh-09KzLTS8xuc6?8Yq2w1pB(WyEulYI|Z5s1UY#ad!+^x znPixUMEFK}Bpc_L7Y65eXMxf(a$Onf>X;tt=P0B4v&NL1xa1YLRO!qYk&-8b9PfE&* z2rG0BDGayB%qs~B4|C29H7c^G^zrrfHOmYNji?GNG&JNy~CC_RFaB2=NF_swnV{swfKbb4)cz%+Pmt^h+xVbTZNR2r8YX zDk~_+(l0LcNXw7R$jP$sPEW3g$k2BR^~y_1DfEsgPEIsP$te#s^E1uMH%N>K_DpsT z$=5F_GtSP*)=$Yb3@>sl_Aj!~FU#@Hba&1RHBWLZ&CD!M3eNPc&@N0Z&nQat%t>-d z%yy|TH^_~0^6@q;bPFx>wlws04k*a9O!M(^ElJJx@bj?<^)`+2@;1wH_D!(}D=*G2 z$twuAbjb}j(~c;vOf}4MvPdim_sYx(Om!(XcFqqh49ri(64myOV5tT3N|sX2u#V+ zE{qHaPA{koPK+=p4a;*X$h62cvGnjM(GD<3HLEJ~t@JN649&LiEDZJ!i3&Dz3b!;1 zaZC*@{2=q4l#+!%1jTpjL7zL&2USu zbWC+A&GgeY3Czd{DKIXIFb&9x3eU|A%d6CPt@2H&aCbG2%rY~KhzKev$Ja( z#U+VFB@&8hIjMQ+B^i?G*5Fou9>~Tth1|rv%(T?vlH|mk^t9rPL?ctP6p&333M+Rh zKK!=d?Czq1LltX-S1%2IaBFV(iy1nvCt2+LJFi17xgasc1LPJ6W|jgO$iTp$4)%gk zat?AA2RyQ_mz8VbRwMP-@EsS1t(o++R~^F_&}ML88J#i==I${;7F*@F8Zhyi$gFdw88 z8WPX`7N7i*@~EHb8k1b8Wyg=m&+%6*I9@)V8-2IrZ0pCM^8BK7z2yA7lGMDC#L|)s zJ&*zMMa5|bdghjTM%l#$smWoGo>i)mo{^qGW^rbEUSdgUQEG)Rk~_c_>ytFQ0M?=h zH?9cU1B^%briJ?cg_x*?P83N|ld zv`~>yY>s5@Flb_JF=%4WS-{N1$iyVTz4XsZzJi`ltPO_mTx3#;4S3l&wc0$|zVk9N zaV1PA-*CFkcVI2#2xDtJ0ODg=Q>^^8mnB@DzsO1OCVgM)n( zob!tc@{1BdgAj(?2Am)nHesgFU;{aEUL!LD6C)!-Q&U3&(XNnZoJXKV_+$g`ubdJwrAupTv zdD{D*rL4Q&;+?4ym3;nH8P|kOskdtwZF(R6JIHEWzFz&FwSv_a{^a%<(r10=NbTQJ zZ!GAtD#XCtZ3p|`S(Pr_#o?ignUe);WQFdoiO_#mweH^18Ha@@`+0nb`thJ<$t3Tq zIlE3BV%0h^XlXWS08$*R`oU8LZze$Uk8$Pa&zPRc2 zzi!F*V!N)Jb532IqC4|s`>Y=_`}Hn7Pi~kdHLG%g`DC-jrYAj4>dZ)Hed#jWRBp{q zj^)8QvU4(uPjJauo?-L+%*4#dz__@HG2NhvG1-8JjX6|Sn33^63zGo@II?AxStJa^ z8bmB@1>EmU?_b|h?OQA%d-mzOB}=so^4U1F*%(<_*%=vGk_{3KEMa^DrZ!#JpiWVV zE;uU}7w3SIj6O8!=z@}tuBUF0pE2pI4g@UU@d zvoW$THou5tWHitOIb4-R$v^>S4l@g!rGik(#AqN3Qp(37#v<~0u7K|q-qUl7ezzozF%o!3swbU6F<&!wWU`=_RAy!w$QanH%w_6KXlf($tg$C&HPfRFo(uEqIqhIRRxs<|KLyS;rfydkaP)Y(HXPnHNj~&AOO)u`{7bKI zRL-7ewZ}zhf(fgrN$nTMrN-0s^>PA(xN>bhH;A4--WDOqe&)`*d3rC8v0Lsij#0QJ z^o}9iI7F{N!%J1ue^QO!rC&04)Ag!e1XNfC?rOHW)loM=dBUWxNfEQ29$Hb{Ht*<- z!k6zQVp6InzT-F7FPl*jmhwE`>7qdGB*s0hVp;jQk}0h>{wqy;yYu~~3o%lxEwvf3 zrqSLTk7jy^RkA(H=v#0kafX%8j{_=|PnTspcrW?)+JtL*x{f?4r2=8`lc#K3IH!wA z%4XYv7rCF0IzKPd$q--i>DlS-j;UfV1gk~0ic}f}Y!#0s=jy9AES?#?N^|L7_g4?U zXFp~69UY*StG%!(*6{1yq!l$r%y)c_FV!hB2xthO%+~bi#k$SQIqKI(nyeEjdapHi zUB#M5#&3eRo}76}V}+LaLci62&eTQBR?l^PxJ8S74$EFvgYbohdJ1|cADs{gxxH|b znEyT%(;5HtSu^iQ@9=$mk6mBtMb6iQU5_sRD=NP%yh8g*`1Ex=+-&VP7+4thP2MKd z8OauG(8T6%(8OX6DT+nZwUbYrk@eM`-4a-o^JPw)QQ*3JXer0Q-%!m!1yc0MLh}@) zI1UPSR0zt?FHvxIR4_6itxPsGG%_+Wv@kR`Hi#1EH8wCbGBSj6sapOwF<}yS>$w(qeCzhAPm_Nt zt6yzk5(+5oDp-*5^7)Z@%Vkx0@mr$p+Jm1Lwp| z&i(bDm=vt~|g&5ly(sWvmq6{~M-@p^sh>~RjRYb+-h-CH+(^R~cgwBk_%Kh6)t!{(pY-&B*7wW>(sNj@?wrhU>*DS>J`O&Aj$_>Ge`@+%ILY$n_2*56 z0o7&d854g7bnGZMy>WKo!|RtdpL-o^4~bMcl)fpKozwL8u5%JQ+?GDz?!NVK`TVSN z31XK7gpPbacu%spGW0>gmiMpD9RF7))9IJSmD!;y@b<9VBCRL&Jy(S0guCfRNF-f7 zwc=OZk3%;Tv&2rD#x9t=cvI>M{kQLDJpWU-%j3(cg@u16udjc#+)tvoBlD`$fuAjt zTKxr1hitaB`f*n?Rj~4u^So(0+9ReZzP~uJ8dfc-fh%w!P?-#_mN*R97#aUFF*2Z* z(~NB7)c{y)HBeInYb66}{J`qNKU!X;Rt>*qCQtrQ9R6nCLwGbjt4Gy7%to`0H|Zr^&r(6s;6 z^~~D54B25{Pp_5RtJS!6>9PyHi|s@vKbb7ZlX>+?&x*Wf<{=znk5uQpNlnwRF}7VK zHEYrCv*{^b&-axmvMkIyyjtyuwa%^3oqyf^SRV9N%r{@KC`g!fL4=G;pHdaR38N@ z=3W!M|0K9K->X)k$zNiEhm zAOHE~g%r7K?+$f(OT3a4yyCN4Bro%!r0Ws|>a+-BfB9tz2h)Ib@mD&f{nJWQ;|xW|>wsmeuS33%`~5gU8PPeMmoJceUH$ ze772eVF_ zQle>%D)GZvfjKds4{n!0uM>z)61?RYTT%YDj-bo4W4~x#t0;)`8krgz8kifJ z8JQazM@jG-8JHRv8X6cv1*l(<5vp7+Z@PZm&!O>Ky7+>AV=Mmy{OhH~Uv(#cxc@`H zg?&fhoo87`)@@Po`gUm73$uu=>lkvIFJ1oI;n%g|TJ87x``6c{SlxPT9>dcW`@<$M zRjNOA%?aMS%3_w&&oW-rWr=q!m7DzQ6pyKb`N=c5bK8gWyld(LRFnhtclus1+~fBp>bhI}VV(5yo(*42zR4ze%rn?0&tvO2 zd)B{qv;B27MM_Kd1}xCz?%%rgPySll@24yB=dE3nz9w>2NaZJ%-3!~VXbSA!`EZkO zVEz2M9lyVtGM$^fNBR_p`&Jf{i`yptUvIsB|EqWr@9=RJPtJ(fb{49PE7= zWP1I=i)cU5Ae%Isq7zZKOFm8smbX58qqmv4V$Rd-ie)U_F=kcgZo0;|SvE z`pyTvnR~b0W_|d5rM~ikKH#D+i0!H+!oX7FrMiU^BI(C0SR zm@$)4{MD%(;YY0ZcNX3%E47GkW_Z$+*tRTPu02sB!Mx|}RW@OR>4o`ro{b_Wl(a-k zro5_%|0#8(&3^e`Va+`z_Q|?D&psS*G5r0MiN|Dh#60s9TZJpV_ZCAcmo$SE1I&tr z38P{`^cS#}`2;HkEJd@!Dwo>+Ib54veplaM_jO&W!}%m)&rIbFdP1#_W-C=&p4lqQ zRG%YTuk zJ?@FdayJ;S34S+@kyw3v_Ut9sR!o!?yBs#Dv~2IYjtuW-Y1(cd_oX)NVzSu!+i2O* z)TyzH_;3Gb`E)3x_}{zk%G;hTw?pSTEco^1Tt)byhLt~i7vy!^H7FB2)Oq2Sm$J{b zc`DN{Pj+7S?~B6ieS4T}yiVEA6lP!c%H;lECBNLyALcP|+3;W98*)+h1DDB1^E2PR zPc*RnTd&Iav)%LY#8n@~j;@(glpD=xJ|R&l=k23CvQzHFOuE+1dvPPf!#XF=$E*@Y zuAHTgm*VU-A09WAH0N(BGbpP4)7@RlE6eS_W{ z$Q09N+{dgGCFk^M0kJUQBIKFI&5MBD3T5H`6MQt-R6a{^U~LnPqM3xQ+;Zd+xdKpZk*2zYl#1 zEE4~9`&s=&3Yc@Lx^Wr;bFBHac}BJJ>j7j~uvO(GQrO(G>sjEsi-pwc>_&4V$OnT3gwmBFB~ zosAnhM8he-$g-eR#}W zQZ?!@4|Ir#gNMo4(NN4l1k}4>=iv=b%u{eHO3X{nEKbhHHx|TWzy;F6&BGiL>}V)w zAOqqt^N2!6hC+fJ6+DZJOEdG*6`UPmV^9VbhUO+_MrNS?j=6!kfhCk{P)bY3LC49M zdH9hW=aZV4X3)gA2sxM_BUb&O5vwkyCdNjFSEr7yo$~j?U-kLNE0!m+ochnFnW*)9 zVaM6{6^o|Nw>$3Ac0cH?f=%5w_4Vy_*EF%?Mp#H=hBY@gJZ$|@LJpnc_JHfN)2&@e|KP^!YXy-EuqoZA+DZYI)c_2%IbL>QHfTceCH*fRnS;r)Avt zJ@@IG%%#fJ?_V91zh(b*MkL3xg0r1p-nn3e zI4W)Qq=lQa<}H1p>e$~Z!1(rw#K8qtz5nJ01xUSbzxOcZZ0Ju#h5Oqy-_KXiySU55 zZMBz@|MMi#^1H6ecN29F8EW<)*;!Y~#I|}%_?3fi&dahrjHyob+#vbdclDCv>JEO( zwruS`Uvqei^YXIGaR$lnR*0`N)hJ0>9cB7BTHngfk1O$-fv@xI|9*PM6nENL=_p8s z82wMP;y+6*daS-40WNJ2_JA*8|u)M*42d!PonnSlws*puKlG6apq zBMQC&EtLrsf1P`-?0j@$A@{z--S=!#((0D)o0BVWd8GlnnhndB2iXdi_ote?UAZWg z!{fGjn^AM$87{8{2R@tREI2UZtoHn+UryKDB==A9->zM_21`|TEIc3#mkK2pYi%|WpI z^uOb=;<^r(?{(W8khta`;yCm46nmXohU}m}^G*e9=X7@!eaNaD`fHK_MKAc(|f;v$wl86JM0b5tJxl92zd4Briwz!+pER% z^a?6g-3zl}{duKf(Tla~zx`gZIOcT5YM0vv<)4n2lw^nI9&7*o$;f72A)l-8_csCj zzyDohF;v@q;fQbIBd6Qz4{PVeYfDN$d$i$wZ;Z=X`2)qZ{fl1i&28GFn%cr)koi^= zQv6jLRAOm7V~)xQgGO#tS#XtrSPMAh7InlShXpq7W!fvA<*k@Ft#8_i?KhvGWhL-n z$D}vrG52y_r`%e%P>|E0Xx*J6j<42x_^WKM9eb$%t=YKtg?zY!grCpMRoPc&-W2J+ zoqf&c$EgdE#+Mf^u!vFaa8dc){_xvmHuXIV-}=O-$No26ZFuQTwcr&8XLJ8UEz)y# zrJUg3ut>IUmf4So7n(K)IB$9oy0>AvX?^`TWO>f5i+}qPE{tVVXYi!1MHfcb0K|Ug{>eIZ&ov=zQ<`_{S0_ zb~qf{`}pTI@4^cyu}@PDc^`-?zi4|rdYc3N_JZJRg2)y+><;!Zp52jN-e%n{4 z&3AXxEZcy)0f(oh^yRMRDW0#vX3bK5Vfx#ASO1O1dhu?ro42h@l;3l`Y2A;8{6mj3 zMGcyer(q@~XyZ(;J!F@}$Jf63oxM#t$m4(On)Z>pIZKI%lvPO6`GA79v4KEGYYgVvGShY?Dpc;p{%l#D}_!g%J94HOWnAjO|M~3 zq_^*EXZhSM*IOR^`Ed0_;sjpjKH;pnhd(OXw8XOgv%Ypi+0vCeUbc|;m(kw^4O3mV z`ZGK|T=MskUwcv8mk)uA?Q$G@uWZ#e&0!Omw8T0)YwoVU2dvrWlpW%^Dq&ggdF$~M z8M^?Etm{6HIuqxt6=q|d{_p;MziXS` zNTVg2K~n;of`&wpOJLKe0dyOov6F9;US1N}wRYY^sWqi5!lZAk+PFDuQv9^auamZm z=&JnKe?V$|!oGvE&Q{L4lQZj|*{p*z#Fp4U(V4qz>C%AW&0L3mN_{@!sb8`8(wjZc z?Z3>vD8>J2LE<8vPSsO^Y=YuHRR!i;I;Q`n^N6Dm-#<0E%ekg!-|RL`a9GhAxbNG$ z2{S%w-I!Y?kezi??`HDnry?<$N86MRcFAO%eQhysWx%v(W#``(|D9^AtriCAtDf|@ zWB5Oy=-r2!h2>`@@*5LB+waeNaY=gPG7hsR*+#$rm9L1K9dq}t;RK())c<0Qryb8} z7zUq`a6ae3l2>~zMQpRCz>_U{R@+0Oio(J_ugI#Ed;cs^{%-0CJ`YaMnMNfaxE7tc zJDDMPjq={6R)vl4_q~-}SkCay%FTGuyf^D#vKgjrNz32VIe9_dR6c&ibB;gaKJ>jj zyYs+RhBjR&g1>@Q7`K}csaGV%5^nMvwVscwb2n^UO#csT*vJ}85em4r6l)nIB?59 zVedQ5Rd3sS3u82TdOH@YiX^+>hm&I4S|i+}KdK~JF7ml|@Ewan5?c1>|mM7Np^p1s^XLaZ9i1_)TrPJ2t zNB-3;`7K(DLMMGlZ=4yoHH7E)EVqWoOo0r+2l$u|c7)%1-xON+_)D$CYksvq&Hoiw z99(nnw)EuHl4ma%lu1}ko_lUpIy0}OlwL#0{oD_A!e#m|Uj;aJTiE72ePH)a|8`1< zS)Aa$B-d>h6}L3l^hmtEHRqbw%Bvx%(b*Rx>JE6ezkcl zT-)|n@}}XBadwr!X-x8Z=He7|6CNlL)Rc z4x}-f1x<{q22$_=9ZqILUX(E#1AT-Xi=h&WLd#wkK1SDLYE@fxe!N~|b$Y{^#UYGs zr@zgt-?3r3%z}dkjaQKjVA3~iJZjK*$e?k*LE|14g}weeH%;(qG)wQud++!#_aDnm zCHA@dqbGS?Sac-8O{vPDak@eMlG;HUZb)N8EKQ6Jb}RBG@J)CX8t}C!b@jT7*~zXP zo7`jA=1lF`^Jj{<^_Sl4+Dj{#?VdUxf3|sF($SdA=7x2r3jb8>zpV5u?bh3~|F}J` zXgD5Tpuxi|_x0|*bd7h0X1w-44fjtGQg+@}bhaTWlTWgy;o)lbU&ol|%#N47ytB}c z>7{tBm{QEPX$#LK*>74p>35>ujL&(y?EM9LvW}*niQ0Baz9xHr_A_>`*k?&OC-cvj z2gKbhy!v~^>Pvn4oAw>p$YShYv?YYK)c26tU2EmltFGV9yB??d;Oe=VCi7xU8@;w3 zyK=RR=}$xCCTD?J?)ioWr#9JaoEP17aO?eq_Q$+OcldT4VE&x9_$0#t&+z6;TVCgH z{^ZXv_qgCi1`*Amgp>aHIzO$~%9I;tTg;dkIBR#>?Afj^Zx270s%j8Z*J{oBti3?W zFm8sxyi!Bq0D|NXbaOq#Ac>Q_Ui^s?3cM185T6LpD}1+KfwlC z9mC4XZotUM(!{>gpox8}LF3CsVk{yuzrzdeO`BHX_akAU5axoXz~XcV zU}$V=9%axt!=Q1hfu{i{8>==SGm{i61B=N0CiCF9;2XvpAF$Y}n0_pM_K-`G1?vhV z%tdPr3>bDS5QGa^f~_@+S_nFaKn~${HWsiNL&!)c#Ayqa4M6MN;QnJ`5n>TgNWClP znRvPX(j+C{D{Ch;8K95uGd41~D>~Lct67xZ@yBt$8ej7wmfaRf{q@b9Pbcd~$vrE0 z`7Nk4y=~R{YqFtp6&st|849I7%wF!ZFZZ6sj9FZ7wpW+EY(B5a%JYBS=FkT-EIm@gzF;cA~XkA|`57&)s1q;4p>D8EgEFTY)vSKiZI#^)vN*G#K>b@1Y)t6t70Q=;!K-_zu>X6vo^sczzo zHkmGKHCWE=S#&+gjQ?C+>=G+2VgCc&%7%vnU))vRcb@xUs_w$w-ao2Zy2P7)H>Fzz z@cucuOGEA2Lw1?kQ*yrSN5mWEz84Mce#XtTROhsI$Oe(UIXWMtkMB;uW8Aegvr5jz=*w<)elV?JE@>QJ$|^Z%?5uJ`-|z2EYkl;{2G{kmh7@yzE}UNUP~y-=UI zqU`$bub0`)%gjLR0D{_;xH{^7o(e{Ysg-J6*|jt%G&Rz8d3*EM zs>4Bl&Xs<7QF&xy)R*EZr%R;%)i(FeS5W-w{?9r3JWrhNx~gBXOjjb$u71AK`^Htt z={!0YlO^`PvXZ&|BRpO+>eAVDDFO2ie`!#<+_iSm?(V|54|k|;i3=)y`fHAkI>**S zJ~7q-XVA?LnX$^TBb*R?55v*&6&6W;zIM6K-ZiluJ~ z*UC<3u`-|e;^NXviU%ey{+)l%Gv)8itx+3vtoGaQ3tA+hdFAZ}y)GSTFJ;4D%Qv)b z>zKOX)&!gCOKFZe>#{_>Pkj$&vYWBDX48?aFWF7@i)c^t)L!Xicwh9;N!@u<_wuFg z`dMvM9dYpE>M%9UfC_7Kt`;q)_J?_&@7L_+RtSo3u63DvSbV_tD<9#5t&vH`Q`OQD(+%B4ZhhxQq zn*R!Cn_M4z_kDD{@o#1GrKUNPGHdn13NpJ-?)Xyl_Qzkj*VboFyxJP%&#_W@a;jcq z^u5W9M`dq>_d6U{k_vciS=IjQ$iY8~-fe&C_D{Ow-tpU-bqrW_X)0qwkql#PY#yBH-$Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1n`Eyw@5|? z<6-im%{UK{hrrp$1`qQjt9s7h|?cN>7Lza6L zmR)ygbo;yQ;AF0qfy*X3C`p)3n2`MAaFr9&J(=jeZzfqynQ`sq3yH|}ladc5#TvZd zuDpvgmJ^Xl3g#U87=4_t3uAJ9ED>r~@S!98_rx3z~?J<8lI z%Xsv<)~9b1^EYp~&_74>#C!i~`+MfZpE%s_oiN9IWByLIU)v9Dkg!<9XjHe*?B5ru zij+m6n;!f>rxSPZ#^DYIMg|5?7srr_IWd33H>-M1QtQw(EdG92uTxq@*)udPb>p+m zwkhHfJv?PB0uLC^3mja3fWL|39-|F|(r*K0?}npE%a>O#TV5F|?kgo}qi1{M?%5Dg z{#9jpSKLz5?(X=0r})m@GgE4QyB}p~%fKig$jESp;cSlpFVElG9BB*<3=JIr zm|Pf`nGGB|wk!NU|55fV1E=rV`0fU_2A5@B9?$ZB!rA_4@Zj7#Vp45B@Q`c;*lH|B`y; z{i-Z1ET6Cc=KrJ3%AA|OdjIF0$NkN0{@rD`(9rQGi;+{n=Pbi5_Iv*wTgqk^-t1VA z^>*ixet}xg$A|xTacJh9lGl{@wd&_o zDuvYkkJMC1*ln|aU&Nj7(^TfA>`}SL{&&{$&cteYXJ zdP~JFZkt(aEVG?~p^4GZDDe0V)g(6t6Z z9^E;jyE?ME&^m_g?W%YFdC>&{_ZQ`U{!!?ll2N88XRyO^L)kmQKlf%G+n_DflFGlT>5+Vg51-0Z_lgP;U3-o*6LQ248O>>#cBUScm*H%U0wftue;~>Wg>m6 zFYxTR&-PQjrS$9DmMW9aECn&O7I_BddGF`;r7iAZnE1igSU~>gzKunnpY-=KoVk*F zt5Esp%A9Bsfdl-lM+|xDuYcp(`rG``0Cz^>NfKv97(j z2`!0RljNIz&-$G%(0)BO$k_Dzx91h{V*3}IeYXAg*W&ADDkk&W7OeVcm$>atlcV*% zkL%a-$%?O$TvvAU|7Y8>nrCSX7W}jOe!qJ&)2dZvcb2|&e$O9x`_wo4-|q_NKKPgS zU~e(^zM5$q?Rw=ic@~IBc6VelRc!F$_n+SH7d~5Yt#zFKj~d%GZFO7UwCkxqGLT7l zCMGd)W|7y<(=!D)1sA+;KbkZ*_*U=d^8CF2m-YAkTYbN#eDmy?l{+7No_zGXz0LnW zFJFE?7yjDy*t~s}wcq9I|NU8C|M}Oab#IObtzM-iu|jfIr>T9WN6(oK59epD?(%c= z?RVYCG5Xpmz;ni+Oip0o%ALw$rVb&!GaRm-xxzoQI@Cp|Hw$If-M_0=YD%n_ z#klI`$K|gSCmy}tv4kO`jYIJ4*4zq{CinW)4~q|PQdV;8wwDw<@tB82IY*7Lk>O-~ zPr{;ip|&whEWO!m&PI!}3T8YFconmxtD|Yw&&{q%S@Sv4ESEo>(3xR>vP>t`C-lmK z6~3+lZ!W&f+I!;q_TSrYXRd2va6axl|JRY=i?8o`Fw9Op@8X&w7Rt(SqEooZUHf>% zX@6DI_SfedZ@ug|vDP+vyHwqwzm`v?>~d*Yp_Rne5xPa|%++I&U8_1)&8*sx`=IZ} zgN(w3vXAa>tlyW?(%^FZ!_ny)IZ4H~-}wal9)7Quds3d{>#TC0?S`G|IqQ4Yfj!fk zZeKFkuxx*I*FootVvCz*{aB}?9etZu zzx%enIJc9H&u5FNK}Xld`(<8yuBV>%ts#zg=j*W3XD$59x0hcwIr~{gddo~#7nMUt zFX)SLhwiqP$U$A6`8CnO9x$_g&ST?p4>K1V29Rpa19J`~NGZeLB1OecZk(^{sxF?|lE8wX>q; z#@nN|sFcXIv0%)`z9 z|2VCmm%lC6U164`eMQN?lgH(2e>^;V^uo#)b=&7_cSxqTt-5~w`uh02Ro@=Hy<2Bz zyZ^_>{<<#*Cm(Cc~%y>UCQI&FQM$G@Ujv;A;Sj=b%^2l4+- z|G%p4KVRnC?YsZp{p_B;JF}{~vbJ`6b#-NNZD}%_<?3iB#V zfB0XSB`xmD-KrPA^mKQbsJxkZOe=oho;|yy+s}y4KH6M*-*DY8zcX<$x%c0m*0Gv? z>dfn_MVn)al=_nUl)nBscy#{1&;S2C-~Z?A{Xc*0bHcPkO}Flxk}1Xic*Rz?XMAoh zn#=dS=KS*6-|pYz`@bK?|NSGszqZn{WaqV=$AA9+Q~&G!|NMWO&ma5Cb4Kp2k)Xm) z`LrY@rzABe6_q3>hqRPMCuVgp%w}g&_D^UO5S$>xllk!EZ^5V?St{nmKjyvNlIE)` zesgy#IUudqDR%nNYF>mdw zncug!mtVgfxK`-STQ`SU&yB(xr%d#`+Tj`M$Q)?+YP z$#*wcYbLDu>C^x3=D4~@IU`RnNM2Qs)QR(nV&w0pK;)s(GlSi9q=I0?@0Q? zJAZ%m&F{N$$$`0G&$0Ll7tzPdb$5Sz-Sgm}N`QH=@s_fig*|89T`v016eW=IJ%e@Y zcGsSW=X-6KWJC_Lu~zV`WjJt#VZoyr%eHa%ncR)KQO&~o=oA;Tqe56e2={C#KP9{}T8SgQd2?`(2pR6gtEY!Fn^2k0xGxq|a7@6T?=4O!05|7r?OSf#Wu*-g#M=Q!`xM-}cpv#dYszIw@`q_paWpj#IIHK{!p z43ZS;KUBE%D(W?N+?sXcZ|zLSKY8A&?>^V=u|J`EG~=2w7pMFDSGV;yu(LQBg{oX( z)0BI!WU%1-C$aMmhpsy@$Tp^K;eGr%^{tLP|I6xZPO*BX#%Wq%Q{I~8ZlLAZmq2pV#XD{3NUisLqKjAj#%ic?Q z?q8qn{owJ^ht*q`-et6EU~I^0?tOgqV`mxv%`ImuZB8@l+)kKkDJvo6bYYBju6RC0bxewFK1*QO_+IR#?EQ4Lg$p|Y?V@AvR;wp z;G%S_K`wulhVg293GUN>3oS?8RGfNzGkQEad^qB+D5@!m1~RCGG+22DuFML})d~(2bu|t#y|tpKm{gN5yw=WMM`Zw zStmSvCNQvGVc?i>qkolpl3-N5x-aUoUa;Zya$H9&X6J8oz_q@_k^e*^SN6JUyeb5i&cA?$imV4@2T$BFOSi8)G}(;*OIZ7U!4GdpA8U##D-|X5F!DFfJDr_vs>=NkHIdQW_SYV(?VLWeDizO>&oKTySw)W~TSN=Jxg7!-Uy*sresi1WC{@d@&m#b?ZSoi*S;)`Xso^Fx( zrS31Mv-{}JpD!)Wg}$oWEk1R1dGsq`A?91VufJcH|Nh;#$02JqBK$--go>|AKZ^S530X;ELU&3bcMtmuvVzCNC;-+u3ulKXbK=xEFv zm2{?8JH7wDTHJ5{?`418pP%3N)t7Cm`u*+a*SBTyCA;UVuXbH^MJelcVR`v>?PVP| zmgjAa$UEmRQL)kH=A1mU^z4-e*NV*jF4yg!<2G=Qrz4weL;c zF8w^}N<#6jU5l%Je%&TwU0;#Z)_!|q{MXpyhqEI1y6@JhSHBFmefsCq+p{sx^IjC) zzy7!8#`W2||2{kT^4X&lom=yB(l%DEdQrAG)iX52CA#RM&t7&5E|+&Nl)noas)}$r zFP*2eTm0jO1AWi$em7=HWI4uFIIE-UM2Kqfq;1b{cSp^T?G$Npi#^Q2zx3Q@A%P$_ zrirIGLS4=}Tv;t#ESMH-`pjeTL6sd2mTRWX`Z-g@tML3pE7P`s(-j9+xf;nuI4dw~ zd2n#Ncpx;<>2Tzn;s@!$3JTo%S5`ExT$Q1F+2(Aq<(bbG*Ns9=jYADrB(W_?SY>eD zHS~F=n4qSci{wF}S8F;uwe)tIERef*CuzUTx$3*;W7n737oSUr656-3=682|{qDVY z?Q3>O@R^BMe|-1t>Fl>EX>CT_stTWt(xdXlR)?xD7Ep)J!{Lf%DwNxR?8h}bGiTj!ILcOy?bPX-!0KfjMDoQb5&q@ zP^!?m8|5cOp6%>=>|!E(;ODO=Uurh*zWM(9=c22PHxtdL2MG(SvoWkxN(&A&Gzbh9 z7W4{m3A^*MZV~JBolEAp1aE(JTE%CMpnq7m>+#ciiB~WC`iE}jYO4E^vC}bbzP`hc z&GPkIY@%1(yq%wSU4EY7=?mq*cW0I+o!_^w>hqtp&kvqVem_4hR&H1KS)->r&+J~i zPTy+fG|tWlhE)PWh6$f?-yEDMo@;Pm+KoImhn7p5&N{>?)TIB&56IfdCB(3>%PGlT z{n`mH-C9)_6Vd+lygZz~XRbIp2nVl! zh7SYN#CGSh2BX z!^7-GdB+{e4_wk1Rxuo7+|JCffLQL?O72E!Ov{fbELdpzXqvdVi%tS} z|BPVnn;Hk0Qa-)z?>NY;CYThoJ@~?oqI3R=LRa9^tO&8G2Xlh z2Oj%51@z=zC_1NnrL{0~p7WuNB3U8}Gz5Q!HMTVfDH>YlEM29k8c;g<-Rv102P0kO zWU}|{)So}=*W+B%T7O+-ahH-X1w%!{?hf^ZE=v{(W;ba{C>aVZS~+vpeBG|MT`oPV zR&hBvbV%*EV|(?;$puLVB^6c5gFWO7+%Ht0Ijns4Tkk^w4#l6()KbzW-ug7tqwY|4 zMaK%M7&Gn$!%cr1Le7LQdU&So$%XD;kEbMm$Zrr?cXU1DnQT{%ghi(UeVqaebBtEV z@JeLwn7PsY!^AlPE@2Gs6^GbxOg#6ArwYabN{g%S}!ncFu_$vI{Jn*pENHuqjeSWTJ9S!m52c9&Tg~Y5X1# zTja5G?+Xs!AKJ3NuKZ>Zy16khUMJ((skIBEMbm-|4g9Z$Fe~(RXLW?WF?23kwen~n zZ_lMZ_3v{0jts5G+D#c)nyS-eDjtcg{9mos)OqC!zlq?ipP{Yy9o!ED3VOO+@MTl% zP&{-|h{u23&#ujH__)F8ZbMk357CvbcUW4=s2N&%732q zVr7rUbHROY8IV;t_*>~3Gk%yDD@sTIr zo7ndKzN5tGaG+npC$!i6$Pb;Q``N$bL_9^7wab3VG2AX`V6LTL#@y-77MD_fYnmw! z+m`hvb5^?d-r(Vq$f!un4rMXOzWBEKMg3->G86sd-N%%jUj4h>BhYd2!WF4vnW&w5 zIYBc7j%&=g@H2d=(2TXezq~N9zq4er>i3z`o!=FE`J^$O2tC7GnlZ&t$I+ z>30*oEFYIySxd7#e3$n9&)c)R|L&Qa#W;IakG16Ss>;nv4}a>n+jl@zuI%aC+i!QT zKKw1<>V#c9%dEN|Uz*9uI4xGH=#|mzuInGJciR})-QYRh6YHdzrR8z1OV!E5#4BX= z^~DUl5;hZ<6|QilO*0Y<)D>!*=ddcBU7%h1z+RqT(?XZFY+Y4dsDI&iWP(!Q>Qyct z->=1(rGb?0eKW;A7QS#?P%gC%rBTfd?JlQ8Q-tv>t84GWb5B{Ev0S4yq0 zXJv7FaCL`8>$?krjT0t#*lb})P`fPFB*41;_sd^Y;R8XZ04AYo%8N)!fulyjnUZFj^F!pTfEG zbnUx{ono(N>^{=t;ox$>gXdO7M_bethrn*njXP&#FmHN3ZH7P=i#DIO#f_J8Op3F- z54D+doIh;Pdn+@C|NB>;hsOkXJ2yH`zvd)c|LRDG%L1nak8{jTzw6)qS6DE;kMU;n z>atI^H$Giw*z&lk&%yesLTV7R!|9pD(_Knsy!~vx?0g;djs4gexv2_LO^GpD0+%h$ z$4(FJof(wGw5I2VVeb^7m4W9pji2|4zfRm4c}4R3?Y~#=e*0E6dzaqQ6wTTnKOQcZ zumADl;?b8y9}iyM{Cf57?dIFh&)a*izdh6bX&>M2PODveZw4;=d-vXn)f`-5!A`+X zeQtKlJj*j#u59;VkF8qESp}ap7G}qKrOsR8r!={7TIRm0;^0+0r~TX`bJ?m|w{j>I z9ZJ1#Z)06uP*(TxL(+LsX zwLN=nRa)vE$nCm(br#F9w{L{EdsWZ>&!tYDkLc-TNZf_K2RnFnKy)c0*A*-q5 z42N6F5xL(pm$u09{(36xG{IR=)9~R(lgaMCvYwe(ZNJCh;L+>W-|}KjIlJiLL%**p zIlK@RT-(Ls@<#pFjK?#X7F2CntdzBC(bj2|b5>u;obxR6mh7MZ-Ls~?%Fr-cB%!c* zRgzM$LPMR0C4ZD^dCsyUnYa34kM;d%c3*wx|@`nyQHwKG?Ma|cxP$i#H$a=%6~j- z)e&AR9%&qVPv+Q4CdcWW9mh8oIQjK71#v5saW;P3FgJW={rk_y>wmS+kBz-o^Y_uK z3lBF$$>c3hoO+ql&LV!@?}v-|<>%U3-kh`M*y_KZQY5CyKHuka`PY`)`)`%L&YPF; zGh_4aJJHkICtubpzkYqY{{6W6zei8I`%ka`9Dcv%=c89IFSF18|KQKBqi>%rkw0Fz zF|Pja*{^r=zscL#3Qt_+Cc9|G?^#cN&X|5Bq*uCcF>hO#v7j|mkf34py;Xu&R?cFM zSmkx(LF1u|o%h&({oBNFQs+|0WvvrOjx1A~#~SckVfzbrskvN=)~7x9JU%*EpkAAu zUHZ+tEj76g&LUG*lom!U*50}(P(@VG-=$CRoks-BHje*bSKhPypr2%clevkVfRfOR zS*w_i78VH1naL#5@nTQv)Kz@qyFLqFowm-Y*e35}bm#B#Iv$}1Tt|Yqmz??Mth6rZ zAVY|3eqeB#P1DhbCphjZcg|Xns%ASaMLMN)Pe`z`nqljU`hMF7TffXHUU_xR+l$}U zn8fuYZG0|$q31#C;>WM|#ysWM6WE}*c^_9+nNRJNDQj{?*|YlB=s6YciIzTkwSU{ek0LwX+s|SRE>?Jbqab%} z=>|ca_m;JO9wvobmI|i*{mr2!l$gKRcZX$h(4HTH2G;K+@7u3(xY&@UHP3VLb?!3< zd_*`Wp50wl;Bb>^>6zO zj-PtSarVVux56Kn-(T$C@Ln~$aTV*7=I`th3=B(dE|copRN8P%Yxit}g8R4Xrr%oR zKJSUITgTJz?8Yv0*I$#4 z{#0QQ5Vm3Zk)Rg%n{o5455ZG6e809YuSC*1ufxN$U+`14!_SS+%|7h;v2OWX1C_XM zD_<9d-tPSzQleMYbNb;9DaOWXmxX7Ze93c6XtEM*+UI}gc}~`26K_|SS6754hcBtE zy%QikA%9z;R(oXJ-8bvYKX0&EbKSiCZpBvF{Wbr--8L_OUluHA?Q?bh7LT=iUS2=_ z^kvq1gEhbQyqMq~v?BD3iQpnfrWpNCtGt)5uG#dWP0vtCoo(~N$9=)aXK?tKsFo?8 z>kK)}w?ad>qcN;^&AmfO#)=HpnitEv&9a#pE?rvlqs${lLZMqr;hGj>vD+P?SpuCa zR&_}!Gc}#K7`UUg^DZ~zjW$vD4K5xtCNv1%d?@lkOOdf@M&m4oD_W03mS?%9>IJQm z5>T)-YxQ9BIKy|pS;}pfxl0}7#?GiE+l z+Slk3dS#bE8uMZ*-1`$)#&T@7#l~tYBOirfsNab&BWA zm8a*l`-)eF=B~2x`)V+K=M5dLq{7pQ947)-R$NKDB2h25#>}9vbI-|FC$gQl&%d$A zt)Fx6yG2b+3P4 zE!t?*@LKlFB%yS_BRq40yw1oLyCoeta)zbF!L!0_j_BFu*=@|TJXx5t-U)J?={jJO zxc1+LgUK1`D8=msl*FBDDTGx6`W42F0%`^txQ;+(=syx_ja48K)M` znl)?hk9TKxpPpT*_c(DDU(u$R`Tr9>|M>Wr-@Ynm>9m&x<;A=2zs-AJc76NpOr5(E zW+d#nb?@#w13?XqLnbS4pZsZ{FZcA7O{9YHY(8P_ci-FVwnjMZ-#@!YQs8w=`@Zx8 zZ@=FCmzKXwE1+wc-PPy`fnv`4@AjQO`snxknje$p>;5f1zwi5pCx8C@nNobcynEg0 z1)KKXuKWD;b9uggs220N-!ET%diE=CwnpxIH|CH~;k#?5&#!;q+&{0*B7C*kX`ZmD z9DKJkZO-gGzx(f=h$&YSF7Mm4bo1uVM-4ir%q}lqJ^5+X&WL4SPP+Ho)%;4?ZOd@M zqCY?Gp6>L!b>$X5pQ|E#c6)YAPQ3Nx_3Wb3t-E*Mm3P}+TW)@SGS{8B`|rN(zCJx% ze_!>y3Gdgf`>l62*6xiqlVG7PtB~8a8*?^WvvuT2n}pkQOyD&57`R(y5fe*jb4#G0 z3k%Cy-Kft2iW}263x;>k%KCC<+vRIjZnjFrc~Yw+EB5!PyPeZ;OixmlNJ%md2~;&@ z&^-0#rqMNxdyBOM9G?j^f7~*o;m)OP3U|8oCzk%^ban_f;0YDb-{#5`&&sgpo=Wl8 zre5WLp2dMloEVh#z$nnKlR?;d zdXSQj<;;a4FFWjie5l#^^4Q@myXW~lee?1$yZw(f@%i^o{kc8=Z_zFJHuLv!dvDkN zeDf>Idb!KA4`;s~6s`*zW89h09jnon7q_sX$N<;d>WweLQ^TxKtmbx!iYjDo#Ve7}n{e!VMezrW|_v!hQF z*EOUt#7+-7H07kr!6}^+gI6jsg{h>cxft)ed(OJ$aL8}FtE-Aby;fv(USL>tXv_Mv zS-*4^eU4e}!S?sy*zD;aV7pf-Pjelk!14|) zrk@|?n=LV%6VJTlkq2ABLyd|J@BUu=CEn}7`b7Lr!-Q$sM?agG7&#>|Gc$3et-e*w zfA=%@r+W`Q81Fl0MG0NvFw981r}+NASHK4bjuU^h6`nB&_kYc-_mguGUdbVRUFm|7 z`g@(S@2|zWI%b@>e1&87g+|Ro_g`|U1b$SqWYCaZ8@J`7o5+f1N3?syHXkri%;W2C z;4A#_-lojOCM?e;Zj#%PPC2fkA~Ck_yI5zH@Mo<2DOYO0@a(6m>YN*8wfUzlZ7(x0 z9uZ+YaZo4gf(8@ILUx|nH8EGF_Mht1`+9jD%NfH-$xTv;E98Uv&;EHKXc%N_Xq;aw zWGt{V{^&9H-OH!9o?D!6|K;$3Gyfbu?q$l}vW7{4HO9&J!iCGh3m8;6JzW?Uv#6}< zj0~L_8Cq*8)!=$1X6OAG>799Ew+nQV`kXH)7+=C z<8SwerV~-y-hR+Cj&^oh__0sHVVj$VBF8B`rC<@q87pTh?^kfKu**^@@{oE|;L;`_ z^W=ua*-1P0@=ktw*CZwF*^Nl&xJUbLwJ%Iuvff9>{ZZM0eeOHX3jRo&7S*k1+dx*N-`>=hzuu;=`|eg!v{F*q8>@Fh<(=ZP z^L0LFolq;7aXNRpUis!%I$~wIudX&cIFe$b^5vGl*Ob4Sf?=CiDR6DS&AhxOT~4*lwhQ0tG<9b6A=l&GM_#8|MV6$mR%Bk&cBi!Ggc4W6kqH9b9qxbfu3l~M zoEhO#6C0pg8Kx}futP8-_DV;MYPddi)|1sc*J(?Nuhdizbv=5f!$Ya- z;I1HJt9h#516y2V_C9&{x5ic|Dak3GW5JX~i!aZ#RZ?5^J81Qbm{L8fa7`txfU_z# zPMT3_4Pt?e4s%$Sr!8Bg z$C+|`l@L>*`;iXI<#T?mJMDa5cUPjsuEZ0y^Mkx%Pj%}p&+~BJr8{T&xfwGV1vR(Y zF_!dlhXxm(?lI~X3pNO~ymo$%+T|vHXO_Usj}brIjYHHm6c#;B`lq<6Vv2~(t$PI_ zfo@8lbd;EwvZlE6J2BNB;NY%#xp8UQ#3~n_V-k(h6(+4e>Jph3FFtXot6IU=;d`27 zBWJPK8HXdW=R6*qKK>@vGAS+1YmPwRl`PRffvxkJy?a_(o?K<>R}wNdwBD)td z_0x9chc7&Lxfj&j@#F`ed-d+w zyH{^tUtb^p?pyIpb)}GPJH;5*7P}r(d^)AFdd8I_2d+#Jkmx;lZeJJL=cEhsCrx|X#@o$Jh$-+%V@&$p}kaj?Js$Is*Pc9kV{ z#~fA|WZ!(h{daTkQoHJpZ_C%m?b%fm{>tXO=!GJ82eWB2tKYHvnciBrPVfD+?%RnG zGYr+=wA)PI`97%pgyr+27nUAL>*C>;oBQX-=l3gL+MoT2^wTwY*vOFM_?aWtP%1zJ?3FR<28A*$+8aDH*AyoU*J;JgB=* z_>%EvMulL%GeIJW}efx=n))x$>o-6O}R%l+)-YD7Bcs!_2yD2n(k!k3L zohv%~F5CDPYcBPgo36R_%;T7@GfTU=LIMv&X&EXqF)y9++wObqam|&pKD!2;(mLeQ z?YcdNFLhP7-r8%U*(zetjLy(4w%?(O;Cg5vJUt=nH&z4z|y z#H4rPb60ePBt@;c(N)^*ld#6?knAg^V!OLBbM*c{@UQ!E@%>*r+dm5PV;&^s7CXwi zF8f(_Z{ME7GylEtw>!LU|K6+X@87x8BdpG#@XFfoPQE(pZQiGO)jy7k=RYyme;zp@ zV{h8ZvfZ=u_$=P>t8I(q^$1z@WoCEO=_8yzyA*|+C1l)QR!2Qu)9~0t`QW1Si^3d* z%9k;5PSKN-ovg0g|D4>vy!qSTS6>3>?_MYO%HYd_t1ac*gJ-%e z_qi7%AGZAGlcdU@W&h*<@BjZz|KGpUJ-_1rZkB&~_~E0MpPtwMK6-ll@A%q}HTIt2 zuFsF|{}*2W>Ez|f-Ctk2_n-I3jnMye!GFffKX?1q)&I-+|EH+y%&kI+mX?b6OF1Epw1Hvt2x+9(sV1YRWGnR;pN7+I(f?46%}DzT*!H}d*;6i+fvie(6p|CMXV8VYYa^DrkE%(^_FxV$UdEw_JqOLM#jWI z_}~IYCPUBAjzAgT`ctXdi$u=X`JYG;lz&{Pz9KR-RW0D@5v5lj=9tReG0aT)W@d08 zd2eiNrr*`fNdkLk9#mxNVf}vYQF8RW^;_C5#XMQq!6#9v*(R_wY`xC)sJZXdU$H*9 zcCmel))kkJor~wa)L0U~_}IHpK}Eh9o>vZBiA-TT7;EHU_?T^rDTf+Qg@df_>AmOM z6ocYJmGd6CvpKBIT$KCbgZ#V?EWGNc7G?=-466uYU2wp0f#T6Dw<98lCi)qFSrEVU zGl!a=8s%V3obwGPF6de(%C5?e6i@nYS*~$l^2)l6(7H0T*l%&{mh3nodWB3%XYCB zIM1E=+b6cHYKrVKq4UBM_T0bF6A-Kmup4bH61Sd8UXuxE#NPkXHP~k=0=RMX& zx3$XeZSi;_@=0s$vGg=97tS+RRw+-~$3OGNoZMLfP5mz;XTE=VV`iT7O3z9IXD23O zzbk@OR!@F3GG5Vgja_hR*~)WDTTj`X4%ym~d|KmOB;(am7KS-{+gcPF&9}Zd^!wie zv5#jqbX<)(7{J(d-@&>)-`_3nroOkt^z`6J8-7{C7`!sl%{BMploxPeV zVx`imq*Ylnq>6Y2A5?wa!rJueD!-ct=kLDXM=XoeURlgM81gz%D|zDG82;k9YBP^= zx}}xLTQ^?5DO1hbaO`y1;#V5}O0SHbyZErIIv5<1p{KgQt^BE=ovWhC1lwa7h5VE5 zR&RB9cA)mm&f9D*2THC?aY*6_75lQi>zt`l!M&y8$p%@~BIgcVW@i+g`YI+-JySwy z;lk_L#pf)`4;w70JMntX^qul;SH9m}BrjHbJ=JgK;*DxUfMO*PZ5CkNeC6yG%pO3hZ{GIQ&&Tz>Sz z_gJ+hQQF1|#WTHDn)w$C<~J@d@}8Ns_VS+j0++J3#;l)~uWy#eP93S$)k_o?Q6T(_W%79?fmA~7R#FolRIK#W7oDn{MbBs&M$WH{&VN$ zW9Q6QQ3;;0<=&lp`>KBbdiE)5>z%jX^yBwemj8VBb@%LulB+vU>=0&{vM7j0P~XpA ze$HH<;GO&SK6@)>ur{oFju4}*MfCF{b9SFiyIQ(3Y_7WFj-KTf&JX5T>mFY&JdGGE@yD97A_Ei1*leK;Rm4J!8YTB2| z?>s-cxSikb@4@3%ufIL}X3!t3x&QCk{AC+UVvkMO6Hp*8w6?HU?ba;UsE-$&`O?iM zcdc;YNO6yFysBIodOd&Z@0Jx8?HB7Fo4rJ4RXBJ05uL43)?T^E&PjabYL6~12+5RO zICFOHL=TBOk?yEv*-Ql z{*~JEtiQi+x3y3H`s1Ek1sp?J?%tE_SP&n;#3abHWR>mXq7!>x9lrdu`RuDV4;S;- z|M~fnzkY^%{hAFEB|F7BrvDbdA0_qc^YI&BSD&xj5+SI2$$frp#lPFm`wOc3D zr^g~xG|a$o@-CT8QZHh5AL-UhWoz5=V&>|a|IO_4YrZ^aUfw_P(qi@W>Fe*!T3R{l zynG(d+h;|4c0}|Z+kN{bQ^8)vGZlY-O{=c_eRnpW{;RHk?f*Y?|NmY8zr1{M=P9v$ zzuuhu^roQV=h>_5^7H<7*MB;EU%#Nd^6UD4C;k8bwEu0lq~^x7LYeseRhJD#U;KM* z|NH9x-#@Rv&vQ?EA!)H(`Q@oILfd?lPqmBr8VXFE{K1K13Bz$NUYV(>8XDR6x}Gwc z8ZRz>+^M0#FJVyT?I@_o_Ol|qd9jGz<~x(vcBJz!48Fs-XUBD`=?A(u2%L!VcI(eL zyz!V^3Ln>|iF?0uEQsB=s^ZOT3q=?Cu!3g{2UT;{6rP>sFtussv4b5;E?l+8u)t#)gv?7PHRMigIb?XgGO%s>N9WX(i_)z4Iz-gzjB?Eg=x> zu=ht?)V)`69xXvveQLBbzf4=S|Cnzl;|wW7tA$t6t%7$y&$#sc*lsuP7G-XxwW|^r zCvD|+$Z#^?4d{5=lCe+mZ_?SmkcrE#T-J!{=rtFaE@z>}`bCicJpW>ryOX3g$X{`| zf9y`4=&aChTcmgw?u}KDbWwZt^nF|K*87XfKGYg;H!NOi$Ji%$)LQAHWxzxht5TzEaJKR}nvJGw-jtno|>aVEV+U+1yK}+|lhwZ{)S|FR9^G+F}?n zar=y)C27wynx7x&4S1k(fo)z@+Xbz_8@oylgxsdJrTTT*>V5gW%Jp~kH?j7eezVeR9!Tv@Wq-$ zo@nmCdJwHDlNqDJyJo(J<==- z=U1G#^IWeymUY4Q?cu*OFMiaOR#1Hw>VJA(aa!;W$=4xXbC}iKQV&fD;5AM>cZ5eN zDI+f6VT+wfgT>D9#b*0YY~Qpnbi+;&AD^CBuUI$MsFJ4IHc!apYjeUtTLk#L$27+=B?Hf3h4T%gj~W7n259M53n z^awmKXU5Y9Mk;#}B6XO&dOQHNDw7qi@!#V$&nE+(tHYtM_|4=ua%=6SCT zU=6r0o%S?;Mc^rJLE!^RT#CtFiZ@^QO^Nw+S@b~7gJq0T%w?Ty%Mwpm26}Zeh$Prw zy?r;){93K%?~PNku7(^eJpW;#z*HWW5;@5otL9qXxK|a$p;-7y@YT$dE(cB@TD$eX z#7CiBlhi5|j~z(jVQE~sbCyt0!fT%wOtS0#-cc=kBxl(EdC>{xBehCGlh3a+Gn4ZiKyb@uQZ1YZAcx%5t{^Yzm1qnqM&uAe@ewKr;Q_>2`Lq3n-c zTsS2=XEN^XdOdObs*q2Q98*ojHgE|!&FY)t=6e1lDS5RXX{RD7WyqT=8{`GQ+#1<`vgI;i9y<&NsFHg z7JGHh2>PU={#&Rx$o|EQ(x`qnsvjXf2r3ycEiK# z=ATK}um3rOFE!%(-9^kxx&j>DeY>1EC&;fmm48KBRnb11>J2+<%D=yR_10Yf{+)Me zEU%_F_g{P=e)#0gP3KqFMa-L@|88C0{QVVyOG{RIpEUk0(6m{?lK1^vHI9`pZXA7< zZa2$$Ygf@bA(_Zj!E;I$5*H3JG~K`XT!K@hYOX|5O}H{gb%0C86^qjXE476Ml?1Q7 zQgH5m@_5Payg7^#f&%LD1{^Jx>S=i#u}faI1K*f*zP`WD;?43YnHI4g&kDnr8J*UVy?k?5bji<05108Z?RlDV)4sB1Q>5Os z*#8d>W>s3P(YK4S`8(y>@*BF#X3v~9<9cl6->ctl$G=@4KezUMd*%YeTJ9+>Aqo4KPpWD}08oaoXR=MG&_*%Wktn)=4Su@%RG*qg0A7>P> zsc({4c{7OJpg2}Kl-ZHpmm$hNvE`+^X=z8n*`4|cQj47!4~RV2Cy{;7ulO5}^NE#8 z&R6~~e#`Y&e6J+KnIw_L$<`OwXFc%JesUo+cwt#NyPD!9hU0qsJWA)ZKD1>@Vw}8E zvEs%jy93XjFmQNQq(5beKXygYx^UC#(A-0R<~1H$qv~KZRe9~PlfL(I9%S9$@0@0` zp0mZ-bn7uDXVI_cxPyfQvvky4ig?RRx5E3NFxO>lJh#}@i-=Fe*k4J*1T*xTH8 zJ+*rDuf<{`+l?zxF1Dp1E-vD?_#aJgeG&KJtLPHWYZVo|40;wEX>6;CQrs4KEif*8 z+|uVGxG>PBEO_a$s86zw8by^ljN2BN&fg|tc1?Sg$%3RbHL1P3<~3Kw%l%w_WcHDq z$WUdI`krNJ3k;`;*zPV|BOK#u!nFSW%UxeTWlZTXFk7}d{fve66Rnaj*p^Q6CQ`D&lxkzx|b03FA8ZMqqp1 za%+z`DPze;3wDNhwVaR&Wlc}@dfk)fYWrY;-oEvJ-+wW?e?Y7twE2LHEZ;SQiXava z-W6RF z`5~Q>K8~)dl#9 zl-pU1MGGDo3rf4JyBoCFz{vfieXm+=_NuwhmfddJA*I@W>(;TY*RJg@_cv%S(-Az# z>eY9@aoSn&+tnu5%x_D$8oJF_<|hb#Jp1l( z|JlCOdpi=YcVD{pK5S7qpUR2+gs58eCdQ~YGZWsJthv^=s^<8mCR6#cKYilL0v3Tv zr!>FHK6kM#o}Y2zM!M9D_Bm}n&i8orxPxq0TCyeB~k{&lRt+?&KewA=iy9?iCX^+K}egZTH;eaZLH|jUq2*hQ(S%K25zpckS=brRDox_>12y+BqYg(P8%1 z5(8i135A=^OgSmmxogTUyVX*&mi4W=VbZzN%50%j*3~0RT9$TnS$zySViCA@(W~N< zM+>D*&2Nc3)$r4kcy5))aiAef?c!6}CE?$H_uV(Gf9tVhqI|8Xfro_GdY36T3LAf~ z3f9zGRy^^rPUx0ZQ&%nRn$rTf34aYquUmG{rlYwFLv!a9h>CU`Q7T?A>W5i9&r`xi>Iz= zYTO|aBfLP}fsN~AR4>b+C zcT^}~>xwV(5ABPmDgC(QK8;PVgSCC(!wwb>AIEk4J3BKruXKGDw3X}WnKNOlt=-gL z>+aeTxAyw$rzINU=H^dSSxtk#7B2bycZc*0=G<*y48wqLiHs`<3h@%hR#?VW zE3`iM+vps_m8W)r^PYYBy8V3az0C*j-koQC?CzGBlJfGyo7ca-`|jP-)vF83BY0}h zWp0-~Z?@cdS$Y2bxO;KUw>G_>VU+Z0_q#7OYZsm0U+X*PS6#(Fo4u8P-`)Hy&M$9M zQ(zTgx^~gp&ByotGz_p-x)yl;!`_s2p;`$??wxqxSS@kxMt7Z*;V~L(0|D70{yMk#)~Mbp6pcID>EJK2c<+@nS6sPm%sgBcuxV&+JkM=( zdCm-uT80Qf%mIXcE*%LhXS!9>kN+qjltAwJK+HD9733Xg$ zq|WqN@5r2-7oQADmN6_i60!R1(s^^&PFG)@KX32fSGU9K#HVk+t*35iEt6)lr(#3p zmnTYvyLR2J`~2wc)3f`;p7uT4XdpaOSNv|#3zui*`R{uw_TN9(9_WzAe|h%l<{1Yw znlsi`m76QwR_FJ(|Nr6P(W8$x%uTVMYa3Jle)92tdAk*xdzQxid7!@f^3~bv_ieoV z{;B`}l;4lIo?S|v6JK*u-SuAW_jls