From 4bcce556349705a4cba39d33405bda7c5e204c4b Mon Sep 17 00:00:00 2001 From: Jorel97 Date: Mon, 1 Jun 2026 11:15:30 -0600 Subject: [PATCH] Add challenge accessibility localization guard --- .../README.md | 17 ++ .../demo.js | 59 +++++ .../demo_video.py | 46 ++++ .../index.js | 222 ++++++++++++++++++ .../package.json | 13 + .../reports/accessible-challenge.json | 21 ++ .../reports/accessible-challenge.md | 18 ++ .../reports/accessible-challenge.svg | 12 + .../reports/demo.gif | Bin 0 -> 51897 bytes .../reports/demo.mp4 | Bin 0 -> 38910 bytes .../reports/risky-challenge.json | 145 ++++++++++++ .../reports/risky-challenge.md | 29 +++ .../reports/risky-challenge.svg | 12 + .../requirements-map.md | 13 + .../sample-data.js | 63 +++++ .../test.js | 36 +++ 16 files changed, 706 insertions(+) create mode 100644 challenge-accessibility-localization-guard/README.md create mode 100644 challenge-accessibility-localization-guard/demo.js create mode 100644 challenge-accessibility-localization-guard/demo_video.py create mode 100644 challenge-accessibility-localization-guard/index.js create mode 100644 challenge-accessibility-localization-guard/package.json create mode 100644 challenge-accessibility-localization-guard/reports/accessible-challenge.json create mode 100644 challenge-accessibility-localization-guard/reports/accessible-challenge.md create mode 100644 challenge-accessibility-localization-guard/reports/accessible-challenge.svg create mode 100644 challenge-accessibility-localization-guard/reports/demo.gif create mode 100644 challenge-accessibility-localization-guard/reports/demo.mp4 create mode 100644 challenge-accessibility-localization-guard/reports/risky-challenge.json create mode 100644 challenge-accessibility-localization-guard/reports/risky-challenge.md create mode 100644 challenge-accessibility-localization-guard/reports/risky-challenge.svg create mode 100644 challenge-accessibility-localization-guard/requirements-map.md create mode 100644 challenge-accessibility-localization-guard/sample-data.js create mode 100644 challenge-accessibility-localization-guard/test.js diff --git a/challenge-accessibility-localization-guard/README.md b/challenge-accessibility-localization-guard/README.md new file mode 100644 index 00000000..5f1d68e7 --- /dev/null +++ b/challenge-accessibility-localization-guard/README.md @@ -0,0 +1,17 @@ +# Challenge Accessibility Localization Guard + +Self-contained SCIBASE Scientific Bounty System slice for issue #18. The guard checks whether global solver teams can understand and access challenge materials before submissions open. + +## Why this slice is distinct + +Existing #18 submissions cover intake, rubric readiness, arbitration, workspace privacy, clarification freeze, deadline fairness, communication parity, onboarding clock parity, debrief feedback, duplicate-solver checks, escrow, payout eligibility, sponsor compliance, and award transparency. This module focuses only on accessibility and localization parity: languages, translation freshness, captions/transcripts, screen-reader formats, timezone displays, and accessible prequalification forms. + +## Run + +```bash +npm test +npm run demo +npm run demo:video +``` + +Demo artifacts are written to `reports/`, including JSON, Markdown, SVG, GIF, and MP4 files. diff --git a/challenge-accessibility-localization-guard/demo.js b/challenge-accessibility-localization-guard/demo.js new file mode 100644 index 00000000..de73b759 --- /dev/null +++ b/challenge-accessibility-localization-guard/demo.js @@ -0,0 +1,59 @@ +const fs = require("fs"); +const path = require("path"); + +const { assessAccessibilityLocalization } = require("./index"); +const { accessibleChallenge, riskyChallenge } = require("./sample-data"); + +const reportsDir = path.join(__dirname, "reports"); +fs.mkdirSync(reportsDir, { recursive: true }); + +function markdownReport(name, report) { + const findings = report.findings.length + ? report.findings + .map((item) => `- ${item.severity.toUpperCase()} ${item.code}: ${item.message} Affected: ${item.affectedTeams.join(", ")}`) + .join("\n") + : "- No accessibility or localization findings."; + return `# ${report.title} + +Scenario: ${name} + +Decision: ${report.decision.toUpperCase()} + +Reviewed ${report.summary.teamsReviewed} solver teams, ${report.summary.materialsReviewed} materials, and ${report.summary.formsReviewed} forms. + +## Findings + +${findings} + +## Release Criteria + +${report.releaseCriteria.map((item) => `- ${item}`).join("\n")} +`; +} + +function svgReport(report) { + const color = report.decision === "hold" ? "#dc2626" : report.decision === "revise" ? "#d97706" : "#16a34a"; + return ` + + Challenge Accessibility Localization Guard + ${report.challengeId} + + ${report.decision.toUpperCase()} + Findings: ${report.summary.findings} + High: ${report.summary.high} + Medium: ${report.summary.medium} + Low: ${report.summary.low} + Synthetic challenge packet only. No external translation or private data. +`; +} + +for (const [name, challenge] of [ + ["accessible-challenge", accessibleChallenge], + ["risky-challenge", riskyChallenge], +]) { + const report = assessAccessibilityLocalization(challenge); + fs.writeFileSync(path.join(reportsDir, `${name}.json`), JSON.stringify(report, null, 2)); + fs.writeFileSync(path.join(reportsDir, `${name}.md`), markdownReport(name, report)); + fs.writeFileSync(path.join(reportsDir, `${name}.svg`), svgReport(report)); + console.log(`${name}: ${report.decision} (${report.summary.findings} findings)`); +} diff --git a/challenge-accessibility-localization-guard/demo_video.py b/challenge-accessibility-localization-guard/demo_video.py new file mode 100644 index 00000000..15e37d42 --- /dev/null +++ b/challenge-accessibility-localization-guard/demo_video.py @@ -0,0 +1,46 @@ +from pathlib import Path + +import imageio.v3 as iio +import numpy as np +from PIL import Image, ImageDraw, ImageFont + + +ROOT = Path(__file__).resolve().parent +REPORTS = ROOT / "reports" +REPORTS.mkdir(exist_ok=True) + + +def font(size): + for name in ("arial.ttf", "segoeui.ttf"): + try: + return ImageFont.truetype(name, size) + except OSError: + pass + return ImageFont.load_default() + + +slides = [ + ("Accessibility Localization Guard", "Scientific Bounty System #18"), + ("Checks", "required languages + translation freshness"), + ("Checks", "captions, transcripts, screen-reader formats"), + ("Decision", "hold challenge launch until global teams have parity"), +] + +frames = [] +for index, (title, subtitle) in enumerate(slides, start=1): + image = Image.new("RGB", (960, 544), "#111827") + draw = ImageDraw.Draw(image) + draw.rectangle((44, 52, 916, 492), outline="#38bdf8", width=3) + draw.text((80, 124), title, fill="#f8fafc", font=font(40)) + draw.text((80, 206), subtitle, fill="#e0f2fe", font=font(26)) + draw.rectangle((80, 326, 794, 382), fill="#075985") + draw.text((104, 342), "challenge materials must be understandable and accessible", fill="#f0f9ff", font=font(22)) + draw.text((80, 438), f"Slide {index}/4 - synthetic reviewer artifact", fill="#cbd5e1", font=font(20)) + frames.extend([image] * 14) + +gif_path = REPORTS / "demo.gif" +mp4_path = REPORTS / "demo.mp4" +frames[0].save(gif_path, save_all=True, append_images=frames[1:], duration=120, loop=0) +iio.imwrite(mp4_path, [np.asarray(frame) for frame in frames], fps=8, codec="libx264") +print(f"wrote {gif_path}") +print(f"wrote {mp4_path}") diff --git a/challenge-accessibility-localization-guard/index.js b/challenge-accessibility-localization-guard/index.js new file mode 100644 index 00000000..05bc2a7a --- /dev/null +++ b/challenge-accessibility-localization-guard/index.js @@ -0,0 +1,222 @@ +const HIGH = "high"; +const MEDIUM = "medium"; +const LOW = "low"; + +function requiredString(value, field) { + if (typeof value !== "string" || value.trim() === "") { + throw new TypeError(`${field} must be a non-empty string`); + } + return value.trim(); +} + +function array(value, field) { + if (!Array.isArray(value)) { + throw new TypeError(`${field} must be an array`); + } + return value; +} + +function unique(values) { + return [...new Set(values.map(String))]; +} + +function normalizeChallenge(raw) { + return { + challengeId: requiredString(raw.challengeId, "challengeId"), + title: requiredString(raw.title, "title"), + currentRuleDigest: requiredString(raw.currentRuleDigest, "currentRuleDigest"), + solverTeams: array(raw.solverTeams || [], "solverTeams").map((team) => ({ + id: requiredString(team.id, "team.id"), + requiredLanguages: unique(array(team.requiredLanguages || [], "team.requiredLanguages")), + accessibilityNeeds: unique(array(team.accessibilityNeeds || [], "team.accessibilityNeeds")), + timezone: requiredString(team.timezone || "UTC", "team.timezone"), + })), + materials: array(raw.materials || [], "materials").map((material) => ({ + id: requiredString(material.id, "material.id"), + required: Boolean(material.required), + type: requiredString(material.type, "material.type"), + languageVersions: material.languageVersions || {}, + accessibleFormats: unique(array(material.accessibleFormats || [], "material.accessibleFormats")), + })), + deadlines: array(raw.deadlines || [], "deadlines").map((deadline) => ({ + id: requiredString(deadline.id, "deadline.id"), + timestamp: requiredString(deadline.timestamp, "deadline.timestamp"), + displayTimezones: unique(array(deadline.displayTimezones || [], "deadline.displayTimezones")), + })), + forms: array(raw.forms || [], "forms").map((form) => ({ + id: requiredString(form.id, "form.id"), + required: Boolean(form.required), + languageVersions: form.languageVersions || {}, + accessibleFormats: unique(array(form.accessibleFormats || [], "form.accessibleFormats")), + })), + }; +} + +function finding(code, severity, sourceId, message, affectedTeams, remediation) { + return { code, severity, sourceId, message, affectedTeams, remediation }; +} + +function hasNeedCoverage(formats, need, materialType) { + if (need === "captions") { + if (materialType !== "video") { + return true; + } + return formats.includes("captions") || formats.includes("transcript"); + } + if (need === "screen-reader") { + if (materialType === "video") { + return formats.includes("transcript") || formats.includes("audio-description"); + } + return formats.includes("screen-reader") || formats.includes("html") || formats.includes("pdf-tagged"); + } + return formats.includes(need); +} + +function assessAccessibilityLocalization(rawChallenge) { + const challenge = normalizeChallenge(rawChallenge); + const findings = []; + const allLanguages = unique(challenge.solverTeams.flatMap((team) => team.requiredLanguages)); + + for (const material of challenge.materials.filter((item) => item.required)) { + for (const language of allLanguages) { + const digest = material.languageVersions[language]; + if (!digest) { + const teams = challenge.solverTeams + .filter((team) => team.requiredLanguages.includes(language)) + .map((team) => team.id); + findings.push( + finding( + "MISSING_REQUIRED_LANGUAGE", + HIGH, + material.id, + `${material.id} is missing required ${language} language coverage.`, + teams, + "Provide the missing translation before opening submissions or mark the language as not required." + ) + ); + } else if (digest !== challenge.currentRuleDigest) { + const teams = challenge.solverTeams + .filter((team) => team.requiredLanguages.includes(language)) + .map((team) => team.id); + findings.push( + finding( + "STALE_TRANSLATION_DIGEST", + HIGH, + material.id, + `${material.id} ${language} version references ${digest}, not current ${challenge.currentRuleDigest}.`, + teams, + "Regenerate translated materials from the current rule digest and restart any affected timing windows." + ) + ); + } + } + + for (const team of challenge.solverTeams) { + const missingNeeds = team.accessibilityNeeds.filter((need) => !hasNeedCoverage(material.accessibleFormats, need, material.type)); + if (missingNeeds.length > 0) { + findings.push( + finding( + "ACCESSIBILITY_FORMAT_GAP", + HIGH, + material.id, + `${material.id} lacks accessible formats for ${missingNeeds.join(", ")}.`, + [team.id], + "Add equivalent accessible formats, then notify affected teams before submissions open." + ) + ); + } + } + + if (material.type === "video" && !material.accessibleFormats.includes("captions") && !material.accessibleFormats.includes("transcript")) { + findings.push( + finding( + "VIDEO_CAPTION_TRANSCRIPT_GAP", + MEDIUM, + material.id, + `${material.id} is a required video without captions or transcript.`, + challenge.solverTeams.map((team) => team.id), + "Add captions or a transcript before treating the walkthrough as required." + ) + ); + } + } + + for (const deadline of challenge.deadlines) { + const missingTimezones = challenge.solverTeams + .filter((team) => !deadline.displayTimezones.includes(team.timezone)) + .map((team) => team.id); + if (missingTimezones.length > 0) { + findings.push( + finding( + "TIMEZONE_DISPLAY_GAP", + MEDIUM, + deadline.id, + `${deadline.id} deadline is not displayed in every solver team's timezone.`, + missingTimezones, + "Display UTC plus each eligible team's local timezone before the challenge clock starts." + ) + ); + } + } + + for (const form of challenge.forms.filter((item) => item.required)) { + for (const language of allLanguages) { + if (!form.languageVersions[language]) { + const teams = challenge.solverTeams + .filter((team) => team.requiredLanguages.includes(language)) + .map((team) => team.id); + findings.push( + finding( + "FORM_LANGUAGE_GAP", + MEDIUM, + form.id, + `${form.id} form is missing ${language} localization.`, + teams, + "Localize prequalification forms before requiring teams to complete them." + ) + ); + } + } + if (!form.accessibleFormats.includes("keyboard") || !form.accessibleFormats.includes("screen-reader")) { + findings.push( + finding( + "FORM_ACCESSIBILITY_GAP", + MEDIUM, + form.id, + `${form.id} form is not keyboard and screen-reader accessible.`, + challenge.solverTeams.map((team) => team.id), + "Add keyboard navigation and screen-reader labels before using the form for eligibility." + ) + ); + } + } + + const high = findings.filter((item) => item.severity === HIGH).length; + const medium = findings.filter((item) => item.severity === MEDIUM).length; + return { + challengeId: challenge.challengeId, + title: challenge.title, + decision: high > 0 ? "hold" : medium > 0 ? "revise" : "release", + summary: { + teamsReviewed: challenge.solverTeams.length, + materialsReviewed: challenge.materials.length, + formsReviewed: challenge.forms.length, + findings: findings.length, + high, + medium, + low: findings.filter((item) => item.severity === LOW).length, + }, + findings, + releaseCriteria: [ + "Required challenge materials cover every solver-team language.", + "Translations reference the current immutable rule digest.", + "Required documents, videos, and forms include equivalent accessible formats.", + "Deadlines are shown in UTC and each eligible team's local timezone.", + ], + }; +} + +module.exports = { + assessAccessibilityLocalization, + normalizeChallenge, +}; diff --git a/challenge-accessibility-localization-guard/package.json b/challenge-accessibility-localization-guard/package.json new file mode 100644 index 00000000..8964025f --- /dev/null +++ b/challenge-accessibility-localization-guard/package.json @@ -0,0 +1,13 @@ +{ + "name": "challenge-accessibility-localization-guard", + "version": "1.0.0", + "description": "Accessibility and localization parity guard for SCIBASE scientific bounty challenges", + "main": "index.js", + "type": "commonjs", + "scripts": { + "test": "node test.js", + "demo": "node demo.js", + "demo:video": "python demo_video.py" + }, + "license": "MIT" +} diff --git a/challenge-accessibility-localization-guard/reports/accessible-challenge.json b/challenge-accessibility-localization-guard/reports/accessible-challenge.json new file mode 100644 index 00000000..06f5ac1a --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/accessible-challenge.json @@ -0,0 +1,21 @@ +{ + "challengeId": "sb-access-001", + "title": "Open climate forecasting challenge", + "decision": "release", + "summary": { + "teamsReviewed": 2, + "materialsReviewed": 2, + "formsReviewed": 1, + "findings": 0, + "high": 0, + "medium": 0, + "low": 0 + }, + "findings": [], + "releaseCriteria": [ + "Required challenge materials cover every solver-team language.", + "Translations reference the current immutable rule digest.", + "Required documents, videos, and forms include equivalent accessible formats.", + "Deadlines are shown in UTC and each eligible team's local timezone." + ] +} \ No newline at end of file diff --git a/challenge-accessibility-localization-guard/reports/accessible-challenge.md b/challenge-accessibility-localization-guard/reports/accessible-challenge.md new file mode 100644 index 00000000..6d879327 --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/accessible-challenge.md @@ -0,0 +1,18 @@ +# Open climate forecasting challenge + +Scenario: accessible-challenge + +Decision: RELEASE + +Reviewed 2 solver teams, 2 materials, and 1 forms. + +## Findings + +- No accessibility or localization findings. + +## Release Criteria + +- Required challenge materials cover every solver-team language. +- Translations reference the current immutable rule digest. +- Required documents, videos, and forms include equivalent accessible formats. +- Deadlines are shown in UTC and each eligible team's local timezone. diff --git a/challenge-accessibility-localization-guard/reports/accessible-challenge.svg b/challenge-accessibility-localization-guard/reports/accessible-challenge.svg new file mode 100644 index 00000000..49b4342a --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/accessible-challenge.svg @@ -0,0 +1,12 @@ + + + Challenge Accessibility Localization Guard + sb-access-001 + + RELEASE + Findings: 0 + High: 0 + Medium: 0 + Low: 0 + Synthetic challenge packet only. No external translation or private data. + \ No newline at end of file diff --git a/challenge-accessibility-localization-guard/reports/demo.gif b/challenge-accessibility-localization-guard/reports/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d97a866c63c844deb9f20023c2c0e30cb338c36 GIT binary patch literal 51897 zcmWh!WmJ@17ky?1W`>*xK}v)H>FyF?h8B=e1Vkj1E&=HrIz&pPL>NN4MLeb@bQf8D+Ixo4ey&Q-gwDlKEt3`0XB0pRT7>h%0_|D14gcCmLx*gd=6 zIlcaSa(3|dc>Cnv*74Qm@zwg@%eB83tA`i!hu3=tN2~iMi~DDrJ9~>eM{@`NX7?_q zcg|+EkEgbdCb!QfHjc(Oj{a;MFRyJbEU%5N9sXWD7+u}}wY)dHv^P7yJhZSgu(_q*YAnG-wRzcn;nyDZGV=(k1hWko$eW#`#Ct;F*4URJkv2a)i|>FV`#eW z*Fw$ETu=XSXU{-u|9E>>|M$K>jorV0boAG?4>dG**EIE356)He&y@5|6?RP&bd2S+ zk5xAJSAXxpxBkv-8U5HilHT-7`uo|}#@708Ep-jemESsxzjl7E`(9exR#sJCTwe3O zVKAwFAhG`Er|KU$tJ|!YP!~I?1^VBb9?>|3%TlFNV$}pkAAfZA(t~?^ZKAQIoAL9P#^w$N=FUdX?DS3SADY-derj{)Ma0b) zZ$R@HO4Dd^lSnd?ND|`+q;a_J6Klkia2-P{O#@3UeG9FJrs@yPHFQl>bxhSB7%OWT zE8aJdSJjtO(z~muD~r*VQP7gcXiLgzh~2#}CaWeYts*3)EGVwXCx+z}QQ#4l=M<1* z7r4vLCwqri<_@nk8?Ou-k2EW{B$`W-g-e2kQ=ElE{5HE7(|@=ldW%hjkyVJ{KcI!^ zSp?~r1!!;c(=zehWa6W_#Y_Dk7 zz`@9vwdyMu+M=lWO#ADrmbwz|Xl81CtzPL%6?2&F|N41t5U=!_`9VX?#z^6#64Rdz zU$*{KzUa$*@U3=ds{Ym1?9Xp?dvnd9WGvc^^#@DcZ~4py8o&Ns8_Lzp(*E9XyfyyW zVQ%32x6{4(w$}s}ouH2u3g`@1za_~QqG0KmEDaYVGX z^T9~Y!ub$#$@TeAP?dWjjK;urA)Ma2a3O-pbA2Ha9l^aA#hz@t7|oquxERA5cSi;Zj_y%ED4S2F|mbpiFDGoT$!Ow49_Rxv~6KSCwbwoxXwH%6lX0 zqLpM5&yAH7^9Y{RRLkV(<;T|fMXTwKwHvD+TsnEyGTg`P);@Y`M_Xt5pKPpU;o!XM z_%K@g^=!jk2IBbG;?vxmH>&otxdwW?8=vN%XuQu)^(?+!@Gy9Dqi{5u^nFoY{w7ng zc2)6aN%vPm@4M2J`Sk`R`O55u zNgwajjE8s%=uTO0m08bR(CpSNKa>>ISxYV{f3dMSy4$eNb|R?#x6`4*{CM)+-uJ7+ zFG3FpCw!I9AbtA#&B!(nVJ$MQ?Mh>cZ!`yOG;bwDH0caWs|*=RMh`mCFOEet?nFAe z71kT1ANKHHeml$;s^b@H5y@>_@0b4bxcdIxwQaFF3ANvU2bK54kJQ!Z%G@8^j~qSv zrTgRPNbQlDlZVD*uXo44P43)2Dl+pDsQvjh&PlRg%J9qagyYkiTGf|z0#eGZFZ55R zz4_ehrYzP7J6<||hBRk$K`8meg|MYJ-pa4JW<8fs*xmYxBq{y#)8wR=~+vEbk3zA2f)%YtZELHyENgs}gW(J@hZzL8K_M!C0{{xZYOZRnssT%RS zqU(v)z+G(N%QFH`}XwciL%IarWYRbGDXgLJd2noFE zthq@j6$+IK_d!6OrW>>fQ4Q@s;9Bu+BdY1{LKOovdXBv`3Pv3y&s^{9;c&F9LzG{q z4_LUb@T9DV-BO(gEb&)eQq=&!TqqKGmwgHKvpea5=dZZDWfJa_@h$_XIdTPLzgec< zlBFC=%`y$)6IxJzsCol<>#xqC!qcVya3M64y@wGp)LCFu9V_79Bck&pL2GlF!k<5w zLDH4fIwRzUp)NbpaGo-s{00#IZirQ4F%$(?Bx5mYF%4wse=YZ!^$}*3Yl5E8%e=^* zH7ciZr$!oPg>Jw78Ur9Z%mVZ%dY_axkOA^`EUJ5Q{|KK>d` z_ov|*qz90{E91lELf^BR^vaAdWP3bk2U)_J<+fWiB37+(8F-2mwTrcM8xm7Fe;4ST zh`_-7D%KA`Hm&8Ru7?KAGefIxdHMYoekA*A0E3YYB<;krc@%0;6zP5R8A}7da2L?8 z-D6sezq#zrtdYheAi!NyDoDhD77xeBowcY-vomMZE0TaX+zk^8>H}Tm^P7D}U5W;* zXY}E;4~2s}HCS&{>355b3d1-=^~mwf4vMNzCppT2FU4i~LM??95`;nkN}bwrt2j8p z;^Ni2;j1no6B6K=IV{XXt6P>*cRV7hhHY<1nN|aUAm8Cg-`BG%a()}{l$Wd~Sx{v! zZ=Qf@p^2XiDa%ki{B^e}vEG=x9ow#H%8@Dced~6&%d?`_&*6X2!ylbJDn2|5i)BlJ zQX$yA_k&^n7}6B)F69tF(G;_MLky`bc7z49DVHdFDG(q3iYff`2+xgx*AIa=3qZ~4HCz)A+v4TMqjT|kdUdFuUcEtXNl;mov!nbKdk`5r%YaA^{+##TC5=)j+k0%T)xAHmdM^dx@z8gj4k4hMhysD;P z>Nr+#zvq?=YhH$856Jb0)a;RYOr9LOl<5?#9}L*%SxUcRxG!3YI4!BrayZ7Eg*ZR` zT=ErFoFp>j7-j!)%M@{m=m@k1F!K~6-d*<^s-nFfJw@9at&5Fj$Ga)Nn4+$?oK@hC z_BsFSbH0CmFrQSR!dh9FphE45@xCsh)XIc;1f>8NxaG$>?rwv1A@t6iUZ1ug zn)k_C&t(t?ECq;W$U{Qh?>f_B;`_%0BK`D`2mUaY#j~(Ps;h(+7-re}{VS|@pdYxI zdD?`KM;0i6G;8l}EDcfiyVw!X#Fup>3!qO5#wV=C&`RlscQUk=6D0NmvaP^byfro2 z1BNA;=K>kdu(xbMW+M+673JbP=rKF^x7h{G0iL0?rES0jKrs;>D(VeNoMEMG17ho- zfvVtQf;)gCPp^B)=;i8PpJu{3n=siitQ`v5*?XT|LUDOh}cNX@NMyu6Z*xKhLHQi(0nSl*=)=7Wf&V^%!9h_Uf9=V)y%s&l}t%^U27 z148QHT6+v-RR+qHf+r0eMZdnrM?GmK_dQ7*i~dM)p#Ht^&4?UX8K4AzdO4VrK6%W;AbQ)SBlK^IsVzU7A zEIf(gCmgs3C{j*>%G@!Cs`T>FblKB%6B5NM2KSq_@podtU(N2#6K^kaa$qg-OWt5F z5DC|_`B)E%Uw}FDul$c#M4 zhXLCrOxBEi$*R(g(!evkwY*0z{Q_#nh14D&^?p8ng~y)gfbtXf8~4ZgHl&Jn8X%>e zs!7ZfbK^vBZ}7Y_W&^1h8wD~>YB2Ez^)h@U!{%EPV)BJZ6z89SdPra{0sK2}`(p#$ z!a!w+&$XrtgJmZI`)L%c#d*D;=vtA540xRopv4LQfzKlvE{=hhRBz@b>O)CcQE2vL zyYoC-273);94y#Iq{xg#9C)UYa;F2dPAK&-0#$v888*^rTq!d4;ZKBN<@qWelesOE z5zuTD5S~R5TsGNTR(4bdbuAzqmjc4Tum(8NThP^&jI;N>`5v6xC%?X^7;KJ@WGs!o zz`j=p*Bi=aGz#J`u-LDeXmLvth+Enu`ojgdgtyK#&W1uf0CNh|LKS)ov??ghnaKGx zuEqm6kfv4p*HoW(rY7b=$@HAL2!6>9vZZM%bdg<4weegRW1>_yTi-Zb_1J&~la0zE(9|JP` zev$7gzottga`lB&f?EbvY@OPfvc1|(u6Q-meFCeE&p zol=YU%d6phf>y>!Z)L5WqcTsi{Tq~f$gjIkQc#eJ!v+vdR}+2-9?VDiy8{(pNCulL z|83+EE!5pbS4|OrGiLwx9P_QVBpH#OTzIzvR@Go}x0YD17Jmu$!(*yCYwH}qVKU(T zSwk67W9uc>jZD#e;R70qmE3c>V2TUzpknN`}$$45U)(1AWrL<9XX2 zs~-UF2YHnfGJ*I#o_q!!Pr#(lPSw`)fd#tG9F?U=Y%6DMD{p@*g(JT3$m~`uc>4-F zsv6a=2@W`vqp)FAX`lmN`?Ys4vB*bwNfKJWl`EqamfbdYiCy3W-}=5O<<(v*L2rBm z$uE3Ks3Nd;J*+P+d%TI+x|;2tg1?Jm*$lsx^ioaf#vFVD{TeHNkm@6_Q4dd>e>8l# z`?{2caP%7ES^eZ9lL8whVGIsqvK_A)k$PP&jjiZ+(D%OJd#z7`{@ny&iajJGC<>I_ z?m<%Z0=l0(d%sw-_mD31-qdJEy0*V+1h2bbs=e)_Q&s4r9@3)160QDsWZ^`iMvCx1YuIpoYmC^WjB5D}0PitukOc0Xxy4CBZk(Ws zkumgXC_n^W%NY38ee(Cm3MKE>L4^pL?0o`{>kp zn|J0-!3;_73^U({uLjL_Q-i|NZ-IS%a;gQyFa?b%_|GXK{%9I`jhe>K3)M{u?o6T% zOnF^MKR*C}o5T0k+hN(1BX9aM`~2ku`osP#urQA{zxgj?wW-LVnm$a!tEU@m%P6WI zFUo+CWRPHUioe3B5xgf>we6AViecu;iX=o_t_W};{*gd=22wUQy8!z+trUtJc#>&z z)H#~6pczJ{0+Q3My)s?%%3M2PsyGlQU2;K9RU*p?Cli++HFmk+z5C?4CZ#`aZMc7h z?fPxNKL$({_?E8OWAUxf;T40p6=T6w=mABeC-F~VO1lAa>&i+oiqd2!r72Hhd^uQ1 zsaQO)xiG(3Nm&(kx}N?1e)>Sb?AiuCt`CvjN3BQFXx;qWg`{!*L5eOs1{t~Vbc$o2 zWWgM@Xl1D>-cgXbSu(p>F`!l@Uq@0kV$?}-rc0TNanmqGYiYZ#BtyZf^r`OR@<|PF zKfH$2jG*1Mi!l3oj#|OEm9@hnqxMPX)W~0c1$3drb86OL-s?dB9N$57nTkVfOYy}Y zm@CS0S3|y%QfF*0KztuoHPZfx*gK+=mLS+sa{>W}>I1~@3+`zMzYHO&I$&wfN>e`M z_c~lCSnRw0Rq^Hve*tuSdWNh|Elbzsef{6E(ZA2nrdsZma}cUa#rKFF?&%gDk!H7H zo`5O3_G%mRw@Xg=nokle-<2Ifs2HtBMm1n~IK2#|m(EvTg-II&=mjR;SR7*9H~88o z;B>w^P7chv#IihVke$rTg_GE$Ag>cXqIXUvXHZVM&H+b@1fYT$<4-$)&y>BNiMsG- zzsM7cd_Aa^WB1_N{M<14yfEU(QuBl|81(@YR!##v+$Zb4MS)U)u&EsrRb7-XU%XNC z-^>L64Iw48b>}cul!c=5o>bR_edkcd!rm0;6ugmSK5@f-A8dhgN#_}u09}p0wn35_ zw^`!1=Q1+!fY!{XI*3Fn2#Vs^spfZx}X2M#VHy)MZu0+Up=?KgEVuYC%oV~*Tbe|}VmWPWzx zzWKY%Op0FRuIKK|=a;9}Or^$N)&5sdyo#OX zk)>X{O9E{E9j#4XmFlgR?FY*HjwT{%EPt1l=`7jK@i{kRFGcQiq*zw>ko!4OX>b)V zp=z_?Q4tyfb<5S7LPc*yJA{9*zm*XvpU%^g_+$C`0aF)0mA2FjlNB+Md_7yA%<1xH z9R=!lui7yL_8MI!0!l@Ecm+<8sHegbF8=U7*Rx;4D1lGnj~+;^)I5TS1h}c`sBwJJ zf24C8rBD7?<;!D3vv7%r1{@g@22WphNc<6S2v0D47DOy*WO3`}dsVYY70D-7DP?=( z@Q+rK#&!jt##*1-gw+~5)vb6=I^Mjhed^l9AvNZLkgGHC_+#bu%N^!l_snPQ)1RN- zm*47415Q`!emUe`)tLn&IP3fU5AN2RhtpYmw}kEZ)mub!<)3|z+W1!g{EgHqeLt?_ zs{Tcy8t26K*p<6qE#DiKOIw|pSj$+a5l2icC)jk#tYtVj$J=}if;Sjvc`OUr=EigS z*b60-6e>~#vX-`kbctr|Zq?YL}ksOs7kbKL9ayzBJkhw_JSwSOY+ zItRU8)pPi|*LioOu43x$%O3>J!>|zAK+?~^Y~+is5#cOiu~?5C6a$nf8^!bcduzLDOZoV z$d@MGYljqTRIFO{KsW~{>za%Wvp3Llm|t;?e-^e55HTfW&-$)+XE*t8-t`WSwbIZE zJYUU0-wwiQ8kZyfPh7Zb{J4T0Jxg16Zuh{??pPc?VR z7E8--%0L-y!r-E^t{sR}U3tTPHjlW}b`HsdXuS+JuX*pRXL9CY#2f7}cD=N;O8OI`-nhWTt|`j0widi5_w-Q$#;Gp zg24}RFG+vYBDHvn*jVOL>bd=776GDg=Gg9iz($?u_G4}qHnI>Dcy@puSAugCNw%vz zAtZ?(;%5cjLdZ5BE4|AjBBi{YsIggA&HgqjM}BprZ^QgAWRjmmie>(RX~<`JMQ=cw z{18eueaP|;8BWp|rDS#e;?`(xgtFW@(oX(OdY+Hr-9kF8=+a!6pl&C2dm)-56@!a2 zkEH!C8rP2VNcKhx`-zRpBUKvsN@~8Ut3nTA7mHQPG^(arBjc@?dihX{Q z?u1L_d%s+D6@1IO4Sh(@L86#Q>8B3MqUE;ssBjo7xpC5HHeVIb0xX9hClU-2qKtxs zZ&Lcvx3dZMd|0}|$q<&PP{P4N^%)c;#^_?F+O^mB_+Kzi(RT^#>@zm9qRhlU6C3Wp z@A*=NAYxlYKY8QObs~nUvFkLd{s! zPfiIh9@U8VIeW4d70iTOeI-uTV^{f>`X>wD!2ZoU_?#bz^66%@tAT4YjSoljX4LsJ zdMn=}7uAy1Btj|-g90zMge<8EH1 zQM2yJWirEMkEI8UHgDFWzwTFBxfD`_*1O#*lN$iKp!KKr5~6}W{zI`ox`b#5d1AHp2uxr))tg>)2ZQWY=!02U zG^N?9PtTNx=;sfP1wpklgA2Zq8Iz^QfJOO zzf{ z=OeCbw(6kzA4O5v%*#jyUhZh1Im9Ilfrc>gMG*ppKe5zPz^54;V!#v;4kqrX-bdKz zZgfClE7@pm(s)bwQ&~1KEUHy$_Gx*>JdaUK3&N;5sJ@1=raVcQW6cl1xJzLj<$^CG z2N;9*LgQrRkcO>NIz$~oNQ9<2G(|~?k6Ky2wDqyQRJ5(s!A5I_bft6K=Me6;pzgfi zVo{EG=5Ab@G*PB>Vq32?j2d5`)J?>}7d0gNJ!>DWefL{Ys!B9cnMY1mvGMzz*Q!`W zWrcncLNANoy72O4q@Qk65T=oWnHD;&YT<7nmutD9VH&+#EyO0e(&Rp`=JVcx4Oo0rer~@B>Bx=W4)3sUz|TT~!Ta|0SY2 zgCya5LdI1MC)KC=dKN{s+Q}m$`$=f!kk*(Sh1M?DyHS44T#WOiq@ODf{dz+S`w`>n zq4iQ^x;;f_ea%;qEi?krg+B>XSBRi}_P{GKy7BfmmRen5T0JIxp@kixE`1ro!4#Mq z*J1-n{Do%FU?nl6l4vl=FU|K<_oJgyb~kZi$Z#toxXwP5y*1dgGE0jMVj3E0<-$Ri z5J}x0sdXb*n;sFcAECA`Z1bTXjMeaG41L7PC;fk+qfv%SY(`!ZJ@zs|q)Hli@EFN6`n&4zK0 zinJ5vI3?9dV;BsLq9X*k5E(e4S)0XNTt2}?gP|okF6MXoJ`6!;R3WdkiEk@!1&@H~ zk5)EoDfcm<;}HoCc#39>$$ax6RfxhXz1~<2`Fl~`=4dkAwj$j}k`gRZ0wh{*avnGh ziF|3?`>e0u_~>s{h@6vlbl3pzKN8)i_a63z^{#gaALYS|al^bL3Cn#pBx6NLT~3!^ z%5fYWedsfwJkY6GQY-VmX2;;rG4!Z3t5I+zq0Osypg|5#%4#$ZMc zStOQ4CLFB(v5&8W4_pVB=zk@pMhHpsFr^atH#gmv7@D{obGiK|)K+$td+f!7F)Jqn zi{5WkWZ}GM2!Tu(!iNr*+SYZsX&72K=J0dO>9=BShB{el%uI-^l45^G_wOLxNHrjY zvL1M*Ibn8l(87cM!wg-?L$%$ZC+Wu%o6;kD(yDO_a58kTAANkzy~!*q<3S(ljQ4bQ zM(~G70kaj#qEC~vj+12%(1j{=6;>%??ux!hRMkKB>Xpfwdjgf=bhVFDp2C7f%8i^{q^zu7mD-$5hijnI;wb=HscB-)VROWE;nH`+M4U6_XB+X-f-}mVoJ=oz(8z z#=RZWc1hFL6Vv_2)8SRqgEwbjo73mE)59vy9+J$ATFvA>nHdY8X%%?(E^TJ~%QI)6 znW^71Nj)=!nd4`18#8k^XQN4G7bHx>d1jX$n-&&5>-##r5Ve#`zq;Ij_br4^=f+l9?y6p0AcM%dwkB(#|7H)7Re5lV!do?wqICy+N@$ zkIKA(f-g`R+@RuIpbj)9gC~xtEYQj`lO{9LdoD0Ep{Vm0ZW-KW7+}2Fxxh@xd>eiX zeX_vHiMqwPc!$=2c?_ggUA!f^$QiL%`}p}x^dc{3B3JDqzvMGk`CEcxi$ViaJf=5= z;7g*MIt0;9N>0foiq1s|&m}?HB~8U8sq00_{H41F88n?s_aahdYAGdFm!P#v7|!J{ zZ(bN5EGcp>Vhxs6<(HH)+mt;mnXH%ZdoF9#TB>v|YjG|=ShbWtS=Q-X(xtVM#i(}iN&X6V?aEWtF^V2r}3-RWj6yG zsP&pBeBLX<=DKXzvU1I@bIpHjEnsym@MJ9rzK)|^59VACkz5Z|T@N!@54T>A@LZ3K zSSLg!uSe&v$JDOB?p%+BuPYYWyg6Bqhi@d%ZX|MUBuQ?(Ro!@Ju<`!HHcr)MEO@!d zd?PJ?BfWOxL+3`u*v7}zjZ8}0lsLO~$kQy&%^bLRw@scy9}Y}VIq zee2w69NYSy>F}ax>pOhAnRdH{(=m6~!SQ^n)nL2Bdb`teJ6eAGm)=%a{&sKec3=5+ zw>4Eo=k~zK_8{D;cFZw>WHSr7GordPYT%T|yu%{6lVP+op1d=W@08^1Wa+2gEaVp?^7k9n0z`47)x--?Z*erv*NkCk-xh+=CD4nFrAFtTHW0} z+5OV#+#kKU$GLYX`Lc*|?`E=dbUqA%4hvg_LNG*raeL=*2Ll`|ya{$nyM8fdceT4F z4dN8*H}pXqSD`IXVGC2+$I-e#*K7#dcJP$Ve}Q|J-ur>c`$O7$6T`cq&Fd#k`=QDE z6odB0AdYS5<*vBQg8<` zaAR$LJ3>2*DFGnC1uIFz{b*ekY$5PwfCEqLPa7eRgOI4>D0D-NFn_tETvZa>;VuwG z;RrwHJ)?&vAu$d3~)kAc835T!HMH&Q2V3a9R7rnsH2RUG8g zW%^g-+9lM**7>EU^gIBmgeA=3h}1)5aS%uX@YKbN4#d$VgvxY7Am+HF_*W`)E+pen zS!oEw1zPiR@0Ku*y)yI`2$0qj`w2$e0Rfsq7=hayH-hqHEx7un@NaZ&?IaKa$3bNP z2t*o6H;)q>|BqUna{X2R+|>ZVKRtersvEZP()X8Cz^Izvt2JO+3TkZYWzp>abIpGc z@sCR_9BO-V7XyW<;|%Dp`=tVx4Fgxb0@v39sS#27&~$dqh~nl5L9YaQ^`Txg9pug- zJFjh(ITM75l>6(FB8JR@R!n1DaV-qs>Jl`Kjatvag!HT<>n+gHA8$dqr+L-2A^{o? zJU@nQzDFIxp_6ZtMjoe{t!jJw|5Kw%`czy7G$#k)88R|N!uZDt`42K=eJ+T2-xccR z^)!+K|94C+8KgX~=&SL4d765JVoSTk@|h~D!Li1)S2lx|3Zaw&zN0SKc8i;94{B8~ ziqcF(<5g!eN9(`n->0*0*Ay#8P?EJa$=;o~4GA;&dyIT&S>0TMkm_)}l0IDSO%Z#! z+c^JY{a3-G3g>^aC)<;Cul8o|k$UefcD)s1x$RH$cRK5q4tujoWk`!MGD_kR25LYY z&q0MRK(nMgv5W*f0M2I37FMGKHmJF-CbkV&LA)TB(@(eoUDiurfzo5OuvOB!)S;A$ zsj*>D-6)0!q~j@C0>nrcMgN|9Ln0iMRv91M)6NFOamdpzgb`!kW8c(oB9#j&v1hqF*A!O3WfTv|u;cIo=yQ-?)>|Wu*-85;H7?0q#hj=P`VYoF-V2 z$KDpA49=-qEKnvrEo_A_+B{S#$7uNx6m3V9Mw`a)JYCDQeJPXn{E03;l-9S<1R|M6 zp6^T2od3b4x5zvs`d3e(MULskasaJ;F>67{jr7=T*=qJJTulQa%l~LX%JI$L-zl*r z%Ei*F?~+VOoYF>kzkVnxwDqk(0?zi;RZwtUkb<>z0h~Bgm zt?eOtTV3aq#B?-7*HX&abI5~+M6sCZi&=Yf=B@?M@R@*}j8DZQamGsguDQ}riN3f# zs+j&eXaSQu>0mGmt2L3Ui}g}fe&3E3o9_BF{PC+0ArUt3 z?+#EGz){js{MBIfMh6E2>cWk9VNuoFAprQxvQecBN%}&U|DSi8$=K(xf6@HI?$%h@ zug|GO;&=xe34ez)kCIBmRu{ zCgy@_KahKS_SD!rgziEEcg%+`lJ!nRRclAkVdq?9$CWx=D$u-^*HUWz%iIeqDq!|u63@t|I>!U5`?6?~Vrgyu z+uVS$>X3u^qkNGM=UN&a{lW~xf68=+HO-)ZwK?3=wQ}sJ^cYzgDnZO0p``nHv2Wiu zhs6k!g*>p96$_Q+w-!t+90;i#`M7V{BX^tR{)>kitJ{7VqLhLIV z5_kCVphjI$s9^}FflBNY;j!MF=+)VM1WeZaXMSFEzP)$EMrHL;Bgk&}-eFC_5+l1V zfxa70=~lSkkRo7?=zAktjeh1r!(uQ@9X!34M3xgS^4Y#$l0uw;INU<&y((L&y+nzV zaWR3vz%J3)y17XA{pOzpZmH_z$4O2hF|2N$)di*`<@!#OB1YIqS`d@8{fOm}&DSye zOtErRvTbuRKAf1{&<7~M6+x6h+Awxp%3rlgl4h(M&vqo5A+Ys~IN{H0Ombz!O1{b& zO#F%Beo}RCN;Co9!$2qi6#tz&pnAf4a@t z(U3dhVH}$Dsh^y1!97k~26_ofhg9P-&mNcFS?Mw(m=ZOAE7cE;4>kP0Yu!qqa0xLY zxRF5x0O_a)d=gXXu?4(U=*YrJ6;*!Rjiq?|n1m&M(S9acv*nHrIbqtz$*q0s^kTQ< zd7@R=q)>+SwRAkTWZ~q>dBPKHw5C7bq;TV&RF-%56uDu`$$PotMSJ-VnCVtV=1`gy zO{X2P9}fI9hQ!r6#c5rWD#ERpywV0X|B2xfVRP8E@`SLHT>n2eztJIaIz2|jaPraL zED|?Ln9NBs47jliHRgRoM28~Mc&XP!G5$U4;wfo=&A+JDmnC-|o!Xm#`VK~4n6x`f zgp%xphjWP2YmrDI^IB?6u@2&*wuOWT38sVwbjz5L)srMD>2_%d1Dd%kE!2_V%JV^_ z)@iNi$ulsnhhs{$)&raRGs&h;_7CmEaq1ttUTrTjt`?mU#S8I-9X45vtXOsyQ1#zjI)gTeZfI`;y%ErP$` z0q01{&>WU~_vxN|sq&irn^oYqN}DMAJ8`z~_kg>Uah>R&CpNL<^gu?HFo0Ngq$(9M z=n#r%f!a{r4=Me=!w`1&ppq0;EHEFCB+{GK>`ayWdPdl5@N)M118Wx);U1z*-HUxC z=PX26US4gMc4~&w+aJZO0-u+eWUcP;6 z7B8Sc@FIV6?OP@HtlBRGz<>zp1Pn$dp6da7bGU3X4j{5`ISQkvkw(%?V{dTdAm)9W zGAve(!7xkU(5M}Fj)5?nLwO%o{l5KTorQ4DqOOdD(O~Gfhlvc((C2+?u4dOeW`uuP zb$BR*9ixW9{&$+ZlA?k!60Lk3HflyT8cZ#Wqe>tr@14IrM8H#o;E}cCDwaf~!T`-^ zaF4eJ_8lIQiFYLrMM1N{h_SjIL`E!dTY4V89(B_gO`3DdsePV&%siPw2^lvZ;9^b| zXx`{bQ-52DJ}w*fF59Hk9MOO;lCz-EUMQdMVR+8^nwyx+7Y)p28>S^OYY?$qEOZZL z-!Ue->S6h}(akwv_D|wIn<*Y!xj@yhz{tpY!}^IgRSwOj#z^cU+j|y)*}jXJMUNU5 z!IQX)p4Zz|#QCJw;SElQ(VokY*#S8zo9IHWWri{CtKxrKxq zK=fl)Q6{L&>>ao1 z5Jk6TC5_C+;HRQYp`xM~xFaO}LGHcu+@A@zTZxu2w0SB<%izs6`Pw_;ia9N1mYPkL zTE$DEhq-s{wNy((RNdI&J{0N$dAU_#I-DH3O}UactjOxwwX_F}|5+-eQwWpZ5n+7c zMZ6?To15{#N=DXLdDXISepz{w{ZwM*k))-*Wb)G(OM&Z80=qfp*P()x))(J1c7Xin zvpN2H!{|V3?a#9%KOv&X+Tj0vf<;GcHG0u7MoAcGf z$X79uZjuOIrWRFe92NM--I>eFv%o8m%R9O6RjrA89GAtS^|!DB-*PU$+5*2OF1K`> z-uG+Xzt()4xdK-U0(ZHBPPkZlxUwg>UXd1ho)rW$bBAyihD31T;M~5Fg&v@-CqH+% zL1DNlcZ57=SZhj{r*)*MT0}%)R2+A7a^WjSTfcxpi(*@k)WX+I+_9b9AvxTBRfXo0 z>+ao!al72{Cxvdmxb+se1xfAP&j^Ky%sfe)MV3%IT`C?Y`NABYqIcRn?+xsjMR;^& z>|QArH5e781oEUt@MxOb>ACW}ku6HiFG?@Bi%%*-+ijd@^L!ZK`8c)_-cY2Q#uL+9 z^zo!9>zc=Zktb(kBjS(;&&->{Y41;J?@z@W##o%ATAZiNYb|P@%f^|j$ot8ex4_f> z{K@8SGmnofua9?eQ6_Kk2~FW*Tw$?ENjYz6XL0EOZ`oLJ*=(`R^J07xZ}~}a#Wimw zyrhznuOx{VcgS1CSyC;?_gS*!^K+hRO5+-NzApwPUrhOGtsNS*9AX$tY6JP|BTDMy z_`Yf&>c$G|l1m!O`Tm=f{ANwCZy2*_Y~uSqR`Pw8ugPt_k#fChwdBV&Uo*V4c{aa% zapNl`e=BEct6*sbv*X(nzBbj;c5VKS$>KI^o_2%MPG|lu&(cQP(hsJkU2*(9$)!Ez zCY|>A-I@G-wWWQ@+r6ti-A(*I$4YC~ovLp* z73TB*k}MmM-}%DpRCUNdYEbsuRG?O)%uhsM%(LuIU|EaX&YKv4@#M0J%pFJjvYkSK z$^U*3HVO1T6iBERm>w&enJxR8w3DzYFndxqcfDg#&N~AYT%dIxp%iRHmoEqkE=`s$ zR`)GQmM?4XcB_^*7zwUe6UtXb`B#h8)|>^`Bb=K8oqZC@*E0n-i%T}*x;FF6x0;+s z4|m@73T%&+?=(1Wt(I=j3htfkeqVK-zbN0QtmuLYdC?0Ua8?}dZtQm2{S_2CQmv?F zds(hgacnB|{ozYbTcH!ric?R%9nqI(fkNlWFDu=ITGA^n%3uDHuPA8{y6mjDirYDp z=e-&bx?bJO&VCs-TXB6Y1pFu>Xlwz9N(jq-Ev@hwn=njj-~3RB^>+nKN0=B@2F)!Y zGOUEZtn4G%C4ME0ydzAcw1$YRBq8h}ziEcZ=?(L&c1lJk(0R^?l4YCTVQJOD7ge-g z2h=Q8{U=o7mBHXB04890)6HeQFX+v%4XSA1gj>3sZYdDqS{B$%^h>7APl2T6_L(+&F&{M?^d;=1tqHlsKc-~ zy8*H=>^)_~t#2Y6j}W(~s(jDdShqwxv|wbGhwhf4JY;TttT3|W5Y{_xK4+rBI&MsL zhI~_;B4URk6`>SI&3Dv87(aB0zH;LV{m&1JlZ-l)R7c1pK*%gZc8>@ZiVdyYX z0i7;(VFJWs9Yz}_DpX=3bmb<@CF(Q!N+h&I{wYGD5@0XYRCxM#&bPYJ9ZI$h^@t6n z$ZL`Q=IWXH%EvO4E<=>8^s~D+<}}P8RNMz}^Hm4| zD=|Xr;$-+1_b^54_#>1)_9i9-J&Gf@RpMYdWVBRdW2px9gV~kq$t^?Oa_f9Q*ZGNs zhQBzoA+*WrL&y?>*%MA#ggsG509p>plUf&5;pInYlc>a5sv*#Z1f`fPum5p&-{EZk zi~s)|ds8)9YE*3%d+$wE?AaPst6D@5d$zV(MJYw?8G9?WY1OLQHEZ+B`@GLN z-_P%Je%HCa*YCRg>5u%87|+-9etSg4oyOYWk>vc5=?md;L3ts8)Qi3eTlFtH|3pup z#u)eBufXb>cd$%gQRdrG%eF)}2OuMntEarKz8I z*?cB=Q0cRXmpT|kgTQ+*)9K}YBFIwpY*3yyS@d>AwHE@PB&Wu^PxJ*qj#eX_s}Jz- zQa-RWTzUdPrxGr9>g9!&C94nd3J8WBg;*4|3%fNq+=QsG9ME<7J1F<&*LiuVNW6~{ z=J@UJb&Ah;Py9szkVK`!3-a=lw!fDF5VqY}aVuD|NbK`X$fp~8ho}d&pAk^jQ<+rx zs+-Ol2T9jBN$-MSSo2NogNh*5ZIMQ0!U~o{wL=NlPfcFc7fnf$1vmJWT;gSI)!FlW zFM0<>Rq&$151?q2jMS0CpgdW0yVvDsrmYY%m~5vyVaXTy_cArOmjV;>^9l$dQ~6Vr z5iVWfBW|M1(=05ObHT=NA;DPROcF4pPRMk-zT4)~%QXP|`}ytP_^`bIFI#+=?OCP6 z3$N{fo_GFa?w2Mm-nb8-N1({~$>n&+W${fX2OyZ?D5!M$Q2236kIYrWMV)s&K8e`T ztafknpht^M_?%?*=&dUm+N+qNBW%;t_US>fBe~3b7c#7k;_kJJ{L;QRogx(oDqGZw z5k5~@G zGGeQ8?Gy5{~qKFDuAN!n42qDF_O%FR|hZf?Jj<>sGR#u(&;~l9PmmKU% z`kNh+P&?MQ(ctk3#}g>Y+YncikCOFq1au*c&s(A+bd*v9CnUgpn8O?f>b2@hBnWOx zPyL%5k4&QCX0c5GaddWT`Te@?2YsUJ6|tvJ$n+5ESGNv+ahU`YWXai`$1&0e3zYz@ zgTX)b(F$br4^On|qqGSB3hhrUzrJS$et9F6=4m&WBIxk>bd^lmVbmN87a^?kQ6URLYMSgn%qKNx0}k;b*!7l zD*8sZhfY2uric2eMj0_({g`9Sx|dCGUHoSCFZv@Ba*m5hk95^=;DW+mCi;4o@x*qg%j}3m1fBvU3 zmVN8&XaLM$y@#SlzpG-DOPH#K8pIYeRlHCdXBh8h#ZnHRXb zp%8XEgwa!=rM&u=`117_NfOzY3_Yn3YIcY6D6KgSW(EwVNQ&Q9 z5iO-|ic#iZBZ8xeZE|T|`=Ab`ew1KsD^O$-^*ePd*-g)Sm}tzis=mapMyH=QoaXc| zz0G)r#xsJkwO_Nf9E_8xMH1+dCekU?e!u_ypcScA%)-A=i>6?$0H8`!5^QgB_uEZA zP3HUvVQD>G5p~Et{L&9$I&3f8UAXw&4z;|THeq;IRic>$hOxWi>SB#m0&|th8y;mC zn=2$gof&)Oz@&=N!DolaF}`V-mq`U=w$wyDXgS4$xh@hs*4XlsTbGrF5po_fg5WYp z;Dc+RxMbyaAdnFW6knHxRqe8D`hu=2;)!-KyR5jYQoviDam+Ia=F-FX8-TAoCB4Eu z-Wf1OC>Hf#QUJpxr7|LHEputecI!AkqcLZu9U3|82TsT%D|S?*D=rP?ua+fsIEC_| zMgyLDtuQRnD%0ii$9g5-t~_D`$$m?Sdv&zJ0;E%sE$@qU<6ULFu}l_nW=%|p@mjsj zMyFcDR27q)T;SA)NQ|>cOv*Z1<&vdSi#PEMD4@LKFoO(vFte3h=JoTQ72RM_novM> z@=rdGGqU7|)=u@Bcm`P8XCx{6xSEUgXG3+sLejgdqhB&_ zYQGc^QRWalT$iOtr$@27 z=%|!53^(<2=?(2EUKCX(Y#LUkPuhr2Dn6dvG;a4d{Ny=aV)by#bW9?>5}sJ%^kU0= zDLuZX#If9?X3K)f%y@d8>eH*^E$Oq8(c0@b6`_+(NZk;V&iijGe=~k$pqe-7*Ls_p zz!zi3lVLjC1OM#&YTI6x!OY*=NVr09$4NKCY_j}qP1%bb7b^zy*^#%kH8nd=Ju=L{ z@4l^TIo@##W_Y|ro>JfaaMvRt^w_p`hI-> zS=NQcer!tf&xgPL#xkB9m#4Js{48@^Vz4|LNohT<`Tc4?!}6+cH>K_B`1e2FkI+;s zfyiDkMJAGfKee6AdoP5I(TYerwS%g5FH|toip(vwlj+Z1xGbYJMcltGFk4f7O6}(J z-jA|kw4wWw+Vik>KgJ`|hUs@|uk@e&xL`(GHfUO(qR2r)LZ@3&>_iUJ#xm_6eo7mD>V258#ONUYC2izI?P1n_ zri1kFv@fsz9KHiGIm$xQM?*!9aw)Rbxd=gj;Wofx02aWj4L}1-@Kk}}{}!N*PtFdG z{`?z(`ip=1mjJbKbn!O=g%hCG_l|M=)8gL6;_jaxJAeM-pLWmZcg~i#55H|4{f$7) zZJjLr+M3<`Gqdq$cHzZD{X;6a`3pfpGU~H~yViBi7^^AUNnpnY(eg9j7>K>kIADC_)nr-Tz zZ0;GW=^krnAHq3MpTGR599j536jbl*$F7Nj?&;jlsoai9oC#IlI#}7#|36Kr&rLlQ z^&Mpme}PbiH60~Y&F`yPb1PbM%A4{_>;BC`#nujGmo;XU*5`hxepgtPUR0e{P??@r zmXcGJ_O2)?w>%-cG&!r}FBvMmC_bw+F)i=^Muv*XD8|W9ensui^IKf98|~BUB2x+? zlXD{zGs6= zpZSEkd55@oqn*8io!tX)ER@Z&09)r5HjbW_PCgb6FK{4~xt*tpjfa`FyD{#|(p5M5 zqgr^e61q?}IA7{jE>4E}n}rha&ft5V_BRXlw*aMY?kMOG#_W_pXBSIp9Zi9ZgjzNl_&@k3L3(xpdNzT7@=t#YQ2#=p z{!@U$;ZDIg+zDnc}=QTT{xJ3FY2y^gqPEZqX_^8GEE3#@S@`} z^BOQ*?2Tk^B7b^UxKR5u-&n`?fIi=R9Y=3t=%C=nY?@a$`}Yf>Pd^f$-%z7_!K(%( zRFW#4#Z*|uc8Rty+j}&hG;7}M;E{Zs7P9S2yLf$HEM?m_>8>i{2~**luo3O1dy>LcJ9sY1_v) z1wDAS;cmBNuSd#tPaW2J>KxF!l#ecQ{$z}|v7D?2++0${t6AUXyky|nTR`o0s9wrC!3R2{x z*e`}l71*}p0VC`wh@}dM9H_;98Wvy@$ND@v<(MjhdUy`L*-dNm;dy_1?rU*F_#+5; z*RQZtg(+<=r!?=*R@qDh5z?jUzA^9LmeL#9k?m+BJnxvkR5 z-2uk3zUy<#3NX#RwXR{g$AS^3blYr{ex>A{H+< zm_h~Lz{cecPz7y5{U`HMTgGW!V-iqQEc^*^ycywkhpSG1cZfA~`9V8Dl=?pQ(M6qm zoKY{AOTVF|tI(9K+qZ*h>yydkS^BDB-t_w~`8?-l&xFL@ zJ6*`(;9-?@Cw#cOIIhWkTIFGIN4SYiQ}Xn2rxL)>>3L!yXVzz=qQ<+&NJU45q}WF* zD)|RKztCac)3(}KkGq}+GM;>+F5+wI9(a3)X`yaK>v+cWq z9)g1^eIXiW5S?@iXSYB%V!}B35aKuAa_?^G5DeL0eay(mSK( zH^~!Z@#rnvvvn+4RRu9zL?GB?0tx0(;NY#7={drIx881GgM30zf-Y3X)cvBscj|7|+3Qm2EWA#u}IszuDW`Y=4gH4r+*{FD13L>b+jHe&7(>XiB0ht9)mPrSc|GeOgn zUy#Q|VIMC@PWB=E({+*|yjF)g>!WWE^t14@oCJ16L?nqHx{g?X(3urdKw{!-g`A>A zI5s~d4gJnDq3UDOkc$lN`eev@Yy`-&5(unlf6S!P$$zvoX#VFA>Hgkao*;5GcfiXJ zK)|MFGpE#2tEPIfJ!bwROzr*kWU&WtiR^bZo$_xwcNI&`4a$-eBC>7aCc}3HR*{MB zcq{Z)O`~HVc#s4sGLSciu>3Jl)h8HD(AJlS42~Sny#X5uzCmi zWhS?M>JSz4rcCB1@#K?TLR*D1#fN2fA|jNz@UNrFiab#igX!oXXrzM;btk-^G|0}! z-PqsneT+I~Frd7w4^T2wwMczb*IDM2rYAn{=imR-E2fn03(q&PzLr+`(eG^uPs zqLx?c%mIA!_cVEg78(;c;nX%ZchNz{sdrO4+Lu@#QFe_}2tFE^ z4i3;5k_o#ERw|(wPWiUZA~bL5Z)jc2K-!M{f}zh&W3(Hlt^J~X{Ty{BwQ+GSA!D%c zz$376ol{%PMUt%Ia|Y8F2+d1jE{_nusoNBu>rjB`p0Zi(FIwXW+9?O>aSj1@d|n;= zJ4N`|jHkzq!0464lf!;-iHbI0^96?s>X%oD z{JR;;VM?y~37X18a?L9vHBO-#c&%M_ay9T9wrK=JfKjF+e*UhwsK__3C+4{wnlSfX z)y7=qgnAHFCO+UrTX+S*3erlm_$<+!63dw zbnT#5<9pm%HP&v{dtNQR-X0%vxg^T;RkgO=3V>uKD>zkrpyNRp0JH&=BZ_|1wx>j7 zM|-mNckquUK;5y{uc)lj)UZ)bijU=)4|00eT5pkG1pnlg2LTkd@%*UK?C$4~@Owuh zM zr4wu4H>V+La`^-6Wr05fgV6xX7LJ>i*kv;7scnuGU$Z~Jy%5r-1)G7g^PS*~q=g^X zpMbC0dgGHWe$2O86CVYV8{fO)dU@d!&@Uo+s|tP^PxRvCJ_rl0T%ns4dUb8(8{X-L zA56;>M9g_av;()K^1!#+7hmzYWlZqw49Rb@`0C&%So1{k^aOc87!+FTfj9FQDen#G zaGAFaB)=VER}jK7?Oq+OJtO$S%;vGPXvjxF%F{g(PaP0b1&oXW{LY=+B$*3<3RaVY zhULNV0YF|DxH!m@bAtRGD^IdsSb2`#BcOz8CDcEk|E?_A3jxrpWiCa4SdV>(@q`D@ zs*NTj(0avqa8k`mS&+at@cPEbHL@7lp{&ndAO$|fNUmE(aqBZBy|6ln$T49WrHU*t zi7fPuEKZFq@ug?4i!48lte}mm5{qIGimdjHs!xq-tdDAjXt$h3VQHf~#G+NRAc*Q4iVVirzg7HMOb#bQ@YV%L0Q*HdFR z>tnZPVs}qt_h{n|#Nv)j;{N!?ou849c=pYcvo}b(x7OlsZB5_W`@MBcd+Y2M*HdpU3?zf@0WN|< z4Dd;jdjL!hMcE#JEj~iY_s&z*C~INZ%h{9*>mU#?#gmAx0s&%U#gmG^>$ODck(T(D zTl-;d>hlQB`WG0Vv=lns)YoSz$4e324(YiDuuTL}Nzl^>rPKf?q-afg84oO-hjtj2 z;z5M}S~d+Dlt>U}>_(T8aVC(JCiP%H&7Ur#$SLYHI2|}iM?e9B>JXRnNUQ3m(m$t^ z1(3cUrKvlkak<$8Jg6W$%OP(u#oen3xNJ9}%gxN~&+LBi&QtWI^jm!eHYPEhtZ6@* z3OYO~PMFwY)}IE-$3ZFaOBq{4`lB1S-Oy}%5fphJwCk7I2-I?E)o!KZT4Diig35PO zXUv~?U~_4<_`p0GGfMM4KyrM}rfFg;fK(4aZoUW<%+bVFK;N?xa8&@s;vq4s@Ff8v zDJ)Q+0`hy52r2;K7)Vj}NYOZlraQq~aWB;@U(_EiF_8a=xImeLJPM1?EP$V^1AQ04 zdP@Sfn?t04yV)9qr^iaX#sM1vkm~M1%UB8S!0;3Vh%Xl5D+nU%IXrh5dEp-5@n``+ zf=TD51nx3d=tf_pQUni{C=T^6j*x(v&*jV9B_|MsW-X>N0Pvk*WDKi;4F2HZFnCl> zhQ|iMjm~>x=lqdsy130k_q#=0vT3>iQoqKcSLa1sz>++*lEO%M8Gsb9S?n5#d;Sh9 zGfRUm5@2E3cx=#Y1c-exKP2c8etT(aNm0ON5j_P#Iep4E)>2`$()7msOyYuf^d)Qp zCGXW>#OK6%0(k7BMedODHi`0X9$3cQ`)oB>m&B(Y`cK_vpEgY1D`4>(KY;Oq$raqo zp*ncuIq<0pykGR7XD_k_bVHGJIeuIZ36*2QX*uXZ-dm!wYEh-RfV&U@l-S zt!yp7VD9t5O8KqNSZpm;plnht6Mu~C!mperp7_T(KsTqZoEZGmxpG6|v-<@APC|O` zWjXCdjg?Dfsz8Ifb0w2nQL;-zV?+Z!MPs={BksDc^~=T@^TuD1O}|XuLl=P+0?^r@ zM^~%_&xVJV-G@MJ$A6abzQ zfPUK}@F041cGTS=$d0?bIJ@x?eW; zH#HBtsA7>s&>*~)Ao7zOG9Odm!sa`!q>?KyYHsJMHiqWT3+VX;faS6ccnQFdu7e`6 zkdIj0gVH5yA}pd)B)Sut(-}DjSI+DLWY%k5Lh;YDYWwT40O*AuULmsct4<{qfb1hl zH&HW|teN88Tpr$1)2d`MwxVNWt7H2fOenfrG_!MIGlTKQpX@k?j1Z^Nk&+SwU|&de zFX8p^HMfqa_dR&r8Q$EzVAhxYvHS72CJ&-|u6<$;Q`}n!IzdE;2PB4Kf!|p9vf}G? z8(RdHTJ+NEGd7xRw{DeO0?Pd0<(B|=Bs_Z$z`oba$u{WgC*V{vK+XDsYYZyoUJqid zbMk;PHbE+fQkcEjO5EEuoA?(;z4(tyEV z!C56>OAWa+NHUNIl!^hgtTe{+YK%Ui7aur8a1;E6=W2lV3P4Xr$~fEzMS?*RMv8P26nlR~|2}!2Owe_Z{MYyGV6<;^;XIJN*3oxn{s+=)+Fbi+y z?TsQLHR6*d)c~n=OfpuW*3wh%wnLR&J_jWf=3(*e_X@BG!udF`ttjG~Uk@3nIys@bQ;Pk!JVsm%t-iF#Xo?4Fv0)i~++byG5 z_sI+RteV_x#!^OzCd|il1`C)=^-R5)g;!+3lli_9x70f^)w;1#e1WCRvi5tJ&f|N` z`wrzjU`pZEgk@U5va{x)usM3!d4ijEZ2ivn+ABc)tM8zM?}P*2=@J&2zQ?voLdOLs zFw)vTa36tNcu*v z%Tp@|j!C9`GwOHUg)aFjFLc^k<7aM0OQKtf*Ga3!b(dP*m*}$dsdA=#td{XS76}q? zZ69%)IG%$J@pklR_(ev8??o8A+c+p}NzH^IOB7ghou!J>9owoTqs>%cArYE&3fCK*x=-%<;a*7%lu ze9g4j+B`}fPbni=Eg!qF1xvA|x|IYQ-gipH+b7S4fdpTd_wx1Qu|2yhOUOt}x`h0} zai7>Mqn+n^28-CLU8vC}-)?JI9GBgWFxx0B%MhgR6nwOb<1N+&Qn8CwGyhyxg0(K>a#|4`o2SjkQdtDB?Tu_Vkdw-4e0xr} z4Taf&_FEmcGL9d?PME*@XRan`!6u&UK;3uFcT28f8{N5KAvyKv>peV*eHzOh`nKO5 zv-|j!`;9mtn84f23me zOQm3oi$r?y9s2LcIJ9uiOWx*dxS-n6?lZV9ONwLQv8l{FKk+_e3H-U`3BCuO@9)x~ zGiZp+v7y`P@co?02zXt@9z2&X1L#Q??}?Y&N&N3|IK{z)+B%$K zUl@Aw@!M&6+%8`3MdR7IAV0jtnBnEIO^1`u3s=SE_$nRrummSp{gL599L1WWCK#8l4y?qSy5D9T&RUHdr(a+Xk$ z04d)!V5Hr($TPpao}ABwP+q+JB#+zOVbEYz(A1_ZCibrB`PM14a0tbw&W1L6&QkFb zX8OI$VJVmgDg4xI$ZxGsE;U&ty_qL|(WF+I&6#KYcrAzU$?{Y)U2Tq8?Ng>!rY#X` z%Z^Yo7Nty+{bf{Z(9^|KSRs8Jn1XusAn2egP>z{Y$mBrwQRuZ+fCz+aCgcNFO)mDM z!SkE1gKyt=RY%A7;wvQR65k>I_#>1sO9bz58qdc#gOO*GfO@r^edGoswfJ?0(`m3! z7s}5pdFHt>5oh^@+*Ro5kDmn}D~#yIN3$xWttrjLMb(NNv^fbr-J0u3+F)tG4nSy6 z7W1FBE(YD>#)d*P`gn>9?y5)>QXUM@ueItyBx(l^eit5}n~lncGB%TRq1UUnI-B7J zZX%RF^aa_d^{X+8J+DDRDr|JmNku|6{BlrE_b-Z);V1|ptzqIvd-h(Pi=y=OOkGDc zUPBvA$=i~0di~$h1B5a;H3#f(=lYiNi9&+gi#XL|4+}US?h0W<)+PLMK<;-Xiqq0> zzLs*97c_&)MhJH=xwRR9R1>%5EAJH#IgNP12ll}Uzk#&gX6vn>WBKEE-={o>IYt<3 z&?2fQ!Z3bN_qkWw8Is#kE5In~p`P?Dv*Qkd;PyTg<3=-i_-otdHv;hPW>x(t2{Nu} zD#fQB<&BLo)U+;C9Y*F%4G-&bEW&N;EPO%&%31@Y?paZK9PRfc5(kZ~zk8MEyNEVe zFfF2l8sQIHQYyT#XLc8^WJU8EyYMZ{tdUJT2{@kYx7^TiRLu5Ln9V6%*pzhCLY9-r zQoUIHuojcf3|L{k&*HwDQ$da*3?sBRvCsBWI$InK`6COYrKNu@W<6oVJYbi4V^=~H zjq<-1U(b!|p`?x8Y7w=>oD+C8KHDP-UnS&bt1(D+ksPVo8VUN9m?rU5}O}H8zBAB28Z-5W*xFQm=mMN4xI1Y z%%;+bvDv+bLPm#;ww=j>_tS=9md(7m^2IUASM=MFPdHbrZz%5q5#xq^wqH~u6z*`A zW>rrv98z9|!JNUtpRJ8|^k1)`oISJi+`KO~gGtII>FnMVv5hG548c3>&6Dy%EF(Yi z1fLO_&EN^NA`(gk-0bG>K`xCto6msq5Td1bn)YBUVE`N3(&0P*?4r1v?bF{t^LpiZ zodb~zgEbb63WVZXw;=Nh|1}uYbIH7iXd5oJWTdn_+#S2uO}83)?Si}_M`6-bM?A}b zU{U);S!e+}TctV%(<4-7bk)mFd-U#*7$pxy#e4Igzg^E$k>C~5j>0ZlQ~O|ghP*st zdO~a%myTP`7i}o@#M%k$v7yG>He4s`3NWz>JlSY`Qtbzjhpj<)%Jc6X5G$E&@Sr|qKowY zD4r}v-ri*f!%nxMqQb8C<|FQ*Jks=*8wV(*arHevO9eRe@r_X2%k34Vb1P!0T2GP> zzEiKC$;s7Ct}(fp%s`AV)N_E9)Up6OkyO>eIbGX~?+Wdroqhua%@5KB1F*a|9wT0O zD;VNnWiAXW3c45M&e-^a_NlQ%mtg|m)Q~L;mFJgRzPB>9qa9`Kxs_$|pR^=~EMhHsS@x&l<;AWgzuBNbEo`*0>89 zcFwvW^NrZJ;p=3%9Cj;yv(u=9da5E^kymdzeMW3yMdXHgRaP`;bA~{OziNk`*XCi9 z>4^8#XROJ#!}ppvV|ObsgNZDzHWAM`FRd=p+;Q%_Ycw`BRa@8n^x2Ch^MyZCb!`OC z+(RWFFH=v~_bNW~eAD!JO=P;^OXxGN_mUQyM$?Vc-Os#hnk;s`r<;BdxcPQVJ~{YD zLg(f`+4SU3?R3lUP`7}el9uOF)3^l4?e%e!<@KNGwi^QXAOa~Q9`0f%p^`g_su>9u z#a-qIb4TBivLZH~>7eOx4|~{bMeZ}x$pZGkC`wtwQ)arjlsqC0o2{wqW^j#*N3@-k z4gK^?k7$oa?2Bd_=98IT8L(%3sFW=`&1|2t(v4^0n`T>1(b<0OFwf-oQg(NZX9tXX zJm1zd+uiq>9kc{LPwken7fP8Oa!`7nKG|$9Qa3y77WO>zr<8-l^z4XF&-3i#W`{>7 zvtI(iUO5EPj&d|}qv1+kc~mWqN}_XPabaEsccgK!*4)>W9(N5aMY&R(6Camsyq@B1yNM#)TPFHe3l4nHo>l7J#eQi)8ko{4 zb8r8TRt|qy5D=ex5fnw44xbH4r~vY~kqEFLyyIS|FXJk^gZf}_@N?w46q_BOhc~D_2reMarbMXJr@TO8$_fM# z_@VenJDpnZMi=HXt?s}7wX>_WaTWkuLtZDv^hCTO@gcaytD zA(%iI<&GvQp{q@X!c{j1)W=eS4tJR(bs1!QTjgF8>a-07!GdTJnNe-6rxLMI!1uB( zXExCU8kp@;@%F7pHr$x(=ZKCR8Dxdb<#;F<6h;`0IF&~r7u)cC+~SR<;~<58YlShkqaoNC@WT*g|Q3FDFilt5NL~(;9 z9!FCmI#D@wq8y}wQJvx-a8HOtvki%&aCFmFt1<{I$K5557OlCERM&tck9VPi#CRE_ zlqePC6iCUd<)zS)p*daVNI)n;5lO3{q0o-%L+EgH=_+)ga};XpJJI#hNKCgWNU5u$ zv9-9{{G)t|WVF>#r>z0Rlp`9+Nb-OeqQwh&3Ic1nDjBXSYA|+tP%5rUM!R=)`>2W{ zXXI=28;SY|LgO2)ZAms?_V_hR)^azzRi}TVgAt*W2{3@X;)rf@kqcc^@+;^y=1@#B zS4Il-J?1673Ddy%Z%3(1k)prJMlJSaAQh3LeHq-{s6`bmjy`m1UnivhG*T-aR4|H*>rF|QC)y(6{E3ur^$%XDf?WvgL+Fm0Y#wQPOiE4~cJx>~lQ-Hsp!)^>mtI$mSjNQ5q2Ya7^)uTq zS{j%GP}rd>4Zfldvf@j^EwLL{m7Qt~!5wA-Ma^=?s1*)Uh~2>HcIO%CD3nPj%5n5d z6A}6Me(y0Iwtj$I4ncap7;>~NTWSdZxDT4CTci-Z%@{@fO83_B2&zwaA-}IupH3}hSBO$O`KO0*V`Ixmx>)K*vzCcbtbsZunv+N80D^L zz!b$_1JT-1*Zgi^^kNcSF`2FV$mRZ=8PH6LI(lZd$#+s8L%OEZu=Hah3UJU`axSfA<&YA}?J z_R@s33-^25MX4tbISd0{kr{Vkr}-X|rVi?IzL+*?iSVoGZ;hU26*LLm>%Ixsj9$N( z4t=B2l{3Q> zL>P&7wNzqFv%ZhDicMrx%%V?co0ANc8A*t*roA$HUoerpY$3Y3Xeu;Rbs>OrUMYq4 z&1T&(Kq*F>yN>7ceMMKyDIZVeW{q~k=JQHtJ4WXiG%@8ZL^T##wN!d`b|j!TvwA!8 z8=2-g((}=;n%ZBPbz{u2e2~V6%t9KZ&5vh0AYEJmN*$xJaIc`K8ce@oxBshe=v3pT ztYLUpcYz&A-=yxl3H>ira|LV?VB|B|=Hr5Hb?eca!(rLNfY$_lz>3 zduzs`g$jq>q(!5_Hpzrx^b+4fF@eSJ!S9`7Po@aM`pUXctP5Wzr}vvWhVNMPWLW6) zT8i$Fe2Y=#3P!7n_Nz+XtIA=kDsNX+ z3vsg3sya?~n!?FWt6DhO3H(!s`ll{Vb`triuk_OZCp+2yH1hswjFX+-{=~^nW;ofY z=O<2fvcSnse}3X*CnQdG;#{*9S+h}Evo%_?vtP6KUUR_7PH)$o3fG)*vQy96k4P|* z7VnuBz9H_XdhrMMR1oiIFq;b6tv-Uqojs}#jX3y{3robhDw}^z`X?Wjl<;)luEL?d&;}r z2dE%|C}`nq zZd9QW#!Usy2EhAR3&H*4n{gkdrbF0K9LHM$@2{^*^I+b*CJ2QQ zB300+bzGl{#{|K5;>Pr7LBh4z``)?^Xh9kZU7E^WL$R)*eQ2IhARntsRI$^*>#fo> z7i95P6BwMkkc=L6s#hwWj@`LI?cp)$K$?QqQ7~tB0QgJT)6x5wNpRQ{bCf0z>ZcNZ zsLpO(?KX;b=e`a`TZMHdY&U~@XZ%UjCOB+t_rWuhU4!_Y3>}xP-L=_l)VdKQKnuU; zzLVEF$;cj<0lSM5bDmm$$_oHvso}ZVztz^)EHUe4T9EQZS5_<@Up-op8-^6Y1QGh++KJ+@Z+XfhqRRygk7K#Gw_fUKIW`n+h!|W0~ zkg0C;b#6Q4&!*s^=taDMYjKd2TSR{OmR5!9$P-VRa1VGL#3+7G7(jpt zJ5Y;1KrOl=#rAI~i`;l=g#BQRU+#K(AEE~U zW2oKPatm?CE^PJtLA4lu-(6yDOn%Q(CDHKm=Jaq!YCCl%Qm9Q z`^UsI-q!pWtvZMfq06JgFb%*S3V>IR+{nmblpzdLP=)-cg#^D1@7N1ha}O5R!LZSK zZcPE}nU7f0@M_)jqK$r85+1v1L$X_a2nc;bVJ87BB&-z}S6Y-e`7!oB=Cw8^(9&r{ zi}Gft781&j31mT?d2j!`_Cm({DzcoUE1hLpAYn)K`t#R@6p$9Pmg zI`2cWpSXr%cGG*$GJkEp<9sIR5S3ngj2b;Jn?3_+d*yQeuIfGetPOIfSuY|CQ-t}} z{_@YFe%T2LcN7R!#rU8`UPdAQOe|cq-n>Mf`gb7x5L;me#_pjrYj2Do$v=ETX%90h z!o}Q!MF8h$T7q8D(;rLDtbzo$3BmUfr|I^D$aU1!E=km<^A61JfHp?(#wk(D>!#CW zGklk1ggnH6A4S{mTbttwDhl(^4ps2TV|R3&qd9ycO6uY0#Ovsab%<(L-q`r`8i{?? z%~H*dIW&SE_0~Prbs$LuU$nZ13%Ca>juQS*3E2$0%3yWt0T3F&e*FQ1K|Z1O9e<_? zAxOO7271R)R(j-I&>e~OibYvBQYJkR^{>T_Fsk4Wc${VQ0{Y|+p4k#^CkZ3xgRWG% z$Y^;(aVwwSxZ|U+q1dlLm)jL<@{!{~G4vSywUKNrhx13s80SQ>UXfmz^YPuOk7jkA zI|GI!6)A-L-unIm%mM=7PfWs|uo&tj^21z@gbkL3U`Ix3~7PvnMv<7wbX(v&z`HF^W#K)V8{_hX(?zBwGfxnl+pgGoFKP3TWHkw9ya z-$y5aGoB9Ut5S>XOj{bUQ(38UidBk?>ga#yrKW!8YN~5zh4;WdZ2)*{JqLduM9Pqv zIIurEZE9Rs2^rVI@YaC4!pZAE6)bj zDE-tUQHqFDlK7ApE$7Eu)ql5%*Jxb0pc85lz>a)N)m|b`J9+6onvLa!Ybk!I7uc=G z#&3;Ke%BM`GHycy(d18jeRL@1g~Ueh#K=18)crUp{UpC(pob^M_4Zb3#o?cYe_QKgSMf@OQ9jbL8;G4^1N~n zM#Q(8AAFI%xO_0G8v)WARb+T2{8jZ{i}0{>mlONAuDbNYNkj9NYI0Xv--pu{FRyB* zfxv&(1>FE%U0hvY^#7+W*#3R6vUiFL41Vli{xdMxyZpat3}*h38BDJq{<}07|GD@7 zSsDy~TmN@y(EWF5F!fhyFf{%hR~r1C8FYO8fgSzUII&Xyb*Xl2v1W9!XJoc}a2z{0 z(>yfO)Hm7G^R>3;D=s$p&(ff*Yy97(L1o*}=a&ADtwaB-G$?EC|5Vpm(%4g6*Hu#0 zQurC0SJ_(du^ty2{JS(rs_y+)W>AUC4AS3MrRRObWd^v$ATg)x|J@km|M$iKRo)Z) zvHRZ})ZXvg+;W;DQ{G4YBQQWGWaD}Ro79^BYz#tU(gLIZZVcYM4Ed`u@C}Obd4;hH z&w7pv3|?Y9e9_N*(74@c=NGs$=|EgvVDJ747Z}*P`r0~s**HB%y7)bD^u{#?xYEGF z#@*D`(-hYjAfFl{pBX-O(u*n6iY&n`QU90NfX6*W-@*kqH?42(B|2aMVS8t$=>kZ81)lFrT4JH30HV~3f!NmsmMHG33<#+^farq<8`%?cNn*K*- z@XwWL=Kno0{a0h~*S_?BtqY=XbwRv-sx=HoO@bepBOm;M`M*y`AFS3yxp6DG{;%n1 zq5+$H!Hljn+5a;g{YOC=%?c99bEHaoquQ@np!e_TXr8IkyReSJ2qmJ#=Ma&ye@;hF zufzuv5>4%>|2-Y;Ga(|d)a?PPBQpAXI=UZx|BuM(;?O^)qvvin_8bb0kab3s%X_8G z5K|uSZqbM0nOi0+J3klX&s+82b=dz2>&4T3^8_~??f8?kJyEV)ms)WXu4u(o{4ie} z^@cI~<}>7b18zF{5Kg7yy!tC5TG~IYzSa6H689^f%j6=j_y{*0&1z7UAZ)^k-y%0^ zN&Y59C!qUMR7ZnqEJ5?>yiTz$IlV=vmf$*4|A#mJU(?Z|L|kwaf+q@@imenNQ*(at z0&_uIgD&!rOx0CdCOBIkb0ls$nnPbjcJI6V&kuTEnTU2p#w4r0&*+j1GXFIlU5++j zzBPPD$ANs3Yb<6(ylY8eib}pW3Th}mme`G${h8&vHanHQtLQZLn#>54iy{XOB#1ou z`BwL>zsTl##PJbsc#!scN<#eir;6}+N>gzi&g4gTH;esSeG-ZoYPfVB-<}jp2!mGM zB=CHwp7Kw7&zyG7r9zfqTZBl^J0gyQQ`l@(_8mOjQlhkekfto>Z@^s2^kG1^8cLDA zUHdK3FwO>6+&328y>6CJGwzh@xEfYH|0p! z6UWl8>D?7Ce|M0cC@jl+JvwqzKO*Na^<;ft)dQoF>2m924cEB!k)~hCwL#br4;a30 zW?=c6PS<%|p?vx7!LZmn5Rj`~LU_yjmW?f+tkyxA?il@*xOGY-{yb$j{h6uEpTtJOGUK(bisgqsjX zw1BY!y8b!MGcj3Pz2p;wkG}1LG0NZrfe!lbD&lju#@dgTGFh^n8P&eUY)vln{ttNCR2;y0F%|8lR3#_e*ykL%Or!I0?h%fnG+ z{;Q)2W4Ej08HZ0-f4=$rzB*Y9=f6H(O>w(ETQB-_eZF1y`}$(9m;dJSXxi=O>h#yA zo9oMy-?;H|(i{Mx3KoxkF9@QMgGbYc1xxG&!=iIQTq^CvW_u{wp&YPiUpu+~UI;5` zE<{tsIP3r8qKJ-lJw3wm|A zg5eWimf_Cp8X&F2C_3kg6VUKfEa6e{^3|Lbkum9NgpvZgdi5zx zgcu!dze++cj@O%BFUalFjG_MEn-rLwOKVEGqFN}cz}|z1(fMHWD|#0@ZEoFVWnTZU9M62QWY~l_@60Nm%~*Xr9A-I zL=M>mZ!<$#~o z_lR|?#)q&QRZYYdDEE})}S_C8hsKwvjOeXm2c@L2%xzZ5; zBwB%%zNYPKTzL3NGKcrE-QDSo$U}@Ff}5h#Lm~V|&LEGH%*p1L#EkXFyaHZYe9_qT zNDlNO$Qn6h&7WZ!z+72MBwcEfAdwT8yaIvJLMYr2y$IhsTY$r%6 zeN}(K{wspKh&#->UH8{^DZ)LhFKU6=TPhu~1c`V?SGW72P6w}9f|lfn{~z}5GpOme zUG#lOfzVRuRYH}fg3>_=5K3qQB2}s&T|ogUDiC@PMd?jxB1q^}0U5vn#YhM;*fz>W9dAI^QdndMdrPkmT-(kc1pKG^UmbwnTEzUr_!*BLAf?X(bpzx^ z-#rpV5_Nt@eUurm`nX^A>}AIjt&HjM&lI&>xo#X8V{^zHA0nykNkFjKC<~)ceV4^= z+r4+x6{Ld>+247zUkVpguU=kFnO_8^v?t~Kc~o1Kmu2tK>A4J%_GOM5B74pJZiPtj z6(5LozF%dAssJ$28p_i8XR6RMnUn|I)%AQ`rBHig{^p?8<2Bw_w=#iqO5%anE^h?e zC%0pq#5*ivo|^9i;e>XXRdE`61r)gngZk|d4;%$Lb+qttV`J6#-vKhsbBHc!VqI*u zDZ@kH02@>>I$_g90RWo4Z>#9H4Nz-M?>*MDy^|cHAGDQTqN?!r>J@yDo5ao)O(~pW zsk4vW9H_srvYgVdODM4SP9F1(^EWTIs_G*c$^@dUXP~xc^G~Vek4XlT_1LgcP(o5*M5cx^Y;0G#$3%MFC>IO z$F+V>1SjBPPr5HB69540tC}GUa|4F;7{ET2kcjciuy%;kz}zOayHGpb2MOtt9|Pv< zUNr0_ivN^&H~9>xl+3~E$88@U`A|pE7;ex32T~TSj9b1&OesMBjQd zIO?@?!E5-?YxN>~{;7Co_dsBRYo&>4*{YS9)9Xzli++!~eM;;CAA(jkaGW6lE|$O} z8;7Ze>0n;%=^5GikV#Fwxj4dQ%OEtT60Rl!KNH;y8Q?kAVADe@Vs03juXCXzFvFCF ziq(G=jhSp!ySGMp%7YnrZg8JW5~D@&d^CxB7!kje1iv<`-_DW}Rwi>KhJHxH>HA?c|nMNG$XVwd;S)3Fc@E59MfKv@w z=H7*K4N0O#-hLZYa=itXRD~G6!oS8yFA`PZWe$GZ1g6SWUdQehne8Sq|7$x7|i~ zxPwv$;XUL5)s#L|=C&GqG}X*-t>ss{M2*oBUyPmq;ReDy3TC_w{K;Z)If{ZlDKD?l z?iAL2D*s|>8SYJ8BW>F&?coJE%?7d(T2$j9Hcd=GC#b)^UCR81bPV zM%Ku8%9fR3SZl7CAFW;36jf0hW~E1?zFH)3T5uxv^@{Zc<0oCxsbPgt4otlH(p)0%{?sj3pA?-sHCCgySHn>Emv9%R!*W~;`G7FyY^Ji=g7QM&w&K1J$fv=J62Ml|{ARO@v~8QZ>P&{WM@&^e+6 zTT^iOJw|=Beuk>SjHxX^ieMiKCy!~xc={YRHa|OQGZXmIq3Y4Q|1fmTQcpzpXV<5- zmvK1~y)%v{(=t1>Fx|C>5C1eeLVNYZdD<$O; zACxvf6|R2hTVk+Gv=;4L%l)#yis0912I^B)NEL#(qq_`goVO6J3PiK<>{WB@lOVD; zCNxL*Huln*-=q)r%M=FbGA%R>UvwC{hS}THlRFd+0K7D)lRyg*0@ZH>e00HDQVdSY zwc}f$`h|vnw{`@0`w7azj?vFJ_4L*A?VM5Y-|1>Q+b(TVt`(AGU7h}Baz!LD|AMQq zBX`(4l#8P=jWO7%H~eek%x9gD-jcrFkEO0fDfY)veKEOxeOrC`t3A1*z4@-aqAm_U znZH(XnAcqHLlgDKFbsU1=?n0+hXb7G$p)5UzAf&-vziOn6ncqzy|1Yfz;A%>++inT zuqN!~a`-{o^T83P&d`ji2H#G~YpV2Fo{Y3ZPlT%1LLH}OdN&xYPg^xa0n~e~usrud zUxgt_67w)~Y-iMc?;x7HpPCC>VrWD7`#i$GY@UAB9PKv5ysO))zxu0pQ1n~<`>*5X z-$+}1z+L$Af^{Vk7#Bu6CU0Xb7NTx#Gni>}IoUIWR=x1Lzq=1#w02G)2kyyc1f0S9 zL(SWWrBLCAi2e@y@S-KZIiufmFB|`|yQUToAKbRX)P;=`H6#xpf9Sr$ZNlHTwbdS% zY4lY2n!w1{5%t$f$3)C+ENH+2h-I{2OrhNc9M=h{gcD`L(L=6CWbe9al^A-~G`?nFB%_h$z79g({ zmhu-;))oZ9e{kPf;=g##G_=TdvCRI!=+5=|z1c{aG9wyUDxcS6(kSvOYYcZN-1;-n zR(BQURV81DIo6!z{DpPAvii_+m3w9BbatNf(sy|mmTnEcyx05c{h`}%&6)ISEkR=W zrTyFSml!&jKI5y!`=g&#vkWzEhv8pf{9r#woD1st3p5v%I+iPPu$8XFq3<0GIo9zt z)f-nA)j~hem0iKC=50J0WAMOFh%Bo8!qR=dz6mIyYkIsn5VZNwhL#l-i0#O3xIhkE z$5zGB^$u)xTC#OtXG+C8^}k9MUfhC<|GHZ7YhsRL>hYDixy^Ti$R*3)zb}4oU-`3p z=g*$ypMzI_jOA2f(!rRNMwzZIcIVLvyyNTDEECw_&7h1lJCo;tqq= z&ObMcIXi4EI~?;nS4cZ3u3a9*T|TQ_fq-4XoL%9TUD5g7>!e*VuD>@)ihm`n{z?V> zmC5-l*K!GS{k=o_i{{!>R@}o_?WqOqY2@r_w(M!o@9C2E^tkp76!#6S_KgDeO>*|l zTJ|5z?^}}gt+@_t6%YPvK}*Yl>-@oE(t$hI;lDPmcn2K%L@JWC?e;d?J6jWf@pogly?r$*Iq#5Ae2{le7>T1g2|Co9HV&aG8Bjt z%h!$g(HR7X2rn0VJXDS0V>hTa860n=BR8gU?WsuZieT5LY8Jfbpd>+5TbB?(cI)Dh zQWq={)sy0JniOpOnqq}_amgWcFN6j+?nU|)|K^CQ7)LAV+rZ9b-Cb1hz%DA$=o;b9 zYNE47i1Wcar6SEVDu%bWo+y=jMSr@+^xS&f)`c?c+NANqylqgVvVh6q$G$dw@vD$e zp1Jm)fQs~6PAvNqxGV}DqqFo(7k#C>|Z}S4YlX&sU=HQ8R!dp6bQJCs|z( zDz0^}2Fu>&=fd&R-q!nRk66E53*(g2|8+A`+SAhYh4@eMhFgDp{1<$~utTq*a7eZB>r?D+m2&j*5pQ??F;fV>!sGm zAh3o#C>pI(JnA>5c@V?;E~-L>5<>U0^PK4&(UF|JMEyT!G$; zlz3T+(u2^Ab={PfyPvB{?N?KMwt2MYH8BZlA`ygtd?EQ=3oeMo}olY>H z>;1Vw8Sr=;ELyU7E^JAG3KQs7dHB`VU?G0~m*?)`e6YRqYYTezI|!R9LGq^yL9@b> zm?Xoh!>cz~d!7d-%Mj0`mho!HBR{mG5;&7*v$CNUBm2IhMl!xcP5SX zxM(NS)t_YNFa+BF{T$_HUm-X{u{`a1Mtc;;yQE*m zug2x>6!#}0gg@{b#EgEZFDcDyPFm@HTy^p2TdnP`z1|YvH3cWNFKb~U1z+w-Xn1`7 zGp^;1;CiC*SK@X`!gdFQ%>pwZFGZ=77U-^XBir=PExt%G&nA{hS~_`cEuFqPIgBIu zjqb3=DLu~@_Ia{%XJ~EBy`Wj&9QViBaaTGvo@jm65u)h5^7IeC?Y93;*VUF6f4`|K zzTBUfFh=!Fg)6=~UMp&Ob^1rzJ2!oMttEg&qOb-)*5BJ|^S=OLtbvU6XmY8+Ab5y1 zm|sST%4iVB++j^FS+7Kbc@GA2fo-6wGRkys21Bl5Y^d(nD>Ky&hTaIVp|O`yVH+O| zlkTvAdDW|2IT#FA1luA)WiUKULlNp2Te{cv7y+rF$h#r73{X5+(e>N@PNdo^fT9t@|nfFFs4%4*v(jih#A9^HK1p#4Z{ zB<)+sBZ&f89cLrbNcu#_BdMAOoyXoI8S`KV8KSK2(>EiTYZwQ)u?Ai5+L5e3Ar1;F zJ$)_=Aj$*J_MvePN)ehi>Z0{zG9#V#;B0D)mAMmV0)u~Eays>80kbt9til)=3eg+tZKGUQL=UW6%I zrs3N}z)SIR3_tQgJ00rObYXi#Z&^gk@b~iMRNhP3u@k#7hB<6H1`H}p5ZNxo@_xLW zNgEf4JB&s{-yle=29-Ccbg!;t?0qkxguF*hTusUNV{bS|6j~X{#uKk2Si`b~q7t-2 zQP)agib&bTj-eVz^0d`^s5|Eyy3rNTpqV731`CjNqrnsx^ANRoa8k+`iaz`~8pfq^M4Cp*HZ zZLQ8WCQzJ@yI(>Qts)unpqUn-XpKy(6C+$Rv3?^W+QW*C8qCmpty2MP``tE#``s-m z(hm9o&5tlUsW#DCf|u2U7#28~2=pL^%_5?b}t&jTF9lRwTY_8H8ZV2fyD# z?`qmDF@+4K3{<0a(_I`ARmN3w#ne`j#<*n@l*;4{*3?*}v8yeNsE5;)*Rp$B+W2jk zy9N!Vx=;DlZv@h_-#`ich119wes)a*c@P~U{5512?D1Uuh4bPETpj9AO`?jF&`OS< zdsg>F?|LgF@y{@aA8*I?&X3|t?m^v6sJ%xL%|*U28-mGr=3E4`viNR-KQk{0-5_db z{WKUV+s0VwMS$FNOJfFcLMmK8ehWe-Bq=b=@z;i|h$b1)=dbY{ehi_^y1&mhyQaw1 z&ErFG*M^56CvN-oP#f&Urv6|nE(X7E$lht(Fe``b$W79Uct)aMq^qaaDsA|#P=gw{ z^`)S_`&Y}Enr?MSiI%ASzkzGxnxIcI8|I+t!KDN$5fr*`1eQx9*YRpcK zNtteVE;LK7;Y{A91m`r1pUC-CcH>VCnrHgtc}i9qd`#*sf`Dnd7Q784id>e1Kxyb_ z+jR<&K{6kN*wv)aq7Radx1!T|p>1r6Y3>Tpzb!xxaU!TKb-J9l75o-e1Cme-(z_LD zq6Fpx-JA^RR{`eum9sR*&WeQ5b%>n0L_E7!Z;NibGWyy6DMaS4MC^3L+0&cLyk%VU zP$;OnKvPnLU8p}XqU{#7-vXJ47~zyR;={vW^&ikKEy0l_O42~0GH-RMge#Q&p2{|z zaF(^o`UmCnO5iPt2>Hw}wt(tSH%oWqfxsALg&E4Mn;3yU6+FhX6C8F)x zLv*Z5m}6vu(Dk=OBkr;^0rT7Rw1~E-PMmdkykD@6Pqo@iM7*3Dk2W!6SNNd<(JudH z(4ds%WzEM&RmcOnTO0yc0e0Ssu;+tL$~Qk%P`{y}zVuYhF&~4o?sDiQS6wgShJy5< zDseJh+$OG)Vdw@AfG8&crxQq#Tm^h?B>{aPL2WzO%*_(a#~>I-r^d{2 zBdt3mz7iP97op99ou`9dLCAg*>50Xc<05*JGJCQn#ZqV>_~hHc zdOcz8UA9oo1m4~=`rhORJ-$m^dOU)-_Nmp* zi63qMQQ`c{`|KH-`B#WT{Pz8_#kmY|E_0lJk)IuX6D_^tm*i(d&v?^+BR?y@&HtzO zS@wUzJ}a6!%j??SHxMtS&-c|W?^xd$LL!@=9vo785Q*ob1a4 zr>HvP-N%%?kN-+=UT2l0X1+_vDE_}^J|h#dFDo3owA%lN1Sc*%G%_h5I`w7PKg_3Z zP^?#AoY$-9fBKt$0iV9%mkExm7tZlnkh90j%LK>n$xC||ZyQ%XTPM$dl{e;g{{}uy zY~4+*Tnzs|WH*BDZ;Wi7+_!YS_rTfE+)>gV$K{m3;ecnh`+t=_|6Sgg*lQWtX&c&V z>0A5<_GzW6YmU(}Rn{^?YZ(2P_o=KWr=%;Zs4cCiE2)6JDTfvR-xZGVO|+1>;(xDj zc!XuSh5n6w{vRtGCJvEH=97^_n1NlG{_@2pM8_(KWVw1NeFmIQ19Eefg2|w+K0~2N z4FN!2&9nV-TjGC6pMu-TN{=~inKd7MeW--zzE|>~r?TK{irB;6%>UNnIB4T2$XxjX zSMxd(5HHmvC;|Lh`J9TvS(-H^V;@YaoM(G$HopZ6ODkx}A%*W3>Kdo3Zq}52uXF#= zo28W^GDthPyYX^0I+>4G8A8VrJ+x(5du>9q>}&lc>yGEus-^S{U5pqt0>47Vm9~EM zQo4IZr?L9yNbzgBGy60pZ%lDOD~U=so?w(lj#mKPZLi6X>tCp z-I9h@mkt|POLV!(8^Jy`9sXH(Mj|B*q}O(OgQ@P+U-ekNeb3QI0Y%{X%KwgIF?6^R z2MB_hy#T`1T)Fq*5+2K9^U98Ro_O1B&phIl|8tzNF zK7xhCOHn)tbwDjM76~1H#+tXL)^xYUu!?NQKYBoHZi7({j@YtZ+<+@#%JzEfM_-mw?cOxZ_>5F|Mk-|vnqUFip!M7~Yo4kHO9;8d#`?nniRUFLHU@7nQV{ghvlt-OJ^Hhj6dG^3&`DE&0;XZ`YtX1&;HmJiL}u-5PR{< zTbmH-xCXuy*PFVIK>TBk?<~n781Dt=xf=(~C`2NX^Nbo$*x> zsQW@~micr@@wTF90s;a-(JTqxZLrW2 zaC-jxc*>=!`mxe4s?kccf0SMSl774>{sX(x3ZW8vJQAd2q44mo4f(+f157@PM1By` z^dX)f>ERls_M649XKhej@p_}E>d7wAYhPpQVKPP2$zZ!~)Fihlkor(B|ZM;Ec4}wSawkIY=97pE!{H-6mK>#6z zob#gq^|ss&*sl%s&;+_X6>9+{CP#25EU{x+nukX#ax%_I|Ld~QwWZiepS#xYTnn~k zZpPxyzR)py@H0Y8zdrUG5ozr)SRMXL4GakuJs32mn0&@i>ZS>`Zzi95%agpD0Hl@O z#BT;)L2j)h|5-JGoj_(g zn}F0);-{MiqCggVcSM4fQfgHm7;f)WS%GtJ?YZ`9 zyb!O5YFK4oTnY)RX4MdZ?SJ%n-D9y=$!rz!1;#jQOr-j&0C#R<-qYw<%g}BJ89LCRLFLMKd`Aj?P_mq~ zG*vS zgEJ3GVVe*@5`kiTedAtO;$hqK{jx;hb|8!;h_=w3;=1~!I`A1~&Z!zKv}!XFQ5{Tw zw)2hZ^B|R|PCi;AkDN1xK*q@1MmHab53H$zF&wTbnl6MG5PPg6<XF=vF4C^eqd> zANT0RRVEi{uLzqT_nHh;zNzb5x$b}b)f!fn+NHgEGvm0=QMW36qHk5I>6p~-9#@sQ zroATj{dmA49M<&rWl&%t?qCqirt^(P#XMJxdHeP(92y=4a0 z`V$kS6_)628b?eAICBJFruC;apsOGMO<~U5P@ihh{`{LR_Z_DVUBIbsNVaFyGgS(m zdFYU7q!A&JZK!X%>!SVvizozH!95xkckmSWYLKsX?kb6fR zzu#U#1{>RPy-fvD;o_kurkH61pCbls1a4+RN@x{LsklIPO^jk$j|$cb;Uf#!RS!5Y z_Uu$=`eFQPE#(!J5faJrl9cO)10atM;U$ECa|$YwF>=)5rv(Ggic;w*&R`<6CmG;fYybQ5|$fH-xi%SL@OGIEb4}1kK7Fp z;TyS;z=~i2J=()HfPp*ITb-PDi1r%VjpjKpVw;)@iu~dDd@YrqH;<|X0c3j{+hXlK z8xf==7~C=#L<$U`G>(HU#4+u}z+~NqHG&%i!$#ha?}Oq1k$BD{YMP%uBjgFCf=Ig~ z50<0&FdO8y4010bghL4VSp(nZi2S-u%}5fX05t?72Pyy5$I_ePQN@W#dvJbMq@7@# zdaFB4T|6=`R$dT!4;6`eANK?u%RNZDB^VELC!2Oh?&yKNpX;z6yWtjmfO!eb+<0U~ z@V#UB5`wG+9bq>_J0hjsf{$nMjbm8@s1shxYmnulkb02`vx101AFv`J*kv$^?2x+r za&^)mjBNq%MG(2=P6pEp7vXjTIgwAJ;d8AJ5GySM67CZYe3uK`7o$zrAS;h^3Zqr(dxjhtrIf?~+5`(Yi zQZk9T9YV90u-U7u*&A3ojf9{P)2xZKtnWVorPlZ=CnQIAw#6}iTPSDG6!`_4*%_JH z>y$9En)y!FZAeei$^=Po_L_N{`p+>n%LZWolJjyv3JPVMJ;EKP<(y9Ch&j0zA5)j~ zq<{PgAebWeS94~q;nM^N3_;ev52tj_ntY!%Lzx%x5P7R4Z&5b;GHZe5W)EYt40>~C zu*iYHB$yb*A_D$N3N#t?;6as{;0SuNI4um!Rv zG5ECDP1{52k`!`SZVX*eAZEcWM+mt?h%G&Wrw+c(#3J`mZ!luY7f?K~g0h2E2DwQ2 zx#wB+ME<#LA&4@n|NRHF5MtJe>_=|M`5*|Um-u+iy-Cci7|pcr{=rzN__-f)9}yp= zhs;_4@BoStK~xu}$dwJiS~|ne4ZsuYT(-oZQdD$M62m;(M3`E5x=4+;5N#+yL6YX10|IWnfGd{vH))c8^5ds&W6^`jGlrXVHg zeKeCkCCoYlm=KVGW*RvLCFHB)oXPnrK2V*)^|k2csnUQ!fkJxbK&7l;Y{jZD^6rQC z8{N7s?r^P!Onnigp?}E;x#``*RA8PTzXOb}Ek7ghL#`b1?^G%Y_2#i2(>F1xf`Pw`WyPKvHsFr@#>EWtL=qATaw)!RlA9v-5S~J$BnUNIK$WqZ* zCf}UwQnbSuMA!DIB`|Jt6VTOE?`w<{VUJ_OH7{!N_MOJ2X7Fd6QqOKvtDA-MdgT8U zYpP-Qm|{=DQh)GOM>csn zgE8olJs)`nVwFN7p$|1~AzRDIpTg5ksVZ5K>1kAjO<4t}5+uOKRJ@M{Gqhze_}4S| z{2=uk0)!Djn8SK?`c!Jl#KPQZahgQN9rE=iIKu+qQ!b~RPrNTlTVZ6i%jCJQyJ(ju z4PpB9)0jpc3}B7r?*0|k`7*7C-iC-}mEB;k9CJ))K^f7t^6L}etTbX?kvTlFfJM^x$gd9@uHD|Vnl@AILVTf0hzQh$Vx4TgcHx~e@ z+r*Yu*oaz6s32usu{)y;@QtZwh&-}!y|ZN-mVpL;A~ht92z>h?j5xy+AF#e28K=g{ zDf8wfv84^YEal9`2a*UQEZEqZvu?+$BNA?@k8?j2me$M*jAF$pV7YGu7QUVwxG}wa z^NxnGKooJy&Nu!58rHnSC{r8z_kB6kO;EsD~ z=fY!>oUiYH>U$JZ;BJAGcN>xV6pZE^xn6#+KI6Frl#5vB+WX4=js?DLq?7dm%lx|F*VUj$3|Smc$PN<-OK-Fn3^9 z#`MS|6tnIROx(inm&+sq{JT&0uSdX5>3P8CV3DrxFhDE|_Z+A6^3VR2KQ9NlO9!Ji zTWQa!qgfjkw+r?c=p3Tn0J&%P^}2x{Lk>uTIhL;OVQ!5NXy+RggS!_MRsTBMVHr2_I^6U{_ebvchb$Y;eSKIP_eX(0(=Y1PEeTfwB^Tf0 zH^~<*Eb6XgJw~z38aLl{%_uRg+~gP-KkgrlG&h&63wf{0Tbdmb`jJSVu>M)J6(51z z(3>TRZKi!3YZ?5BsQ3{&+1K-H<3!+hjV1eP+;Udg^4!d_`yuu2AWe|_6D5}wST3jO z@87X}h^%Z0IiI2j{hi3gjlj7YmWtUzq3v4TnI+#D>ew~l$8$GR zV&1!|iw(JGI!4}@iq}O>OAX~Ll1q^EB3W(b&U4ceT(o!AfBsVU(w_cU+1yY1&4#>y zYZo;mE0Pb7{z^eM#eM$55VdxTaCs|au^*gm34YbRN8@t-t>>)a74f$2_|=;Qs7 zuzh6S{)0bhoO4?&HxT>OzE}MBB;M}L3+`4grg{0~8?YlG=43m7{RDYB!}6(^tlxqe zGl~I!LZbiv@;FKp`NLANOxk|FDh3fnl-lGcUS#t#>mKRx9Mc8SzWTghuC?ubLN_lJ zOV>tiaSRJlMCL!K_qvYk&RY9{AVXTi+MUX>Wbs{X)1QT-+fLvIgk-ru{;M|-Z&BIz zbsv8#ac2lBX9PqIbZ@iS%pH)>ZW1Kwgr<{5`3tB9S-?5#TWcW3UAo{3QnkEPz@30k zE+^?-++{=lY`KUE_)Rf&4%4Fq?EIO(fy>~KG2z{wZnFYXyp0pc_uYJpJ;f~aT>4Mfja#HG&eD*B9HkKTq+b4R zhV|~S0uH^@M>{Ek^qAgHUWn&Hvy!x0jh+Wz+wN4`iy-zUcvf_^TI{O(`BpAZCGAJai2bGB*X;!R%MRi*)|Zp~pWXE!yjPB& z8G9E0=;WJc`*S&tT$X~5bJe^pJQ$ba4P$8dsb!TO|J|&jWf&|};QYq?ANqpHPtR5< zDC{D-WtX3e^No``o4zhgRe_PY);^7H1wk|tfAHA&p{bNgtZzt=*C?5mxh zT&~(;lw(Y_?$$KnH-GQ)#bc91tin06w}*vzu7AlhWSBil;gxIpS+O-P;qya_{>@GM z$|xjCeVSL6zU)V@3QpF-tqi{HkXmFrgP9!vziHm_w7!7X3=PUdfQz7j5x?CqbH z!KHS;GK-(w+$x=O+RQP?df*rp&;B|0*QcwU19?UwKi2bKlsNlG`+3)NTNLJYPB~F9 zef!8k1*5tu{pIVOna0FULGuuM-Hn-fVyud8!&_as<>6gjTvu>Qw~e%!)x1TIu1*}w zVlWp2r9+`?`=b(0?TBp@^Kz@iBx%J(?P51Cy4?rDbZ%xj0%=l>ODg?dgpD zM^+>q5^n(e*)=3P@j%)$0R5p@1O_d@%wQiPG<#}!)VWrl`uY*SzI-GU>!{2y%@^n- z*ONZC6UKlE1Y15F$V_}IbawV75NdeY;iXEYbo}t?F}M5~V!*_+{gD24J({MNpP9Du z+so~w9J=$chJediM|BPj@Zlxon3o^Jf%!q9)LHWVlkijDpIw4`U7xSz+KRe1Pj5>- zR|%TgiMayKQ!x>MY<7F#ycn`U%|{^G^#z2PLL{%eprZTO;|Fyh24rk~lBA3^^-8e4 zXqk$b>1B&klRtIMD~7N$I%kTKB-M?F$yki!pIZ`4GOhZ-j zAy&)n&PeKzrwUvyIMLmtm8^VIpsD_6-;=_7>5Cj|*j``V=i?*UhaC=H#cAJWUIYV$ z2o#DI!@5C_lX3_4I*g>m&3cVF}s-mn+e$fCOc-e9c66yjnMkG*_g3Ct^|BHPhuR9ib%_9WEh z!HS%5;{5Lau6yve_$Pgh&UCX-I7@k{9`)YXn(-n7?fyfTI8 z`sm-%XAZ>8QB~e-_|15Ak*b^X{U)>V+VPt5P&Ze5dGqQ2U;6yNmp*l?>4Zf#z9zDb zw%w|+yQedCKc`Wy?3HLKugE4Hs0|$>2yTKZ;XyOQjI|d;8YYjg79=3J1*-P=l@7wD zy%HgQ1fkHo3EX68njk#zCWO0j($~M08xP|zEBm|Uc-KE=DU6@n5RF$9WS{K+Ex;}D zE^Wh(eQxZhl+xfQdiPC(xt84Lk4Y!zzr09qXSXU3YrXn6EiU92+Sq*_2fAfNHf2mv zDMr>G#?oD;-9D7zh1IcH>2K-ngP&q=Ht zO>#o>vR`d{|7PZZ!Re-7zTLl|&NJ`&4&G6rf92r@`o+P2dtzlI0J;DE`|z69H`<{B zp}$t(Mdm?)h|%_o-3^X&X6%IA#QTqXxm}4{kJL|ZjK=L2NOSUA)yXw=Tv5m^pZR^Y z?G$_PIP1%;Svek(oF>XDt1XA`w?Wa#O4DOhD?IDhx6B|hD9=e&pT$NXN~5Ccf|_O> zxKq=&ugexl_oVJ(ztZz|E4G~UXEgl#Zt1s|Qy;4QU(Mf~5@f}QKAQ(FJvrm+QpE1w zy3$O>Qhd-R?Js%%kLSYttE(OA2fF#+PUk3|oz92Z?^n#e#M!k>cPIoLFOi-N2P;nQ z7u`M$ZJ}SMw>w)@zXQ^5*=@M1oebZ)y+ z8b@DRAfV9j7Suiiy#t9UAiXqKxY;3VF|BO+<)DqDq0e2U2^Np%_ljWdWDi2OswC;#4#q)80Z48NvlAtt{* z3wlStT3+XcWHO<{h?ls5Zl!l6>dh#arW3P#h-eI@_)MfZ7`+Kl#-WKb>zCCI1}E5Q zCDUom*7=A>-n^uqM&q+}HGi2(&7Wv~7d`=}GgUo4wCR$Xb06*gsiHrRIyOeY&9%^^ zuXFFOq9-QOeU#sOhSE1#z)OMBKSb@GDA!AjnzwJKGe_5Rj&3W#E{8Ab&nqQ|e-Iat zU(8Bm)wTq}nmb8WKHVq=H47?@7t`HZXEF>7O1ftddNF)-NI@K*WYlPPf@n_+Mh4$U zo7ACpb*3PRx5vZ)%Tiqsr$CwA*Mj8u{Fv(Ur>gI6x{6>4blCdhc(eDuYhht2zw_T7 zbA$HX1WjdyW*TT=314BbLg9y)j)Z50PeU{V&md)(!b-3}`I&syGc5<;*O>^dD$LjD zMkR~0P%^%V4Qi$Bho3!vsCOlGrzK&ZV<jFH}hSxd6%(l*i3=agMsSas%TMh?V6= zt9sow7wwIEwU2}wRcXFuX=rTb%5E;`u1er{X$r{&Ws@E6ZrU;b(*9=Et!tb3twyAO z#^l@X`@4U@-$>xX3!3cn(zr#5b}Q?_4Hmu7_HTdBdN!bg3z35kW@_GP^^^B>Yh5%V z<#jF0>dLj0Q7rlnyMsw4b@Y9*46_A{kf9emO-zDdkLoyb$vUP~MV8w=Uz_!R{jz3f#x4S=XZ$JLX zYuq7p-0}6eQ^B}%&A1D3+|}!<6CT8S1mSgzO>zwOw58Gx407$J@-pRrOK1r?SF7DYweLQFiije6V~WQ8_PCWLLQljq?k?nfAt ztfMAJN+vfJ$hZk1TF}C1+M7>~LNCYfldVC?EXHn6BVMcnS!5bNoptf+y>XyBYQfZVy$b^Q-;>okN}%GZq#>c?hoERZE1;jA1@a0@02#}Lw3?Dr&; z#fYlKW-fUqCs1{Hxgkp6z!YE{Z7 z5Hn%D;H++A$!;(PYU(A1e|3ZtC4@KilMgP0a!y7b=?KK#pV!Kp7NArB{^KM5F>hW1CJ(gs58(7@j%x%h{^U&+v6HFJ7{g*a}=b`kvi;N#(??Pj( z1Z}>m+A>~;z{jVPG(y|mV#4f~>V1}ypo>WFC0Lj>&sPE5I*_DAuq-Hp`PNwCZbw>C zg(l&{#A@U8TFK&bt&%ms(gG1Ot2VaNL5cj(rz}9~JD{`Mk>5W}@!p|)cb}&8wXxC# zL|p(X^X8$Pz;`QxU6|ye)xzZEx?UN92-)k4qAZuv<%8tOWh>OmOzJ~!w0VHViqWIx zyH{qd#Fml>3;8wn?(e5I0Onk}(+>oo)Ry)*$4TuAaczXj2EVoBKrE-seA3ZW(n65o z6%)(=t;YhH#W98H`}rg>AlF6cV{ZXrLY!C4RPm9W@A(fa8B>kU*({kUm$^t4sW_{F zSnk%<$6`3I{@DCkN`E!V7h#;Zqp5XHN7oBTuoTW|08Dyvdj*^AfV)E(%(QM!w;ppR zQX96qfOLGNMj2pfY!AC>DY$r-X@0XNF2QXTa{*zUqYRJ%@g1?8xJ8B&7s6f%s9b>Y zWz$KVl%LC%k{oG$2WW9#KhI*FtmdYYBBJQ7bH!bR7Szrb#!*qjrjrQHsc#lB#j{pN zKv@<_yiUly-_E#t3)Vts5I2RBAOwqEOLB9GhkeiT*{sjr1Qh<55p&`Og>$2qUuXY# zsrCp|@gP|Y!h(k5T7L!sLL)CAfpPrlp#}QTB`!5e8T9gX{FLfItdrV?f40M>`-94t zlePBDC9fQk2{X6wuBxkcBNq_B<4I1j&>V;(>A>w*@Z-%5lW9?FtHuMDmvfQv*G+JU z$3CB}b!y{U#>MZbMbVa+U?L`S?mTHjRiHD_clt6_7{#h0t>Fj0~PH^0j6#_&US)>ke((rqZi2Y)`ZjJL6Ii}Q33=5P>lSNvVd#KeVoy+U6+Z(Q zkOWWA+`=UYCcfwy2BvMu0#ROMp#B9RkOKe*?VXrr0EX}C;Nuf-W+KN}h8_ag1>WjF z^4HyJRKDkzK7%jFgo%cOasCDHjdDhwYLxid2}cS4CC?4yR$ejBaEqqixG?h|E91f@ z2(eXU>t#8nsm~M?sKZ#BMgl4w!`lOVEO_CJ1$a*)#ZL$lo;<{$O46qZ=S~GX|ML3NcY^3_FrIwOek4D-)wnzck11V z!6kQ;n0IRD_mjY27Uo+Y4)}LZ^WeE%f>m6+Eii)5Zt!?N?p-f&hc^O<|Ll3M_j^YP ziWf3!K!ha7*e>An49E1vJ%eiyf}OYom`#F2;9Zvzh&=uUD(Gct@`W!L0v`ARPDhEB z5Ao_4Z%a63y7HpI zARt0BXLox`Cp!QT5D3tJ{m;#8_{W$DV9&|~1OxKTG_|p@bozlf-8fB*oqqsh2LK=A zj|qk*9(J~-e9TO=OiYAkhEC4<_DKZ-aA zZS3r<4K02~`u`WnOz31|Y5Zf%|3xqo+B*Jk5@Sn%q4R%+SlT+9I@%ciF#X_-Y+M`- z-Sv&_0QQE?KV##c7&$u{TH5}o_+fN3{Ex@X(GXzj^b;*3eS7yG*wTcL`3E*MF|_~B z4I_OcOGBssCb4uh{hwp5rk3Uw&PG2pJ9|@GeRDheAL{=>+W&}Jo4Wt#=3{1K{C`1x zfTb-TC!v$EsjaE8i!&c9<9}8<8vYkjM^h(@A8AKp{r}I~|LBg!e8!GugaD(Txc=wW z&w!7ag`Sbn;Xhya80p!6K>Ppn{;xN5<74OgK{z>^+VimzTH604>F0s?$>EPKLx-RI z|Cdc5KOi9K4AZb6Ams0_)3J{Uy7<5z$p_y*6Lzcm+kr1<1He;C3Vkpf zz$}T7+MeIieA6>bjbpE<(IP`SHkDgaE<>GDu(Byjbr=S`Gx$NxS46CH9IF|eu2j37UxLTi;+VH?-}$3~sV*S8AZt6{ zB{sr_ESX>PSbNgUO1ylrAy-LBPn4lS2+s6Q%6Ill7Cl?P!u0%U-BH5|yZHE|#JIuz za~LI=v+qv1m1=h&D35nFG7RhNA9{3(w3(aTpCYovo?#yP@vXEZ{S-JG_W*vny4Al$ z$AV(F$zEAHTQIgj`v8>-QllMkcc-yCV4*JxmG}_UPtauUK6H#7n`rz(740!JEuJ(a zH*WwNw=+2=P?;q}C+mTYF^J49y(pDlS^AD(VyQp#+yi-4@T~1b-gfA%@YgZNvX(wL zuJca`bwN;s=Z))SxW{EVet@@?TC*%iCI~z*cw-+5frkkp&33-or>U*ARsm7M)+`6X6#(C0`0NebC2j5%j+l8S4_ z%W4u!Tr*nb2ghU_RHoJXFI<#%hov|0@Qy z2A88PfeC>Hg#4rj@t#1}=57uJ=oeMfXR;GSk^&m9eJy-g0=k}oNFv_y6ib_kP~O&c zZyl}3wtHJIC6**uF-tYYB8nFwfvg@$&2vj0(ZBZ%xx zb;o2ND7eDkI0W4&iSZVD_d$w?9f^M7v?SUWb$ESFRz%=%)|kQAOFfSK(fIRTsJl(w*+Wn|$dkH@-x}x(!Fz^kaHO*sqim;Hh5pj;kTJ`8A zN*XljDFPD*4VjX)xu6Lir^!vWl?o%djLf1G{`MZ{k9QAh=(}51Mm0D@lW zwg*pE&M|`_ec>sJ5op{@clIY4$o0|C@%h-b8_s-DF2m5Z6=JHc8!rO|2Dp)ATVJ@i z*x~wB<;a%)zF9mjU#C-(WEaGAB@(`rWLc#zjl5ADsG~P}h=2gLLWxfEu&b5RaM%qJ z(7B65M5h=aZnpDX8)1GxUC%t~qvT+9?J^(i4T3bnVZbFF9_z%*(fgTcv!Q1j#bne4 z*f&>N{ryoXLiOsttkhUYOLkg-ToKEqeJOe(rEWzO)pV*xAVza;2CI80lZ3*U^h56x zDNz9NV}-6UhNY`GkCY7XDH6(`#3sU`STmuZmtFFPRu~T(M}knelfRE#K-=j{R#fc0 z%E=2i6C1NMJHjyXS+cYm3u-R&OcqeADK} zj+>e!JH4kPEjsf`$IiTvzz^*UlehU2hJln$!+18=ug)X|)b0;&1Q$5zCR%?avCVN1 zmB%{pfip6#EAq1L>f0E)8xrI;Y}?nbRmE-p#H9nQ%}PPC17$5_re+v>A316}!ryhh zRnuu8NyWI=_g`VzGa_m5&?%4lhO}uqc`M9uMlbp zss0-B=MFh7q_yW)hH}kn+*K*971J#42qaMn;!nzIX9WQGI!#jtoq3`H-374mzO06q zQ;%)|I`Byu-LtmMu#T!b`N=n3I#b_ABfxPm>hvb*3cHO|k{*eAQZgWw5!JFrfuS{5Eqs@pyG29|zMyULiQ*(rnT8KP&9bq3(O%cA;tCA&_|j+?3LfPyZ79jK=X* zfb<6lvB=s0T|Hqiax@*EWr_~HBDJAru71lR(K@n&2HdS5nL7NlrzdNAl@lC6f|+B9 zEV35Pb7R-LL^luhvLj>SLVz&;8VdQLj#}QY$uVhoG~5u@&>co_=goofvpmno{3O)l zIakuBZ*!k*87YdmnX>6rXEuy?(y@<=CTB=F=+4t%FEsuy1yF}|wGZGJ%r#ve$ zEp(?GfAA4)4x-TA9z+hb(b6~AvTov zZ>+Yl?st@sEBYexk!v!iXZK(P)h*vFLn*qi^Aeb$wc$cd4d$S0d*9QzpB;JwjNVKT z)F`+0^r$B=W^vsI+WP3D{xR>iNdHj4^|-w1%JyN&{NpN_&|a;~c08e}z*JR2fwY$Y>)6aAi`>vwTh7(DU|euAxrp)M5@}r^8zvM@Z)l`d*4Xm z^=Vr`0&p(HJB-Hg-}pzF_a|uBgGR43LX0HS>IbX7zYx8MHG6cn&T5ejyouYZ=uWWX zkrEebuA81OQdN||Z{ZzWv-wEw$?XU3=43j98;9wK$ghH0K{{_JCp>m4q#20K041}& zl=met;cw0GylX4PRX$73K;yBfJ^kd4?;v}e*>xa)K3nQ+PG{Y8R@V=lOB#q;0690=@ zj&DjgZ9b;VL9NiOOpl!H7Fuj~)P*Zm1cs0=Vzw1I3~Zu5a&EG->6Q{ihj)-l4ABbN zf(ht$N1_9w)43pT+GW!rlQS-yp#ZBGGWG{4QDUH}z=GJKG{Ovxwl}aGa?(C|R;dyGP$`bPs_I_Aai4HLy+xnq!%0^Nffne*J{VA5_st(2!_-5DM*i4ao zl1Z%|zm-``)6dCOZV5i6r#ylb)YXLu9M6m$*0e&qQ1^H2OIOifX@!*c-;-tuz73h= z`90{U=UU~awJN-}6IdT$hYO2A8yDqk>SIX=+UMA1#5?2%z@NHOO!fv6)}0Gk30x-Y zSSN~}?cov6h8?HF4i7`DY~9Am+<`*lQs&0xLZ!H=#(Dcduy;tlhSGd{NO+GWIMs2o zdDrVmbM?`wV~x*_o9oEKzg4tn;|&>{g3@fb&6AAfN(#@;KuA^yD;A-UH#|>Ol60#C zQwe#sR3cB`+3nL)+FZ321=NlhtF~UGd@OR4f3ZPW>@c78umhPmT`d)su5WwBv=OoS zJ!q)C5S~&9b+jYR9+lK7#0Z?KP(Lk+hB`Cq&?=Te4JHvcTz#>dmlLr8wY*EdW!oY{ zBen=PsLuWkiZ%P$*pO@Z!G7kidQL-+wIUxD7KytNH0AxlQxA-fOG zxJ-&PJW$__sk|1=5695QTecD0cj;O{`3NYYU>59#{VS4NVFeg|4OsQhu9#g{Y)zoL zr~Oud_(Ljr@VCc)496T~nhER%s#1T8HI=q1mQNO*XW{PIr#o-f>0LJDJ+(;)>@^qq z1gVSV*W^nit;XEFpwkl|b!(}Xi0>cKI%!#4Yc5C~cM zZT=`YpU()K0v|JpSJb{Rsn^^}ZfJ*E?1HIN85F zxaFoBRh%oMrbWsO`v#{=w)rk|`YKPli~0F!G+3gDUlYrz>24%lU_t(OZ-u=)so6;; z&q-!zhHhm|D$8C<(DZbY&|YZMSz`D9D0&3S>C#8v3BRMem9uK;sI;wN_!Dn8Nokt; zJ5o&vamNDjjjSpSwRU;_f<-e{Cf6AYl+4w?QMV8-I;ssDTGvo=Qzr z5zq+#J?IO!P~>gR_!mz(4b?7cnbZJS>@@a4@RJGGD zt}luPgm{>N`=II%s>mDe!#Gc+D+-g~Uo?kR%}qOd=rmNNaLb+ z!|K~ISxlC?8d?5?I4kep;N$0Ud>Z|Tuw?Xm=?tV}z}qT*tB%vKMmd1RI;TdFTrTYE zQ9mE}E4ef#0h&Ym?$0CJU$Vs{ybmOhI~!g^_Sa#i$jISX)>D^Kb5*TpvYDgj{07^c z$=N%4m_*~IgjUz{G3ubBCQN+U!p=jKuH4+x!(B8w-H8)m{%~3s6KcqoQe3Co7zA+Z zw0RaGkzj)m!*mru&=lP;3TyA3hCw19+(FTL(Vp(kp697j&br-8r+wCNjL;T~aiY;@ z`!8_LpFus>j?kai-Er;TDoRoVf)(JM)s?r!5z1ajfv>^n5Re&4r>7#{AZHoyu4j1t z018CtPi}yWtGsevFSOw~`nGn#a#IG-=S^a=0lA922T2fRLHjs1G-2D)+q6ALeo+&Klj>nWQJM|SCO1!}Z^YxJ&2^MA%vy?9A zx#SUTQ3gfEG>rc_&c=RAj$4hhZ8;qL8WwF?UGgrpu=for_h*A2Lu?nya)a-yC=ktW zd4>S};|3Jt%Xx&!+0UBdMOTfJE@&)%!8Zbj;Y%q0Dy~kF`d7Frdx3PiN;Q=S3V{)u ziQQOCbJb01MtGOICS%cCfi(zWYzsy2?ejpft!^M>abxF42-wQ+=F44yBw+=IPX=ta z!4$dPBD20q5FxPrkIFzmR5OPLz#C&Gu!mzKcjwMieJQ;*EbtDrT7^7)N7|g^%6PK| zgegk@0|Thn7J9#^w}lVG9&tA%eFr|Tfj4ia;}vhe?wnBrG&+FtVbf= z-MtEnz>->MhKk|l#9*fNCILoc2Yd@?iizwu6TnGcOLB3l;_N8A;MAfB-bSCs6K zbkDp&53R@Jp?|%ohG}C;vYsGQw?=UVnYcsZ{-N>si0HixjMf9irbgme5si@~Bu?^f z$*C=dacNq&^O}e3^c?6YVAeQaqoBj_9FIdhQ?TlrUtSKw=EqV=KwRhu*ZYX5K?j_R zkyv-9-Naa^hTWSM;2HWDNt2)ReIb$vQuN4+Uhwx0Q9ny*hXZhk&B5y<9KH#z_jo24 zIO5kHYw5Pr{`y*7Ew95MQSiHRZ)~}F}A7w)L!tazAM#$P&h!F%zWfh}i}<$$`i>{~S@#KfF14B$?#8cP zPgU>?;HzXkg?7xY$GlD==3CV(k5&V$->>nwo5AilfN?y0mja2)M3myY$z;^;(E_*0 z72^>!;-v}-|6ZLM%oJz-^o4Wu0oDd2tNbbq=qR#=fbf?2o_K{N3%^ao^kL~%K@?0o z?z|C7yfPT!)i0~+L8$K=h*_?0jmP4r+x|0iA<3GfPh+_W*FS@CAq<8i3I-gZK+y&> z)G5}yGTE+#X?ZuX2BRx>1al!V8N+TFY;*7)OX#Wh0I8$-79Tzwrh-y(?BY-HTJRtYAoJE?h4|KezyH;RpEywMA0~yUQ2=j7X$A| z>GE{V8bcGyNK-{~D&v7SIvOyKxUI$5R{qZl`ej_D#!x+DY7OaU8W1ErZAt}}UD3f?! zC_6UOiw&zpB}xyUEN8Ga!>9-CynV3`Dtzu3_6e-vDJ_EA7B%fNrLh8}RC28(WIkVW z=vpt2a-SVpy@Yb2ZagV<5uQl@VB4E&zpEu??VRI0T=_m6OVB-o(w+GoKPu?cCrAAI zoy$4wt}5eDz>AsMHsioH+(AAemPyRo_tEfgCW=?{(Kv(^SnknF%LK!dSt_I!K;z;ASP~`;m%_hn|=D$8^9R(YFf}G0)I* zWIF3us6+k;VB&i1go}>kLWd7O0=+@~IFNWEqj%3@;qv7<+Rb_;Sy8Dp@CDyB)jORo zAJJtufrZK?btm+uZ=?FN^KERzL8o z<~oW6`EH$H9Y|W)fdb}}{t37Hi+IW(6R?V3SP@1o_j==Cu`5ut3>i`;7-;vR|EAet!#GRASxq6UvR^ z!PRe&BVJSmZ3M@KIhdQWh;Wa4)wGP(c}~xqj1SczqgR(Br(VBW0%4h7EQ};1Hw#`@ z_$n@+XGlsef_-nsfJgoyI7hmy&UE)O`MW$QFcx}|9`+c;{YxtoZp zEM_5gb7TZls?UqE3@1+y1tmP!*KLz2CYc(#!by{}sIHWuQuUfE0E2W0$p3p#}&WcEw6=84hr3eCg!<`vWt^NCU;m7GN%f2QZXsRw7WjlHoi_)=bfE`5Yzd z;3t^3%zf$>ALs^2ZI7FIsg?gq{D?z82n@vCRy)D-2E+c=r|Z9-tEt7Awv(Rj#%`2c zv+;>PS)%A9`a2t8q564XJz_LFk(ngvJ_t&z^KeGF&no;b`%K>$^!J4@lvC|gCwQQN zQNjZqKp7MS_G%~d-Wu0rzBBREM}RICQTSOKz*-qID7m>n5J4?9MapSyb`gU7G5~$y zO2B@#BaCpVvJ3~LTB?Aky1-M20X3$*NwCA`vb>F7;!7EtPV;lQT>~~R#q!^zF?*a% zac++w6Gl*}cN5(jzJTRXN>A)%+jppbz5B_BTl%O;$C2LoLn4}9m&BRS-w>LO}YCA~D33 z;2I8}FsOB%@}1=;Z>)*bsg_Ew!oOglZF8TTSwQ{W9#>wfZbPKZ6k99!%#;$+A7p;* zYAB0d-#N?^`#kvRHmB-Oo+=jSyHpIvST@LOyOrFJQ_ZDBNF&W~a0DA{irBPjsq(AR z>sVIca=+-zhAguY49Yvf3APiunzvh$^lc`jL;VKlP{~df;P0M^d7p$5zA4#(KnFY+ zEf60fc=Nr=giRY;8?gx-okgW)?Y;!YTBS7POr($O9UN)&iqq=45G#&XQEYOs0+KWf zuJpSKw|Z1&3#c{Mg62_iyYcJOp>CO^u==hW*) zEktUu^|s`_HQc>;<3zK|!R!P2cXB^X*vZ7%_!l0QdaC2g|B|0LYV)pJrI z(rXZBSS?>Be!oSHMaUz^zSuwtevzkFW?SPtfdG)LLv9 zP*!RtGX;?wkMNIL(>VCKNP6)@?60LoGm}oe2%@p{Y#(fl9eRY_ApF)M$*j|vW6aRw zaO4oLRl1Z6gSjbu#Kfr@{T?EYrcxM9y34bZm${sm&_&5JM@O( zTslMzmQEyqTV=QqMJ{g@$ChHWI$|&oQGX&4FYJG3hZWci_wWgD&=_m8mrKDlzNv_)zrIZwBAU z{EQkL0MDP~l{#L`ef~JGM~-HHtnP{3ZRR|`vW2Z|qGqx%cKEsK*yql@-h~=@h8hLS zqAkYU?AR5HozhC9X9J$&!xBCTmq?=$0GJ|YjxlRz%A;u8#>=rcv4+(u2Zz{o0ZGUy zNy+#J|3SQw3x1VqlayUE1J>wvxY(l8x~5X_Y1SwB{jd!&AsjTzi2Fvs!?55_X(#82 zw}%FZO$Os2=Q}eswTSZwQj0ijc(zFxt)#pC_Cq<|wXeihgH^clVM2m-Q4PY+jTx#r zjyxC%Jxucm#gX}Kr%WLgPh2*E!0qW9N^WQw{szq@o8IJ?$Ik$9ySE!;QaTC*e+vf0 zr8o=LISv%5>W9rZ-!5hy!d3kJ9oUPD1KXIW6&9&Of%u`G8TKg@Vs6CI1&1hwh6Wvgk5BN7V~T- z7peSl4c*|L7PNx%)vh3p`Y-(R`Pj;P*FIhkLS?%Z&!% zwXq=YbirWTL$%uG+?Gh)_lHc3m z(4natqKM40TQxy2UcEB{dx<9su{a_dRHp=>sPHNan@_3$E};erCRr(_PtZ}nsE`|) zk%Wa#YyuoR;H2JtEEuHsr?l}{&coNJ&HfS3o%&RD$o{XM#AUX$Q?HFw~RShVK8Xl`uv>xexQ3-LA&-4)Vf$y0Tyka z;yF>WNk$uE9rTEUeK1}0AZuI9=D3b-8h)#oYB*HzfyDBdw6ncMw@qJz0CrSQH5Hae zpK2=r9kG;NCcC63Mn>JSaHcD)yM=I=EwWN@R*3X&W5I<)My@-SKYKzd?_(l1i%M@& z^u%|ml!{=TMoz~(Zsq#NdOxqNLMR)Q!{EPS_9I1Zl|r9J?XAw^Sb4# zDLPz_V{{$NtCT#i-Y?{*79=9Bb;y6<5+!kd7eZuEiwkug7o0-}5N*A=ei4}f}d`@;Hu?Cf$?`U(wz5ZcHAP~s!GlE%6BH2~7iNb06F2+QP z-+5*R&+yPrb(mL6>SY7)L;3{>Z!wGmSh63N(D4`%a0li|LS*;Ze{gVXq(kS0ga3Mf zF+G>5GRy&07c`6&M9$mJ&qJAY|El*QM-vhppyGI^PWr1uHIMNQLFs4K+Jo!N;+1>- z0u4Q(I;v+zUH#EN86*~>W5pzr$kaoW?~)xP-aYs?mTtVSq12jX_C%&-MguG*H0tA* zdiTrAU0JwY<292v60qcD^TVfIMx^AEzH->F1ThYhRhokf``fzc!jhQohv=9c`;H;C z)2j}J*(}UV`kOYa;mF&~^|zA}N=SJD^sYjXm=-FOihd{nR^Gt z22LxqE#%HGI$^&AwNL(wd}0nquE}LJ*1AW915r?TFE=9Pl7E`yBnR_}YS!SF``JUd zH?#4vk?LE1vEr#KbFBxSX4_W{N4P}vH!mKFih-!JH0Hivsn)kuvhcLqNc_xN;mRzWgrk+`G1y-1`KH5U zk(l3Ci;|)!nk5mnl`^k86w3~)jifgv*hJimZuoR~cY!|qRBIQ0(IaOQc`sClm)PS5rl`rV3HG@SJboR3J| z#<6-hk1}V3T!)H#AyM=!gh`0Q# zSn{#e{|~K7Qj{)_x*(rcj&lv6ZdIXF+n+Nd?f#wSC`^oBntE+mu2=|cmqAK$1S%m& z2rDGW8+n)+y}%aEm zzjyi?)_U8qK7Kju=X@U`Vk&VJBoE*9w6dXEXYa&Y?PeYlg?CdArnn-JGyun0ls|eo z4RL7m8}zstgrx{T>U+m_ayk-teCT#$e^PNjAYqn|4kgv-+<~^zPYMdMvo`rrn~NoJ zn`dQ*8y8BP454jH!o?$*R4u7me?1WO2Yz=rL|Oqavkn$>0x=SvZ2i4SH#C(&v~mcu zZjh8;B}2U4a&g0s$j&740ik??VXn(csKL^FyIw>jZ(?S4-{Us40rgFywOYv+u_a3A z$hW%<{FmY3o%!xM?bRk3@1-MEZ&@}AgYPI^+Au|Mzi$EKTA(|uP9Qs=SD|QDOlb=C zdGl@He(mb*kttqb~{a}21~W8p@OXSCOV|y2uBfhRI)k^ zcs~=Tu5ld(3Z9mvJ(E7$*vTE6;FR(XYz^znMNoz~;zU^@r|@j0yQxm!*2fE8zzTtF zkEF@6lYQ`xfK0=mXVNk4?6Wn|d*dvNY+bPWmqms$Rn699HF zx&%)T(`ur|FQIThM)W%g6uL=6ScJ8nUVo7ZMY=Z{wpGnN2f=j|>if)!bc(iPy{$~( z9emN0GqIdz0@O79-$~0>#xVl)Y+oOh$gne#NTur4YZ?7rWyL#V8T|HqbR21~Rz)=y z2f0@u3Yha>Ti(hjt=KMD7j(358<>MH<4c0CO`tHYt$`F@M!uAY%0tf}>ktoop(Y`C za+xHJ=-k9%Ynk->dW_`1*z=a5t&Q@K@>B-0Q{(db15~GNp^o?0f@K;2Tj!tzEfVhO zyA^TNoeowCq*)64lF57LD8u5Ra;o6TJcmI53U8mQJ^1gK<#O?=XypZyrj$=R;O#aU zMxKV}$Xg5@jdbm3`wN>nQJmfnsc`cIZKxL9-k6=f>OoD0dO7Vqh`M*PT~(69Mw=>_ zFufSmvwrX1A#_j>`col@ck*lQc8EGUPzyP<`EwoMp4;TlV+j>-GHSslN2>H8tICZH z^D}9Rk;}q`%}!qMl3k@?^rLUehxnyn?tkKm)?g5#NV zS(0z2b4Md(4&0m}T>D&p-6c2}9whtv0S(KvESc2KEeFp6Y8e#B%A;5y7iPYv{O}a! zV@xp|0ENFXe6Q?3e~76lamMbHOH|dv7p1COf0ygMyyG<@O*CR3ge@I>7cL()^Gh}t zRC1Nj^YV=LSinXfTt$4;BiQ5VufP-T;H)#`XCo%=n9O05oVO}5wvu>xoA!m|YC_?> z7!%WTzi;}J!J$@sI>;857~!ZPC0WLL-7A}x7W7FUB^%&e3YXcHRnJL*dBD}Zn=q0N zbqG+FRu2V?LsKO-vM9e7eV`b4*=2r>JbfmS4dliuY{XygPz~iM4|Lb+)NYvM04<`P zs1SX7NGT&VagmIQ)oIWBk zS!8RI+{n)9Rd7J8v~OC~WSV zWwNXV%oSE{me-)UkiblYxbUZbVLmWCtF|j?N=7^g#mdbupMjWps9`bHX?T#Y?JBCC zcpSIO@Y3KzUg+raZYvlDSeJAgc{v#J+vECeSr6Fl-LerCbxS=?VHh5AINU6)?*K4% zZQkUgY>}vPd>oan4>4jfjW9+ucap2SHftqdz8ZqX(}Q4s|Q0x@`)Q?$t|+ist^L z^8XUBzv4V{eEQ%85t;<-iHT1zyKjcVv&F}PEPE~OcS6>@DDFw)6<-Kr2To>AZA^Dp zvq8iQX#^frz4xC_S#D-LB_cAwUi|IOwHJ9wf_y_ktIocRKVdwg{amqt9+hFamNy{A z7=D@c84xSDL&Vj{DZ^q&qUTiax{d&nIPd=pbkAF`)`^^rnPn^4L6XwY|F!DtT$T?G znR+@M@b)aHc+c+{MNRY~CHBnGJi*p~-=BF-L3`)5GFY{c|(o0WBY z-5f%}X_teXuYqvW>7{nBC%=C!fcF(?M!^~QlvTM)M}+v0?gyn>{#|R^M54w^=#Icc zN-PQ)UY)NlNV2{YWtbZMOil%H72VoPf6h$bUVj!2s7j7s?uz^gSr;_-DE?`Ry zBPEzm5ATNAIFSMg5?>fonrGWc6#yTpz(XJkOWu{!FZZyy@o03#5{%Z3k%hMB$$rEV zp$*PbTg&=e403!A`R|vQvHl@KPS9zp*lIHlylOAp>uFD3*;Y{r93yvl`}0>g;irbA zY6<;k0`njpWyc<=sL2K|=|m!JoAs2Zp#W*#K|+5?f$^DG=&%Oy(7(?9(0?sA2tZ7r z&!tW6Hsr=aOvvuXE%=uzEJde`&g;m_%+)J^77(Vb->;d&_Vawx+!=Op-(CYtc8b-7 z)8BR#Xty1UzbCUDoUCSX9o*2oWV(4J1nuqGK7iE}z*6u0WkH>V*p*V%EpUAPwH3b> z_UGi`P|rke8@a5wS4v1!D zDWMehMs!jYHEXl;@*R7+qwHMn{P%Qnc>4D}^|YM}^9gn+hw^J@kTx*tJrE^FKt&dx zyS$*Fn3RgtzdnCc<6x3f0w-Lz$`K}NtzN?-Q znkg`tc#r7bOyyiK#%HAqR#m zxn1xO;`IH?WqdU<@oK0KOjeQxI6E$_fuw)et&k%!3fOe>Q$MKK45JB6e$*wGO<4$0 zpj~AX=&^?@HAAvtWO&m}Vrb+H3jx*8n?Hb8ckyyO40>ge0zLXXr~&LRo#0{G1B z9bbRV%Djssb1rV_$;xwykP)Jde^z%4`>PGM^AC18Ms9R;PwFxc#{`&pZb6z^($eY{ z!Jkx2yFu*SoL$_v(-Ph3!&hhzinccqb-m+|Baemf99lVZY0??$?;`~CvK9Z?&}kyE z%R>aoNp5AezI6N2IE7Dj)9C`n9v0$v8Kk};D7}b3<=lE?EA_`j^=O0Vx=JC!83ekeW8Z^6Fl8BVT~=Gu`335B58R3mVL~+ zg*=La3cX`n>L%E&>!O#HeDuhzp(3sc+ehdZPf%&3iS!y&V5Vpq;o!FNtVC|ne-vDx zK_L+@!`|abV4`S{OX-ZaYQg;rbqB^TcYXyBunKn0O5IZ!$>YUIgsPRKf&m5qLmR1EQd%Yf3;k8p(N0}V~7ez z3H+>C36%z%g2<|tE>#mDx`2yE;Jjfm$674o;JNKG+4XRbmJbLjGT%|S$8TA(^^4^x z^TC@$Y3z$cqD@V6{pfuKm%SLcMK%5twtTsr3}dbo3Suyv@8G`CW;#t~1{dO_Cc8uj zNlhI=x*9nM3kjbgs zcA+p~-4&M8U$Th8i1>r029vp^!=~wOM@)S}sG%$q5IytyWP1Qo)x2MJCEUnV+^kM@ zAZ&|iv(5Q4IGmQ}V)BSd_7DQz(EZm+cEN*iK-};q)pNAteG)2=V&3@Ml@=Tx!?P1sPk?KRrh?zsdyvZ({L>R0 zI_d0&*EqZHSuyc&GbNvfmqd&*TB@;=m8?`gi9_X5o>iiKCK&Di_G7((4@unx^33Gq zEvXi8H5i5vV1PqP+|_Jml|67#mZo#rlTAZ5vjQtlW-y1Ibkzy1wuZK@X2$x|3_kCQ zw}rRBCJmI$zDR{95Iw=Jf!=%g}daTJI6&N_xJ@uv-_7rz?ECrp*7K`330${n6Epx}Yj%KwhXo3(@oI8W!2)#z zIf791V?-XM^-hs5#%MhIz_9&!E`385`OLH4(eRMkeB2I&>!*jnR3|m7+ZB7kO)Q(gF9em-n?oA8&B%UM&&f9|Hi9_ ze#7_>^f%|!R9MJoKdry%Z6Xj%AbBUP%u?u08?B#@50d9viPMEew?~y55AZ?GFYw(w z)i4BU0+kTGx>T1UOdB8#W|;HaI(ABk4knLY$<@K8NX(Xe*%xbW6zso`yP88&T)8-@ z+>_Wit`*vPFE~j8L9w(c@KA9=gVkfXop2lz6*fst1zy-3b^NJAJ7AztYMQmIxT3=l zQYry?CmhTVkk9@DguVYcK$sO6^)$S-L&5rw^-sm#2e7E(%oN2~!P57BuZVc{r4gnx zq_L+5ETzT>^v~JXK1+UinVsK|b1QqN&4#QcsYYJp;c?Ij}$u zjxMV^_IrXLzFPBPeNyEkH$)#elm3}b1d=|Cn$zT;;odHG)~UmNvrEs*kJ$>YAAMl} zvK9fh(i#0l_4?4I`ggYBv;;-+tgn2=Axf%lMxfcc8K5nv66U zDStL4p!_V-&fv@PJhGSdJYKIwNQc>e3gU~u^4bJp9T#@nER{DayiN)(*bMtZsY$_q zYyKs*ZDik7V&*-kLy**0y6-Rm_aWb=l`lt{fzLzJrdB&GGw=0|;`mJ?Kfbai#xw-` zjuma?UTpKV5%$m1Vn2ixJ=ES5f)g(#g)a}O3XenkqdA_9XY9+k`=SPeRRE7gC>u4z z*vdciZGSP!E_W74%rP50>W~g!p!aqsdG9hwr6dEF^N~JLG3*Pi$T>{|og8b`yz^6`Z+v68 z*!qL?a}p)P0X#I2p$Kk;BxE$jyTs>8l`TxTQ)Pdfs5D!84n@hJA!;yxv81uY#x~s? z3u|=LOkmpIiC~|1Iu5>`1(&Z7#5-ASw$}jz9oMAQiRn8Jcm{|YPYlw0`4b zHbZh-Cr;@5=pg+lyrqO#1kQEbV&E9VMK6L2_XR6$<@XIK+f0fWSVjq#ZTzg@j6;dF zzCAijx#X?Zpgr)|lDwD}bJ**KvDxr96#v35Cu;fa4X%qA!?ZqHvZ#w)b7W{s0juxZ zv~{qIeSAuMbsJ2O3ysJ4$biTYH>JlkKb8QvM{*?XF)k+otnS)ei#ztoP!V&^$#wqq zE(WyqboLFz|K~&=IJGYV51y|3#cp?bv9pY^x$B*(s+21Gltyw%V+NLB20h*Eo=86% zha0#H3%PX63eaFUd(yjFm+F$Vy*3p2d$MkliEc;)XzTDll$w+_p*Jfx`2%7>CSm0j=@zuU=%L z%+6Dp>+9=!O3*%+Y#OJ4HCQy^5Z}F|zSb1~d5<+G`HrYdX*6GTODlYMFmA@XBU_l# z_IA^h)J;yi>ISUI_L7G^#(#nNm5S%x5naBQt^(Qi=}E*waCw=cfs@UTNX^Qo2195E z8styb?;wlobC^W@G}XVY`in8W6hDT046lvOi(je#z{|_M1=W>f7)~O<+4n9`|1SF} zgG>q~yVa@vv-CzvHwgtN6pP~AEMs75i}7A8&KvO|8V-UKi{YIqcDbp{RZC!vDONj5 z{0hLr5bp5L`uvr?!iAo?f9hd3wu$fc2Z;Xp$pqejoLkveF{}eN2j@in)fRn!Dq|Ef zL+W>$CEo`m!T%lF&WY`z%W?KvE*EZ#BDqtvk_ueWdi;MVd&l5RyQXdQij#@WiEU48 z+qP{@Y}>YNI};}p+cqY4cJBMZ-tY5#?^m^}u0Lm;eRLnaR@GTocO9$Osm)P(GRPKO znNXg7h0e`;>?photC5##{B0??rk=D~E&u@gif3X4h- zyzEjRpz?3}M_4s{Kh58fi@|q`(kY+a8*y8~Nc2A3?ocy+&7*Tu$}EyAaZKz3nMm1d zroc;_s4mjd$Wu7P8P8DQ(Y{Tl%%*%jBKqUmi#cw=bn=G_9Z{>f!!P%Z(H?vI=)18D@w zn7ZdY(j58WcK^(nLTqPUDZ06ydLNT5+NV)&3)+dmVTaBI>@r82=s@_?V`3L;m*ss7 z{<5XiZ$;3^y}-!>*YwqZ`NLn}6u`E{H)DsgVf=q6#dh%VJoJkA?3moFFUR+n%2XBM zvwwK7N2oSgqY_w_Yq{|=Wx4?(tQ(o+TqvPE+Q~!4z43bD5nZdsU_Zz*Alw^+6wwhF z`;h@_rXS{3r*q~|lS?GmJoLZ9A202>TEM9j*x?d2&lP0^zu~sZ5A41u>|PnU;1GCI zj=(LQvJ&v=1;$jruaqPvGa+jzVox|8RnMkALgoF0ikdRacVwaxa%_yE*&ICl;>a>yhA3psPXb;COXi3B!dCHNTDucElx-%+ur{dqor2sy zwsWcN4^Ik`=;uv<_+005z5@wM2Bx1X@8tdhR05ZD^xl(Su7T>B(232F4GBcr%5ZE{ zb=XqpJ{v+Zx$h*xN=}TpGy5+_^+0@j4GS-`U}Q(W4YPTe(E8q=N*t(oH*({OzQRv5 zVyNpk;(L%FTZj>N-L#=F=0Z@JAq(fERHfAn`?XP6a!>Cvr*L=raCwMn4r2UmMuMlSU=G+UxCWgYtvNDYS!pOb`Y1yvVjsiBX( zZKuZ|t8*xJnVfS#G)8FMKaY@R(aCb3%_!{i5 zx=7f)W_W8Wf(eC+oaokQ!#n7t`5ew(EWpR8TY#?mhk79^$OPM4%-kyzk3FK~a}2Fi zN&MXXSBmaf5$CXQ+{VF-wv`y&@(Co+Fh1+Tj-C6=JY?r@d?4h!Y6rGnK*j?y^Lh(6 zXsm+`GV)C>Cz#fuTOmOAY7w3LTtYSI|qQx`sz!AV0pzn;_sye-Xo*?*uz1^3r=;ikUV%tZF~nr;Y7nAF8LPup&8QCj!33>!&X{_>P+ zt3jphzFjNk$x*xp-8{TJHrI&JUQlar8tiq`Ox!!1;X5EAKOS8WxVEOqp)r`@CLCT& zw3{u~&ux28fAxx0bEo||T%B~$hXBMTfAOqyd1Y*;rpZ~gQ?=-e0d0NuR0Ad1yreZ7 zmu-NX^7&c=On#!3YHUm+IASA(5yA1f7>X30%mNIDIb1Pf2$+I|b3rr;&BC8*LPB_U zj!#0Sc|u9j7AtnSsuB((R5p<#)n|}UO5~?Q)E6qDt0_$UHuOfHM}cTwOL+z5wjwO= zxx``jB28G=zBDWn4<-`Li@fR!0v&Bak(big}XkUDUby&7QglMqkGt&{J9Smw$X;up zIytJ%oev~V-PBtm$Xn$>e(4*dRV;k&CVD1~phxU4UdrP2leEgY&(4A;WG2w(#MH2| z_TQZd{>G~j79&4cZAkCmunvEQ4jUB0H1VzQ5(Z|544QTma4_Qp7~pgp+zsZAsvWq% zzW&5`DpxnX_`I!u+O7QAI;XkF(Z>}(t0OrBhWh8#ETeikLInama%ay)aXl|#807aN zbfLA&Z75a?5bvI{pvd>3n#AIaaDzGnO@Y`k)+h?!b%kXYkeeH4QI{M2L2qDGt*)mO zysVpZc&w<|uQNBlu|%tF*SB-HFlhB+65u(B;;BYHF6)hBX^u*~T|0nSBO3(*4&{+2 z3MMB*pLtnxKb!{EK=4onS+9xWQ+$JIoTCXB?SBC(0f`LvF1+VA zzkvk7>!s}+NR+L&r}lb-#2zlsjOW(j$+lyR+{ud<8}s8Kovw%+JV`N~J7=b&uP%X$ zL(ymr;irGb#S@>RBa{#s!mhn%Utduh4|uP@LD(2OiJ*Lc5frms?Z=T#j>$N!pb6LW z_xK|p^ODvvLXe@x1Rmqm$GlV;xB3v8GR%of7gu|)_j+Rp2@c-QN;hd_Sz({dC!~a} z78($RyG5AY@zMz&7Wq>iX&a9a%kF9C+}ejDx|v=YwG_oT#}*&Q?uW$cm5AD^yA&vf z;cMC-4GKwxM&tJ})XKc@sRL=VbV{VZ{tNd4W=sq|jX##_Ie(>RvUUk~hyQF)p}IDU zg|VaYQOe6Ha;xBcZums;rSi8Pf+gWFP&f)QG3V=(rRSKnMWn@l_NiFA&z_916Na>1 zue}U5$-A)L&g0gA&`;9GxTyx1(<2kQDJ~UXeELw?JtvFppC5mIj}1sGN$q)!!zy;M!sVU=v7^t!8$o zPzsb@O~$v2tsBW9^OiUpUfMdJM#8{8&fJcuXiaE%r!ElVm*zA)ZF^o45xgMlvzZGO zYOM00hoDXWE%oIEhTxxi{u#C&xPda=any0BlGL2N1|_^I(GAZ=#gYqoNostU) zbCf+a*PB-mCS|F~3G}q$^m5Lyiep?xk+0bVUBK+XJhY8&IuK`Kj*l@XF&(%FSshK< zD}q0GY}V6y-(L(&7a#GM$dND1ZW(L_g`ubg%z7HuJ+RsVD2t$SLR<7Msl`CZd&@F- z%JAS0Q_J(gVB)di@0-@4_ng0kPa_=s*!kQvyBqDq8gH7q6s}@?MoOp*7a;FAVU6eq zQ8~LVwaf#-W`9=rNH$M(7M=GAts4f`LnBxG@wkD}A4zb!NhF)VO)q6$Z1U@6-7tF; zP{=ZS*+{8RXGDtWGaHjqyddeM?IHA9ST9r$*dDtef|K1Sc2`ZlC%r;Q!`9Pdiy%i_ z)PeRum2x^E7hr?GdYq9o6KdQr|Jc^Dn6|o6;mvSKLPx3TPI)g3ue{tVJyMG%44o?LV^2T@;K80 z%MQ1vq&y`QEZKK3PttEwN=3B3qZQ%-*l)KI3{C1g8N{a?UxY z$fBbvgzb^d4kpS1o6>|5pvOjCk6xQGDBNjADPWd$jUDL3DYoUOFVP%v|K~>^L)xU1 zn@_@J+20jKmXu9?O+&!uo;lu{U6=Ydx&C3E3ntkWTILW*&Iv&qud#c)t^ua}RZA+@ z2_jw3E^g>c_GI6BY0>b%@gM+T*R!bN8&-Avzn&4K0Px}f0N|NFo!E+>?xTs)7XZLK zVXc|HsOORca!NN8khT>@N=|E`?AD|=1<=U_{Y@9Ob)GI(Rckc(nCOci;g& zpclYrI9jBRsk|5Qxx|3rINxbNmz_x>-9Bs|y5+bHPf>bs0`AEL3svbHq97&0dcT&e zfy_sr^Cv8_LU)#ToC+EDX|m#5aIqj%CR8z=N0q4J54xNVoVWLh0E{`yniwIZIHM(+ zCe+zRKVrhRyQ*9oA5@m>uXCw^2P&FM;{edkujDQGvjyBjKL1(|Q4N8`Y|VO&{_q4# z!i+!x53G0eL;#4b$esg$y_eRftMtYPX_h%C&8NFeDZ3s8h~WyD;ft-w!V{K&tK7u87^a0J}vB= z-zdffdSQYN4YKHcX}G}rD*_Fi)&99(Uv^=V7HN8bl&`G;FaTv6TKoh3_2M5tA)=RC zD_hwKe+Luk+<&3Kf6_Eb)dH;gzChgk>1N`k{AOuVkR+e~*yDd;0f>PN!E2ZJB|>if zZ;}5-g8;$F79kV{6Smr&%IEyY(VMBh)nI(mG{EN|eRs0G-qN2rNRY;FoDGIK9P?e@qAC+W zUuN2lPIjCH1ikJyjBt9wlI?4cFqT>MKRp<$?zwIiMR~|VR+yiDw*4BPY1sGl4)viV zPv!7{#3Vwo>hZ;CfuXbHc_|m$tM%o>p0#>*G{MrvOJoWaL*y)sI6ozGAw&;e$e!#} zL0(va%rbNa{8}amB24Jt4lDz*P$0`6 zu`QXE_Hmh+PlaHiarD~toAIKFk}9^IJzVZ_G>!2ss(r8woi~50~aWo-URzZ|SKcPet99TQE&i zvtklQS9v(UapK^!MEUytRx#N2*xvo%vlBS1eg9f5`!o2LN~`jToz&Sd#-v=Z>W>I5 z_O-&Ttb?K=cbl2%JEL}FKC(x4oOLKcisIU%dWR19tzi<(DqG|)9z zmob-V*)%!ug3l}XO#x6#d9sE~JC9skp z@CUnhA7d_XklMC7$ZP2wf0Hem9WiGGT)qpEtn%c#-;cQ$5)&CmX8MkOw8V=DjAsOy zQUPtHj>!-Ft*jYp4|1{YE$KlAe);FT~K^V>p`QYTqYnkEA8&vJL@VQTR*QyM$w-N^Bd0H2g4cE z{^&n)+sar5chVetCij9Hu^%gu7oiy)=lDZ5aJy({!s1LFzZ}<)HR4X0R2rZbjp=oI zcyd$gWNzQ-y?nC%qyq=|{;F;@4`R(z<~YZjq)~)_;_GnZqEV=(2Al$bnp8Agd5$+4 zB02fpcn}gI@=Wy4Pa46F3HX6M&3g+6gh&>;e#A2;6u)l3-qdJEs<{Jg31ud!(q&|( zo#KGj>-xo0)w8~Tm9aMHMw2Bab0luWTTIEts$^pey$;24)MT7xpDT?b&OGqr|6(9-6tcZ5hLB{@Ec3?(vX#6#J6D)DrwLfpU@f+ z{ns@JZ}g=E4qtxbfyWyt0<^2ML-V7y*cCJIE5X`uk-nH}j1FpE=_w!NI2o#UkLiA! zLzp%*9otlv7SGI(PM1X>GOwEhPc-i3n4O$Jw~9#~`}8fw(dD$uRPJ~mlzSQbbxSX4 zLma_z2deKt_sBcGP*HNx%gf~{4G8W-F!kR&5>%|WQdKSX`Hvp#+_A;_GUxMX@;eCy z?r7$83Jw*zliZEvNxUWRL7UjGV)SE;E`(FDJs7a6Xxn?4$IRA0wb^C1w%mx~Mv%U5 zE_$%~L_2AFjYLGlL7oAMKVX4GiL`uew6fHFPVdITh&pDuO!sj0=-3+e-gqe#Qj!=x znn<`8g`Cdr0sX>Pkr`X0Me<|Ghn^$HYYokf8>TmusHn8^#nhuO$-ULUTn4-+naBjo?w96AkqgNviB-drQYm~ z1?WWUR@$(`q=8KcBuHW#)Bb=lIB)ZR5S{3F-m+uaUfVB!mYFG@+n>=-F71+M*SfNM z)CGYx^BRACr|6NgB#_wW0fwL;SQMR9V3NIor1nq=c)m$C9RR+*Kt1&5u{Y;L2k$7L zKNk~q3rE`;-8Ume6C*gCSCv7jMsuTOQX&~i^-|EIje<)*kHoElw{85_b;2Af_%)u;mA2G3;mr8mx z8=%|x)cgX{YgfIwee5q>2**ToTxw+T%LHo(R|+`L|9SEKBB@0QgrI^@YXpaN*` zcWe9Vum$vL%COTbf`Y`h)U853r1gw=>v`dRk@t*KE5A{Th@KU}OV$lIaH(gn%B-5Zdz+1${nlWmHOV9y zCkG5KxP0CT2}m0YM%hQo44C@fTEiXhOscxXcctY7hitlktbW%szjyobfpcX-KfR4( z8OCXz@ZB%=W{YizqyEIadu7L@^)f2I*xk6HH=gajuuv5OOTht`p}(jRXrnqu9b#m@ zBKiAAaeKIV?ilo+J$jJrqwui=`%u~4zow?Z!9QQ@8y z?9r#Y?qWMeaUc?pjbEa|xv`>h;R&aG3Ix=iq=XFgYS;Yx?Do9xo;htvd~!&`i$sg} z-Uc44MLG*{MSB_4C&Yz)Sy`;Ml1{`qV%FND zj;IQRE}+l&-uKq5Gne_2v9s$vpyn8Q8;Tk&kKncGrP||F?$VOE$u)BK$Pc2G3<@4; zTf8P$=ON{$mi=g4Y>Crm>dJ%H^4qc|lS#rGTlTE+Mq`4&6<~$nvZ_4MOa$=S3H3iBRWXCHzpJw^jN8;$9F_)j7!<~ zj@NjzglaF92x^ng7Qi}`eUz#E75&M!E)kvFU&Bj-0<_Yt6Ax3S`JhAv?oy5;ltU=+ z>EJ)NWyI#Uy}QjTJUjP;Wt{lu;S&$z6I`^kCN$KH_e9a&0XgLj6kNY>H(D$KM2h=8 z=o881N>B!F`RIl>C5s1OOdT)_FPro{wQDN(;(-gj++~^zq_wB-S813`%0uLJg1n%| zi@bn>T#nq!xQ8dEX~cZ=SK>A-F>)H{) z^h{l5adur8Rf6ZGrUmqyWFRC!_LJIfhA{56rV>ZBVi8>`ua2pwKRcZPU&w<_l;UJb z3tXyFu=5X?LIekLd$xyMKhRqX6>d2QYwCBFZna`m+vKXfEvXH-T%mU;;_JnLn;{g(XsDdB5{OTjX)u1$YiU1|;ck zFty(`43h{ZGw$|T8?QR>H`%o(_uqSfKUqEyVzlQqUaO^(1N_(;bq%|hwLR`us+3Ik zv4guu6}WMmO^Sn5eA|x?nqzPiMzt{h{No#79Bq7MxCJZNqz?I z^(fm9BQy!tAvwknd3}F3jj4FKCBE3VlX()WFQST6ku>GMUa3iE#lg~blEscH*w&-2 zH9RP>Siac6m+-4M1~kcI#x4H3z7`THV5Asbe+!(Y3q|(n1ytZEKhW2IzZ7?js!C%w zVX(GDOT;6)mExK-_3LS>NcuBQ%CC9aBukQ^CHCiPa2$GcgRK#TTUy@S0v1)?UAJN_ z&U?jK5n`X}T2c*^vV;eQK`xQCuGv>cBN~2?3Y>1uVC{_(F*J=Li8zSkEvZpyG>1!5 z&il6bzQK$-a*zx4g?-8m)h4l2Po$@7G4j5?f|Jz;%l0}?MRhwHi)p19fzdvJwMniF-YEZyA4x z|6l-vF$~{CqV&xo^LCp0cN_ba)1i4}-{>bU%YpI30*ynI{)d-*)@?L~VFF|1<|vH+^;XvU3ZN~G5J=_36zyFXK%Bq^d{F1Pu@&cFWs8!@FUYk3RM|3g5an;IP0YiZ>l)}=C^88 z?I2X;JSqXh97ZD`uZ3A06*3WWVfDEP4W;zQ1jDBNc6lBMSlDr8HNF5 z3${I`cW8nb;m@N*&b?4Z^qvYiW`B$c2TyvQqUpM?u{$qp>$>NCp!KjJ@{lPvy<~tO z@&*War!Hy1`ASibh9c2G}6Qj1!kJwxaOMq(IPWxP1 z{X?@QVyoA}n2&Kjwt3&8qJZpiUP?}+0-?=>3cGbaSM6Ad0|Gx&wFPWi51*;*=Um-= z>YbGKn&E@~BEU0C>$F7#oWPvYeSJe(jZCkxODIqHM{!@e=n<3~vOU#EV~ly?kgEPQ zXJX?~s#xI1n?#i;JqOI~czJsPbo}#@auI$`MK%n~x8b6)F^{o?gh>|tJQYgoit-yf zh;NxCgy>ymDk;b_E;BWbZF$~&x#%_uB(0$Q@-nB50MU7GTYE6x0zQOx4k|sg?tO4= zRrC$#+IK+~NbS``8*h{>GMD)@UR+HQf1z0FF47X&e0~9*-N*Gcibs%$*SXQwAT$_P zIZE@s^4&_D@t2a@*~y^A@uyHbicGlCz1RCcGm)`1>AY3!&PzB-H|sO=na3H%yVIBP zM2}awv5nRh`6_FxjpTI4PqR}}aR*5D9i6}fG^QjxEqY@SLz-cNa*q=#DEW_(Isw&) zepa@u84n=nMjBNb7n zUP+VhUJdpT1iAyE$D2VgT0VVS9_N1zJ7y;ThBgl-`w^x<$nHcniQSMKRKUJ8BXEVy zlG&yav(ThA)yj9cBpT~j;csEhZk|Uxy}OVp<*KWA75)%JzWUa_X`;Z-cUWJ#YbD0W@w%|u=@P(;T1x+Ak z^HvC0jZHhN_N!!3Kv}`G9qQHn*aGPD9HoJ93{Y;5A2Ruos7Jeml|WDT+;t;A4>qyi zUFu=m=|RspW>bGdmGAK5m?rXphHl)w)0&ddD;hsuy<5y&8|qqaiItu+Fww8W#VB$O z2y0q#>II*v_b5`f&Kr>}dUE{9J^I+p?5jX7=HvORC92M!1NZN)rdrrk9nhDs8@;52 zhy3q$gFa`i%|6$fEaVuC^ngRnr)pgQN&r%ZHo_2qmH#DnEc~~jF?GVE9>ot$i$$pd zS`l9W!0mpQZq9q-%Q+8F4$VJ%qV7U&iLv7NWc}$_dVhHa!p`4l;vx_#_j)9;0gpmN z0F%ZbB-p|Bmvt$B2J?UPQ*lF~nE|zlL*qP{af4^y2##!UA5lDEhC*es8+Pci+DuWm zPEgpteRF*lcJXPjdyjzLkuWDBY%z6H7%UO>m`7_#kEqBGme`d@Qi|E<(I;xUkW6Uh z$jG8-pS|vm@VdDm+rowc~Dy%T^iQm^oJm-q7Bh%;`99? z3e*7??8ZIo8}ju4VBybE`1is~YVf>mniOM8Hhxc=6~#g+<>m@KNxtK6ErLrJ{u`p#ZTYSO;*Z;5r(*3d`;m>gUk7WY^z}F1@`2=b8_VNAO5}f7Bkb*xa`QMz8)zze&Lqr4c%;^J6y!!QJvs3%7vUiD*CvAjiG;FC!3iJ|Fb)wSA4pcKQ3uhNGUer;NT z)gPLL#lKF3j4A9^0wRuVUUe1!N>l)PrXb{O^!2SVkZ)B8yWGf&x6EZQL&oe<6CTqwqsLg#{Wu$MEbl~~BwJP7|p7=y4r4xlnmTN6FNaQ5&3YDO ziPcSyOr_n-ohKyW`}Oxu#Kh$BL;aZrnH3(p~}$Ioe!x8C%6f$z?7?1ZZcyx&0epNftgHXQZr|rWcqs)RbkB%)x)= z_S-vd?Kfp}$fTV(prALu>BwM>*UW{VqMqbzA$ug0c5&SKnG(OdDn&eFGpT4{Wy-ZD z^*P4AW1Ba!-907=oa*0Foz#*iYtH`MvzQw!{Uo7_4op{mX& zjda!ddmJ`bYUOD$c&iGj&-VAPx6L4C-?nnpR!d$oIv3(m1zuC9meLVog4cyx>&f|N zu7*J*e=OnGgD5K*qoqbpicN^*dQ*F&z9k`*0l@_srcqRh3_WkG8xv(AqmPdOn<@*@ zV57K#VEC&tUEf8pM*b{)st%KYDV*D6-0)Xy0je=2HXbQuQn92nnxNLYB%+o^MFmDi z@jxz?vS-G3vseb@UtG3+;8pq$>4=|X8goa7tUJBb`z`%g2zJ?r)uY@@5}K^@bACu} zX0ws19#T-S8&KRbpa&qeEIBiI@Td#Ec)R)6g^cnYwvSG3Y+4H!K0<6MpZ9)>vib~a zIv3chsF^NKtElq%x^mDy(_OgDGgI8>XIQnTS4PbVUNV?~>Zy`U7Q!~6SB&)F+^vNg zI2*Mf9?B>E8?^6tL|y%ikD8?#6cce$26WcKV(C=)hFGZU$rS(}voHb+Z#PHx>vsi) zXlasL$>;T+$ZV!8wV|~?ECbw%nF-)ykT_(Yo4py4;4s8WXa2OpD)?1`+9 zJgYI_WL6KmQVGlInStNd23Eo-oEiffW*hOBdQ?&^Nt~Wv$Wo>e{BaZ&(J;6ike1KPr(!=T2>B#$Z5#2a|Dk39P#A&c9gbqn;;=-48UGuA-bVO7;?oU>2pG5VGuY>95(y!PmcH5+(FpGfA%hXwgnI(v0)N`FIhz;_ z(*15mspwHUXersPT^=8ejK_<9QqdB^t){Qy&^(l1b_!H?sR+2rSWQY+j9204gS@zH z7!WLuR()+Bs@S$tHC)8$oOeMt8V`lK9v=dDHl~Vq)z}T5(7WW;(qrLOAGX}%AUc~v zhSFqx-UB3wMpKgh!cTD0Zv8VJb|{O(hfN-S3Nm>8+?YJwGq9aR3nVBFg-fsVr5)sMy^8!kI$%br5ok)$20mY^`%OI9LcCm4)S0+$QV!`cLk-;ksDkX~E=Eac zD(`{uJiO1K`pE$A`WVlOFi*#uEBlZ*i+OeDN)*xx4s{H%_uAy#&yi&uhjuN(`~^fR z-dldHQLZj|Ljnmo(MbPb-!Ag-!2Un_frF=h4Tin=NTm7fABi%ArM$a;4n%qMB+RXn zoYUs>w%00Gz`3!wy?t2nuV&d`y0Rq)u?|~9$TI6W_NC|v9fbMY@nAs^!b5fu0_wx_ z`O!d-?3zJd784qVrpn?1i+M)SV*4@6ugZUPX&snZyzb3oCQ%a{Ai5xwds#cg79#1h za2{v#X58y=GB1_%75N z^mQ-~m2$zSeC>&{d$&Y!uSJ;3lx1n~z6+Cy7{dGKZ?1#Eh(9HIv4CC|h~o~H-{``) zlJsLB&ao2%kvplfl!XkR!jyJ#kCUQ;0PzwGal)YL#gK$Uo}$LeJ(j7Yo6%7ivjN@` z#}$C1vY>D==-$E<{UH3vc*)#7|3IIJe-`@HhNOGsX+~gN_fFGryB{F$MESq;Xr+z!nddW?PUCL*pVSaDY7MB1}kmS{j@4`$mm{^Rj7g+GH@My>+ zlV>W9#ZISgml zUw%Re-P7FQbe$*hHi9b`uz||d-dmfd7#RsmZZdi3iF~`pGE-K*kApQ}|4g!B-O^D7 zr%T&7sVTEJ5WP7NC{8Bm%NoSzh$kQMj@VHZBg%4x6n-kV#L-si65 z*o33AT7?N)eVzAESL3F#igTFG9Xc_*1U#X}s2A)xX&?WAhs^jrVm^ro#<@1ZAbLM@ z3R3Ji`Kr(ha^Vd=cO4^?-Q-D--NhQY&t8=kC~*^V7UeWiaC6X4kJG;W*FkapBK+X9 z?;g^8rqhtjc9Mp6$2>iPM0A1AWI6gvedQ^J2t^ zygADc&*5JM+HF}=y#(;Kzhkn+_bran*2DSm-5*Um3$r!Vfp^=EhqpjpC!zU4;A!g< zRS^TJBqlRkaLkkS@x#S_$CR@$DK^U>exh2a2+gf`9DY)BuK3|9x$NV_$CQi3>cbsV z+v`yI4bkt+*{$=p(hUcnJCcji!hCTJD}^$Kk&;W+X$0zP&gv%#osYC=xA-%`Rnh=u34*+rnr#Jv#1s+9s2J39Bk}3#WpdhuE2MqMv+~FWMuuMHm>Mkv2lKClC;l_ic|(*!_>4BJB@!qd zjz~#d@}V-Qi}NM1>P#)#fs=0eY1W8|7*R6`PZWha7`#w2K6Sqzu-L6YE{=IV`K*o3 z))bzsf85lTF&4=1B(NfP{;Cx47~crB>>L~LDLKUx^j6PlwZW~ zT^Dh6!2o@B)Ke8Z;(2JRRShFE*XrDZAXQ22w`~^7Q>y~@W@l%CEPJfb4_RBQoaqQ2 zm87IGt3M~Xee>-=p4f^PD}$LoZG1!nO299SLl{$fQn38dO!+3$?rMD*0F-}~>)iY~ ztN&Ts+uqW4dR$E~;q~aGi!Xc?<1<*Z05S|Zj^uTuW` zf7JVb_a)%@{x0RgtiCK*fpT8|yV$RX))aA%#D)B4_W&^dT{y=$SX1un8Kis2*OC7V zDaW6&{a;N0pj+PtKClIs1guB7cFx#WQF%1K0d#}lE}=Etp6zc^=>3V;tdUnxk_DJC zMG^<(LVfEUTz^OTTX)FBpN;#!But$-_zt`H5)u%Rrwu>L?(jDVlo;IeiwX@;Hurz0 ziGZfMFZw|I!=8^-PZ#d#pSkql!a?y7-{aXLSg^zm318eVKl#5Q+aQ z&40@q|5hQ=ed$U6H`Z=k2k$OAl}|Wiy?^@@;p6N3@=E^yibDTC4WqvpbE~O7Ip+S8 z?035_+b^>Jl7RlB-}ZMu=6@smm+fhuw()EYeD?N|!@chfeVFg@1FkwSyks zNMcl8Y^BSJ`yy#0;q>cH$Lbl|%Xh!W6T+XzxFDJ1_6+pB^+X;t2q(ghZa-IfJ@|5s zqNdT90_p;od9lp+FlS!RAp7_T;f$4M{^VgOh^K`Lkg~tVOAg1aa&XJW6kO*~Zap)4 zLsD+}C1;77pT)wC=%OuOEfnhV9y7%7((W+dct{r*@HMYneyqhVcFUkI{xGl}fmMTN z>=Ab4`TlFpc1oZA%>=EKSplEL7b(a>=z*3G6U0&Q;t@`(MURz0TCwF1yT+30tl{hM zQ*kniT0Lo+@(u|(BlG)xCc5!m$W9?9e{&TOA*>@Im{3`aOdMO=UHp_Qu}g|TvrCCY z+c!+5whbz#P}G!Hw=18|m(&5?EjKlP7}HQU@LJ$Shu_5gH+H74Xjx2dZyLSQf%pl7 z3S3q~11l+1^56dWOzgs{-dvm=7nF7a8s9&J%kivO@X$)i?xzg;d#d0fh6e3udxhYJ zo4mJTo!up{u}g5zuvGKYYWb;j54aDu>t|5l-^$z}SxIs-Ay0p?_>6ed>{3UEwd_Or zYBG;A&j0Sd`ml75ZZp`^`kp&WW}Bz2Y9Nt6@s=!?Mg~;A)Ge*MhCItMW3r%ohnW&c zKYT9fO3QZNJ|nq6jR?Aa%DVB zk86LtdSvmt4V0AUH}quSmtA%^;I2w)nun`e0zIhm6AG)m8e!}x*+l53xG>MH_0Ax( zKp?@N-m!^Tw-#$yItCZ50eIpwhjdxf{s7bZ29n;J#h>T6>Ispy=dzy;vV(u!_vrGy ztrsdK#jLOvhBdkBldhg%zHZ=sEe4%P@7`2n<%rHeWR|GBsN$&ejhAz-F|%DUrrHYY znGWL^j8tw9*qNo3WoIAS`HiFMH4mo}RynC>;v;GvPR1#myB{GCfG*Rp_mI z)U8vs`Bl%AEOFRkK%9<>m{+eVU@vuX)c$2(LmVsWMnLENgiYQHHZOF;A>~*RGx$VI zXzZk|8O9r%lpEtrba<(!2Ys0MgeWKO&(Gz$1;W}**@ZK*mCkOWj30jzog=Z=Nt1n1 zC_~{X?R1lUw)8*_3=XTkTXnMf93sXjg6rk42|mEoQ$%cobQg<%Cn0e1GN{4lmL_4$ zCV;Mt86Vk_R(wF*AMr^>7I?b-l0Z@75(MnmEGK|>TaZQ`=nJjXmN-Yu$7i!^#@o;> zS(PPHH@M3hE``topU@P*Wg3c)BcY59@};yZ?3P za(!Y6wLX+%y3{s3xs~7|I@JBBWH}fe^Yv+YP6`u&@4gQ~u{6=WJUW z4e=ETjL(_;5wYRVmTAU}bUv}SZ2e|x;RO{GWdnOGsxxlZ%sv}4v@@aO-w?0xWDIG| zGd@84I2}eqVeT3`7?iwiKW=PM8gJ<1C*fOnHod2CN^O#YWhIW=-w>8GJ*@9nF@aAl zmT&?#9{)V|myqz8z5Hs7_2jPOhB!#qy#&AjS;&Pw$`C_!I-z_`+(_^=6_UV+*kk>P za3c_@n_cGKbhs{rd99^Jei~SS%cOv!X&}<9z1UgaGY2Wz7F)?%;sl|k7S1!7uwKI( zrgs=5Snt*JD}E0lYo*~eps}pJf{zDclnmouy*^@)48Vm5Unp=PBq5a5SJ?H6yyqc) z?nUKGc!!8R#Aa169r}!ZO={bI8}Lo90e7h%a}mua>|t3gp*weOfuP~iv;kTe6c|aX z&ZEP<$696IG0V%w7TGjCo44DyhF=C1cdW}ZoOpT1$6vFz582L>ItkE$Td5BY6CN!lcq^jIpq-wo6d#&Qa4V6=yi)-3i*VOaHnWE7!LK;q6S zz}7pMp&^G_^j5Jkm*01HpOm#WoT{?WgFgRxooc8JWlciIp+5NMEB>8%+#3sh=5^I# zx;c^(Y3c6KGIulW1(Af#V#=|(xhNCw2}{uvE7i!-5V4!*2u=} zK2EPBRT}|TAG`rY&Re#LHAHL((S3?8;)z2o;^8nv^KhNFROXj_)yI^o3ml=Os_(L) z4v*9Mq2fW{$@zu*I0s<0KHhTXYXiss0;3u^)yN!qTf46vy9|D|9Z~qpW3?WtUiZM~ zOJMDD@HWDJ|I!J{g!H7>jmLeEsHipHVpsK1oBZmT`GD2R0N<*d0{CG>=_$X5}t_`3s>F_x8xw5vHkj`wia= zRF`FooiY0tG%%jv998E(BugrP2&%-Guh4rwdE(Z`d{U;qf-uJ3znU;lU+TPGtFQJa z!lSLiZORK0?UVu#(KSYm5qpPXpIFDw>I+Qz=3`;0eAX?m)!5t5o>jrTV#c>gbZ}lQ z)7xS=%A@B>J9x%AX4QGT9!8QCy&;l(%pcU9T(kv|E3aY$`JaaF}-nl zimBd@qL1zUnh<@40GSu*I#OB74)_;ljnxV+foNGrl$Q$j{w8Q$-7XUqNlc6q((&Xv zG$c|-7J3O?*v@S5qgP?cQ#+`dq`bBW>kjhOvN$zN4F$5%((hZa->X&`*^9*YsUy62 z!8EwumTi_JGnGX4NZ4mwJxwUHg z9brTYe99=UZ2Jf#t`maam{IE;_beVVb$@+bnv#Xv!ZzgX&6~B`S~8gX{@ai2brAb3 z-o@b<0=Jc6s0N?~f|R#jfeDLzITq}*w8IGdm|jQV?eBZR5TX?51!PuN_CvE`=ti6M zeQ3Axp(Y`jzbkxJ#xzwRj! zi)@YO{&r1t2Idk)YyFmM_B-*zGsL2}&vl@%ClT_wsTn)KHJBHEDvLoLwp)coW!|X3 z&0o?Vo)Xx*d2Dh-xc&ipUh&%byds(6v;BQCcuS_Svfz^8@G}qAKgbsJO(A7j-hWr99GfA?6#q~-8U)v{s%XfUw* z>lE<@A-`Y%_MmEEhYg6h#jcH@wWBJRj~ZqC=9*d)dTg&0eu7vHV&Rw&h%l@ZBstD% zgk%BaAE0f@A+YU$bsgIonEQUvK$rS~GDl!$_W z^ddzKCXfK3cT_|Kq$x;~4hl$9DbiaIK?IQ^2uKsSAVmS`N_*!7yn64t>-&Dbf8M?F zoY^yb_MSa6XHK%FoS3oW*U&qx-QyC^PphF!wu>d^ZpQlG)QPFW>lv1N-gWyUsVeu4~kXsF4`ik9cpj?hN;j2589Bm3%2lH=M@9JCNBX zD*kj|PsMr&ZoNgbZFYcU{M$1jtoF^N?e#QF<++}_zJA4Nx@k9#nLX}~Kut#Ib(G_x zyQeBtmP%HtYf;%!D!HSsvgo$6tUcEy$wzgHY+~L==7dt79P>z|T%~ySal}~oaNAgJ z|JwN=;Xk_Bu+dEF*bobA4fWu6UG46J7QW{hH)gt6+okWH|rqxhE_sW&6@CN0{lty0G z)qPOe7o~ooduAwUVSjTW;Vbj2V+Os6$mm|nGqZ&q;Tbai#(jvUd+fHcnu%-NUth)z zTe!7i%E)HsM1*Rsljlerzv6Fw9hos)>s(?ylPM=`vofVW6kVTy^mFrjuj_~GZdlE@ zYDzFzxF2qPp8KMxpk|Gt3$Kwzj-5_m2KJ7w)2!1=9wz@fbd%AYrX239jK%du1b^HG z&h;11b%&>wr1NjIn}uk!D)4KCXpb-E-6dq}1#VSjeRE73jKW#8+E5s>J1z>myJ2zCPe2(`&ck? zh)Bf9X!yLAe zl&Ibh(1z*Fb-A6TCvmTaSc9zUXYL1XGH%n6>aftH#FNPhB0qH9m{mY&!f4TaP09P(QIve&1}pZ45X(oaF!s7u8kic(Rn zJMKEEO-iODVpeUTGftgzfZ>BC6-VxC(RZZFE{BcLlFmuFnG#5@VK!5S*?~Xml7}t^d8YL-LxoM=9nGRj_7du@CDOtdY!2NN$=TQmW_N7)VJ@)+_|2D zb23$p?JR0}pW~2~OG4un?R-J8ytAEHHly~@!eZ~uJ1+Oyjw?uaC9dg{++z!MoKBa^ zu|6D5|CrT?-cvx1q1}A5_}2WA^ck6)eDVAjflcmfEt^bv2yYqV10yBk!Gck_qA#Af zG5?9m5|m!K;xbw|)~El-BcpGppPI7$XiZfjS8mKD9@C`EnWJ@c7ZFs)WG!m(`S*$` zNjanG_DyaTQf$v#*nOjE>6zr2H~N6^pZ#V<-5>)~!boJ~+Ell6K+#gAW$!qaS?)*OBHv7_qyyp#3ZP6yw(s?Op_;gqRU z1BCsmnOSu_qa<>jf8Rbr^;#=7mQ$aD8++`7juX~`qvRiY4*VGw zcJ7HVoBf+^E1n`t;Sw1d-`SAS_}K+F%ABX~3~#2i9^rI2HgqZ>D7)gg4+S*>^VzT~ z=CBjNOGah=j`JmkA9TDD6@y9X)unUH!KC@kOfd`v^qcLsoWiO6q&k*I1%!|HDh-y0 z7n&O0$L0t+dU;*5<D8RP?Zq})=gr5o#@FUEt3I*S6nj!w z+RLPT3iQ0MQInCe&mrGGir&|a~Mx(I!Mg0tR&)eRggt)XC%u%OQjP|%UmezbqaepVo$9;qF0_< zkbw4ROYgAAP8J^u9GlWZC7ny3b-esm(Ink=h>tKpn{InFkSl&V_<`*Ye>Z_*Y{zvR zj%J)b0;l9lXGhD93;J4Mkoe@;hsZN`SMkl!5|QRufmYM5>?&VBoZSoVZlfNW6W;M#K^N z7Ud+WJx&Y3Xm@|po}TZ!T(I2wIBtSlHRRjCY#w>&>Y&dul}oSYTe&7nB|@8o zq|Zw`adLGeUb!SqM9Mh$?ac`CA1PD)FT8rUZu@L{e!II_39Wq8QeNVTASo%PS`4qb zaKD#hjJ(5Nq2sz>Q5jzbZH!T>Bugg(!4J{tc0-hp&4A6!4p|cc8d59b-qUMJ z3M)QeyT@c}BHzlw(B;1D9i+Pv&Zqw8p+J5$DW(JNH9Qzbo3cP=2}5wW9n9MrU3N^Q zBSlR=PB*~_a1X!hr{++g8d+4%9L;YX zF+Japel^oaWB15b24i!%=*`9IY-zFlRD~oD@)FO_$LGhEYso7&#!1lj{HIm++s+M> z`Ba`hhtgQK`m#V~0H#JUzaLgNalg5L*wcf(p4J?1R+p@tQJ?Pp%yoWwl`33KcG03C zSael~#9b_14@ZDVLvPXK`a!yf#??c#CH$A$q>|M#Y3H^%Z)7#Q3k2Z>26!qQPHk2c8Nh!%1v{sdQ?y z=_?fKg*np+F)H*1p9f7N6eA#r^8}>+V8k#3m;^5|_<3F)OzV0Jd5_ne=m}EwXOb7m z&XCi8QYm4~axS$lMA`I^kMKpVz3J=s%4Au!G_4sr8cAkiVqIW>f5qcL7CN(U7_naa<5*h zIBv8!1=-#5kIFDPc8h4h_XO)bc+Owq*B)6g;T=WiS9x|e?QwvxK!n$<)sb@Jc)B0< zhpIi8SHU|7;Bp~pP-BSyZ~J12ZFDS;DJS(Zwp3=~g4YG~UglO%7+6;LYg;VW&UUWh zo^00~!~j-WAgSMXqyDPMfnb8h5dR$7Q^w@cCk?`_q!g!s0;0MsA;u5r9sk>ARHFA| z`9B!mEvXjqKDE`$QzB-jW&&A(%fIbK{r_F|*jrri*xAmB{kzNh%DXPdfW?JV#P>$9 zNGML)&CgG6MF<-h_XN^YM1|&w$Uu>PIE53H)O*^wBsIH!l>Sdp?t*@n{?h$T;!nf7V?I zgV{LrRUu*;@gI-W^Xg`n%h_=v^5r z+8G1qfeDr$a&xxh+~pDNF0PjFTH5IUBtb(QJEIVjH3;+jl@<b3i|dMoB(LA zZ{dC?^2Y09gND;`9q39S5Kf0Q-ms zKmx!%!sWpFa2;XY-{UY3?)7U9AcP5S4>16g8`>2G!b^AzF$65c_51S#JcFE3j*jq< i|BHlhyALhi99IX}AS)V0RECX0U|?H;fh`M<>;C}wRV;e| literal 0 HcmV?d00001 diff --git a/challenge-accessibility-localization-guard/reports/risky-challenge.json b/challenge-accessibility-localization-guard/reports/risky-challenge.json new file mode 100644 index 00000000..0f3e9e62 --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/risky-challenge.json @@ -0,0 +1,145 @@ +{ + "challengeId": "sb-access-002", + "title": "Open climate forecasting challenge", + "decision": "hold", + "summary": { + "teamsReviewed": 2, + "materialsReviewed": 2, + "formsReviewed": 1, + "findings": 12, + "high": 7, + "medium": 5, + "low": 0 + }, + "findings": [ + { + "code": "STALE_TRANSLATION_DIGEST", + "severity": "high", + "sourceId": "rules", + "message": "rules es version references rules-v4, not current rules-v5.", + "affectedTeams": [ + "team-mx" + ], + "remediation": "Regenerate translated materials from the current rule digest and restart any affected timing windows." + }, + { + "code": "MISSING_REQUIRED_LANGUAGE", + "severity": "high", + "sourceId": "rules", + "message": "rules is missing required ja language coverage.", + "affectedTeams": [ + "team-jp" + ], + "remediation": "Provide the missing translation before opening submissions or mark the language as not required." + }, + { + "code": "ACCESSIBILITY_FORMAT_GAP", + "severity": "high", + "sourceId": "rules", + "message": "rules lacks accessible formats for screen-reader.", + "affectedTeams": [ + "team-jp" + ], + "remediation": "Add equivalent accessible formats, then notify affected teams before submissions open." + }, + { + "code": "MISSING_REQUIRED_LANGUAGE", + "severity": "high", + "sourceId": "walkthrough", + "message": "walkthrough is missing required es language coverage.", + "affectedTeams": [ + "team-mx" + ], + "remediation": "Provide the missing translation before opening submissions or mark the language as not required." + }, + { + "code": "MISSING_REQUIRED_LANGUAGE", + "severity": "high", + "sourceId": "walkthrough", + "message": "walkthrough is missing required ja language coverage.", + "affectedTeams": [ + "team-jp" + ], + "remediation": "Provide the missing translation before opening submissions or mark the language as not required." + }, + { + "code": "ACCESSIBILITY_FORMAT_GAP", + "severity": "high", + "sourceId": "walkthrough", + "message": "walkthrough lacks accessible formats for captions.", + "affectedTeams": [ + "team-mx" + ], + "remediation": "Add equivalent accessible formats, then notify affected teams before submissions open." + }, + { + "code": "ACCESSIBILITY_FORMAT_GAP", + "severity": "high", + "sourceId": "walkthrough", + "message": "walkthrough lacks accessible formats for screen-reader.", + "affectedTeams": [ + "team-jp" + ], + "remediation": "Add equivalent accessible formats, then notify affected teams before submissions open." + }, + { + "code": "VIDEO_CAPTION_TRANSCRIPT_GAP", + "severity": "medium", + "sourceId": "walkthrough", + "message": "walkthrough is a required video without captions or transcript.", + "affectedTeams": [ + "team-mx", + "team-jp" + ], + "remediation": "Add captions or a transcript before treating the walkthrough as required." + }, + { + "code": "TIMEZONE_DISPLAY_GAP", + "severity": "medium", + "sourceId": "submission", + "message": "submission deadline is not displayed in every solver team's timezone.", + "affectedTeams": [ + "team-mx", + "team-jp" + ], + "remediation": "Display UTC plus each eligible team's local timezone before the challenge clock starts." + }, + { + "code": "FORM_LANGUAGE_GAP", + "severity": "medium", + "sourceId": "prequalification", + "message": "prequalification form is missing es localization.", + "affectedTeams": [ + "team-mx" + ], + "remediation": "Localize prequalification forms before requiring teams to complete them." + }, + { + "code": "FORM_LANGUAGE_GAP", + "severity": "medium", + "sourceId": "prequalification", + "message": "prequalification form is missing ja localization.", + "affectedTeams": [ + "team-jp" + ], + "remediation": "Localize prequalification forms before requiring teams to complete them." + }, + { + "code": "FORM_ACCESSIBILITY_GAP", + "severity": "medium", + "sourceId": "prequalification", + "message": "prequalification form is not keyboard and screen-reader accessible.", + "affectedTeams": [ + "team-mx", + "team-jp" + ], + "remediation": "Add keyboard navigation and screen-reader labels before using the form for eligibility." + } + ], + "releaseCriteria": [ + "Required challenge materials cover every solver-team language.", + "Translations reference the current immutable rule digest.", + "Required documents, videos, and forms include equivalent accessible formats.", + "Deadlines are shown in UTC and each eligible team's local timezone." + ] +} \ No newline at end of file diff --git a/challenge-accessibility-localization-guard/reports/risky-challenge.md b/challenge-accessibility-localization-guard/reports/risky-challenge.md new file mode 100644 index 00000000..5ba295ef --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/risky-challenge.md @@ -0,0 +1,29 @@ +# Open climate forecasting challenge + +Scenario: risky-challenge + +Decision: HOLD + +Reviewed 2 solver teams, 2 materials, and 1 forms. + +## Findings + +- HIGH STALE_TRANSLATION_DIGEST: rules es version references rules-v4, not current rules-v5. Affected: team-mx +- HIGH MISSING_REQUIRED_LANGUAGE: rules is missing required ja language coverage. Affected: team-jp +- HIGH ACCESSIBILITY_FORMAT_GAP: rules lacks accessible formats for screen-reader. Affected: team-jp +- HIGH MISSING_REQUIRED_LANGUAGE: walkthrough is missing required es language coverage. Affected: team-mx +- HIGH MISSING_REQUIRED_LANGUAGE: walkthrough is missing required ja language coverage. Affected: team-jp +- HIGH ACCESSIBILITY_FORMAT_GAP: walkthrough lacks accessible formats for captions. Affected: team-mx +- HIGH ACCESSIBILITY_FORMAT_GAP: walkthrough lacks accessible formats for screen-reader. Affected: team-jp +- MEDIUM VIDEO_CAPTION_TRANSCRIPT_GAP: walkthrough is a required video without captions or transcript. Affected: team-mx, team-jp +- MEDIUM TIMEZONE_DISPLAY_GAP: submission deadline is not displayed in every solver team's timezone. Affected: team-mx, team-jp +- MEDIUM FORM_LANGUAGE_GAP: prequalification form is missing es localization. Affected: team-mx +- MEDIUM FORM_LANGUAGE_GAP: prequalification form is missing ja localization. Affected: team-jp +- MEDIUM FORM_ACCESSIBILITY_GAP: prequalification form is not keyboard and screen-reader accessible. Affected: team-mx, team-jp + +## Release Criteria + +- Required challenge materials cover every solver-team language. +- Translations reference the current immutable rule digest. +- Required documents, videos, and forms include equivalent accessible formats. +- Deadlines are shown in UTC and each eligible team's local timezone. diff --git a/challenge-accessibility-localization-guard/reports/risky-challenge.svg b/challenge-accessibility-localization-guard/reports/risky-challenge.svg new file mode 100644 index 00000000..ee5c4f9d --- /dev/null +++ b/challenge-accessibility-localization-guard/reports/risky-challenge.svg @@ -0,0 +1,12 @@ + + + Challenge Accessibility Localization Guard + sb-access-002 + + HOLD + Findings: 12 + High: 7 + Medium: 5 + Low: 0 + Synthetic challenge packet only. No external translation or private data. + \ No newline at end of file diff --git a/challenge-accessibility-localization-guard/requirements-map.md b/challenge-accessibility-localization-guard/requirements-map.md new file mode 100644 index 00000000..afcd7829 --- /dev/null +++ b/challenge-accessibility-localization-guard/requirements-map.md @@ -0,0 +1,13 @@ +# Requirements Map + +Issue #18 asks for a Scientific Bounty System that supports global research participation, challenge posting, secure submissions, arbitration, rewards, and trust between sponsors and solvers. + +| Issue capability | This implementation | +| --- | --- | +| Global participation | Validates required-language coverage for every eligible solver team. | +| Challenge posting portal | Holds publication when required rules, walkthroughs, or forms are inaccessible. | +| Timeline fairness | Checks UTC and local-time display for solver-team deadlines. | +| Prequalification support | Validates localized and keyboard/screen-reader accessible prequalification forms. | +| Trust and arbitration readiness | Emits deterministic `release`, `revise`, or `hold` decisions with remediation steps. | + +The module uses synthetic data only and does not contact credentials, private challenge records, payment systems, external APIs, or live translation services. diff --git a/challenge-accessibility-localization-guard/sample-data.js b/challenge-accessibility-localization-guard/sample-data.js new file mode 100644 index 00000000..59c7d9c5 --- /dev/null +++ b/challenge-accessibility-localization-guard/sample-data.js @@ -0,0 +1,63 @@ +const accessibleChallenge = { + challengeId: "sb-access-001", + title: "Open climate forecasting challenge", + currentRuleDigest: "rules-v5", + solverTeams: [ + { id: "team-mx", requiredLanguages: ["en", "es"], accessibilityNeeds: ["captions"], timezone: "America/Mexico_City" }, + { id: "team-jp", requiredLanguages: ["en", "ja"], accessibilityNeeds: ["screen-reader"], timezone: "Asia/Tokyo" }, + ], + materials: [ + { + id: "rules", + required: true, + type: "document", + languageVersions: { en: "rules-v5", es: "rules-v5", ja: "rules-v5" }, + accessibleFormats: ["html", "pdf-tagged", "screen-reader"], + }, + { + id: "walkthrough", + required: true, + type: "video", + languageVersions: { en: "rules-v5", es: "rules-v5", ja: "rules-v5" }, + accessibleFormats: ["captions", "transcript", "audio-description"], + }, + ], + deadlines: [ + { id: "submission", timestamp: "2026-07-10T17:00:00Z", displayTimezones: ["UTC", "America/Mexico_City", "Asia/Tokyo"] }, + ], + forms: [ + { id: "prequalification", required: true, languageVersions: { en: "rules-v5", es: "rules-v5", ja: "rules-v5" }, accessibleFormats: ["keyboard", "screen-reader"] }, + ], +}; + +const riskyChallenge = { + ...accessibleChallenge, + challengeId: "sb-access-002", + materials: [ + { + id: "rules", + required: true, + type: "document", + languageVersions: { en: "rules-v5", es: "rules-v4" }, + accessibleFormats: ["pdf"], + }, + { + id: "walkthrough", + required: true, + type: "video", + languageVersions: { en: "rules-v5" }, + accessibleFormats: ["video-only"], + }, + ], + deadlines: [ + { id: "submission", timestamp: "2026-07-10T17:00:00Z", displayTimezones: ["UTC"] }, + ], + forms: [ + { id: "prequalification", required: true, languageVersions: { en: "rules-v5" }, accessibleFormats: ["mouse"] }, + ], +}; + +module.exports = { + accessibleChallenge, + riskyChallenge, +}; diff --git a/challenge-accessibility-localization-guard/test.js b/challenge-accessibility-localization-guard/test.js new file mode 100644 index 00000000..3dc77508 --- /dev/null +++ b/challenge-accessibility-localization-guard/test.js @@ -0,0 +1,36 @@ +const assert = require("assert"); + +const { assessAccessibilityLocalization, normalizeChallenge } = require("./index"); +const { accessibleChallenge, riskyChallenge } = require("./sample-data"); + +const clean = assessAccessibilityLocalization(accessibleChallenge); +assert.strictEqual(clean.decision, "release"); +assert.strictEqual(clean.summary.findings, 0); + +const risky = assessAccessibilityLocalization(riskyChallenge); +assert.strictEqual(risky.decision, "hold"); +for (const code of [ + "MISSING_REQUIRED_LANGUAGE", + "STALE_TRANSLATION_DIGEST", + "ACCESSIBILITY_FORMAT_GAP", + "VIDEO_CAPTION_TRANSCRIPT_GAP", + "TIMEZONE_DISPLAY_GAP", + "FORM_LANGUAGE_GAP", + "FORM_ACCESSIBILITY_GAP", +]) { + assert(risky.findings.some((finding) => finding.code === code), `missing ${code}`); +} + +const partial = assessAccessibilityLocalization({ + ...accessibleChallenge, + deadlines: [{ id: "final", timestamp: "2026-07-10T17:00:00Z", displayTimezones: ["UTC"] }], +}); +assert.strictEqual(partial.decision, "revise"); +assert(partial.findings.some((finding) => finding.code === "TIMEZONE_DISPLAY_GAP")); + +assert.throws( + () => normalizeChallenge({ ...accessibleChallenge, challengeId: "" }), + /challengeId must be a non-empty string/ +); + +console.log("challenge accessibility localization guard tests passed");