From f3e0acdddcf97964cf9c7b77466cd8517c7bf206 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Fri, 5 Jun 2026 16:06:50 +0200 Subject: [PATCH 1/3] ci: combine release workflows into a single file for trusted publishing (#2345) Co-authored-by: Claude Opus 4.8 --- .github/workflows/prerelease-canary.yml | 37 --------------------- .github/workflows/release.yml | 44 +++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 40 deletions(-) delete mode 100644 .github/workflows/prerelease-canary.yml diff --git a/.github/workflows/prerelease-canary.yml b/.github/workflows/prerelease-canary.yml deleted file mode 100644 index c4a24d95b..000000000 --- a/.github/workflows/prerelease-canary.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: prerelease (canary) - -on: - push: - branches: - - canary - -jobs: - main: - runs-on: ubuntu-latest - permissions: - contents: write - id-token: write - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 - with: - cache: 'pnpm' - node-version: 20.x - registry-url: 'https://registry.npmjs.org' - - run: pnpm install - - run: pnpm turbo run build --filter './packages/**' - - run: | - git config --global user.name "${{ github.actor }}" - git config --global user.email "${{ github.actor }}@users.noreply.github.com" - # Change workspace dependencies from "workspace:^" to "workspace:" - - run: | - sed -i 's/"use-intl": "workspace:\^"/"use-intl": "workspace:"/' ./packages/next-intl/package.json && \ - sed -i 's/"next-intl-swc-plugin-extractor": "workspace:\^"/"next-intl-swc-plugin-extractor": "workspace:"/' ./packages/next-intl/package.json && \ - git commit -am "use fixed version" - - run: pnpm lerna publish 0.0.0-canary-${GITHUB_SHA::7} --no-git-reset --dist-tag canary --no-push --yes - if: "${{startsWith(github.event.head_commit.message, 'fix: ') || startsWith(github.event.head_commit.message, 'feat: ') || startsWith(github.event.head_commit.message, 'feat!: ')}}" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - NPM_CONFIG_PROVENANCE: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6fb5e1c11..03db8f47a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,18 @@ name: release +# A single workflow file so npm Trusted Publishing can be configured against it. +# The branch determines which release runs: `main` → stable (latest), `canary` +# → prerelease (canary). Only the job matching the pushed branch runs. on: push: branches: - main + - canary jobs: - main: + stable: + name: stable (latest) + if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest permissions: contents: write @@ -16,9 +22,9 @@ jobs: - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: - cache: "pnpm" + cache: 'pnpm' node-version: 20.x - registry-url: "https://registry.npmjs.org" + registry-url: 'https://registry.npmjs.org' - run: npm install -g npm@latest # Trusted publishers - run: pnpm install - run: | @@ -29,3 +35,35 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # No NODE_AUTH_TOKEN since we use Trusted Publishers + + canary: + name: prerelease (canary) + if: github.ref == 'refs/heads/canary' + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + cache: 'pnpm' + node-version: 20.x + registry-url: 'https://registry.npmjs.org' + - run: npm install -g npm@latest # Trusted publishers + - run: pnpm install + - run: pnpm turbo run build --filter './packages/**' + - run: | + git config --global user.name "${{ github.actor }}" + git config --global user.email "${{ github.actor }}@users.noreply.github.com" + # Change workspace dependencies from "workspace:^" to "workspace:" + - run: | + sed -i 's/"use-intl": "workspace:\^"/"use-intl": "workspace:"/' ./packages/next-intl/package.json && \ + sed -i 's/"next-intl-swc-plugin-extractor": "workspace:\^"/"next-intl-swc-plugin-extractor": "workspace:"/' ./packages/next-intl/package.json && \ + git commit -am "use fixed version" + - run: pnpm lerna publish 0.0.0-canary-${GITHUB_SHA::7} --no-git-reset --dist-tag canary --no-push --yes + if: "${{startsWith(github.event.head_commit.message, 'fix: ') || startsWith(github.event.head_commit.message, 'feat: ') || startsWith(github.event.head_commit.message, 'feat!: ')}}" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # No NODE_AUTH_TOKEN since we use Trusted Publishers From 2f201b8217689ddea3d5916137fbac50e5b73f36 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Fri, 5 Jun 2026 16:30:06 +0200 Subject: [PATCH 2/3] feat: Extract `useTranslations`/`getTranslations` usages in SWC plugin (#2344) Co-authored-by: Claude Opus 4.8 --- .../src/extractor/catalog/CatalogManager.tsx | 34 +- .../extractor/extractor/MessageExtractor.tsx | 23 +- packages/next-intl/src/extractor/types.tsx | 2 +- packages/swc-plugin-extractor/src/lib.rs | 720 +++++++++--------- .../release/swc_plugin_extractor.wasm | Bin 1270460 -> 1273559 bytes .../swc-plugin-extractor/tests/fixture.rs | 46 +- .../tests/fixture/alias-hook/output.json | 9 +- .../tests/fixture/async-basic/output.json | 9 +- .../fixture/async-explicit-id/output.json | 9 +- .../tests/fixture/async-locale/output.json | 9 +- .../tests/fixture/async-namespace/output.json | 9 +- .../tests/fixture/async-rename/output.json | 9 +- .../tests/fixture/basic/output.json | 9 +- .../tests/fixture/date-format/output.json | 9 +- .../tests/fixture/duplicates/output.json | 18 +- .../fixture/existing-aliased-hook/output.json | 17 +- .../tests/fixture/existing-hook/output.json | 17 +- .../tests/fixture/get-translations/input.js | 6 + .../tests/fixture/get-translations/output.js | 5 + .../fixture/get-translations/output.json | 10 + .../tests/fixture/get-translations/output.map | 1 + .../tests/fixture/let/output.json | 9 +- .../tests/fixture/multiple-hooks/output.json | 72 +- .../tests/fixture/namespace/output.json | 9 +- .../fixture/obj-id-double-quotes/output.json | 9 +- .../tests/fixture/obj-id-formats/output.json | 9 +- .../fixture/obj-id-namespace/output.json | 9 +- .../tests/fixture/obj-id-rich/output.json | 9 +- .../fixture/obj-id-single-quotes/output.json | 9 +- .../obj-id-template-quotes/output.json | 9 +- .../tests/fixture/obj-id-values/output.json | 9 +- .../fixture/quote-variations/output.json | 27 +- .../tests/fixture/rename/output.json | 9 +- .../tests/fixture/shadow/output.json | 9 +- .../tests/fixture/t-has/output.json | 9 +- .../tests/fixture/t-markup/output.json | 9 +- .../tests/fixture/t-rich/output.json | 9 +- .../use-translations-dynamic-key/input.js | 12 + .../use-translations-dynamic-key/output.js | 10 + .../use-translations-dynamic-key/output.json | 10 + .../use-translations-dynamic-key/output.map | 1 + .../use-translations-with-extracted/input.js | 9 + .../use-translations-with-extracted/output.js | 7 + .../output.json | 20 + .../output.map | 1 + .../tests/fixture/use-translations/input.js | 13 + .../tests/fixture/use-translations/output.js | 11 + .../fixture/use-translations/output.json | 50 ++ .../tests/fixture/use-translations/output.map | 1 + .../tests/fixture/values/output.json | 9 +- 50 files changed, 819 insertions(+), 531 deletions(-) create mode 100644 packages/swc-plugin-extractor/tests/fixture/get-translations/input.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/get-translations/output.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/get-translations/output.json create mode 100644 packages/swc-plugin-extractor/tests/fixture/get-translations/output.map create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/input.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.json create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.map create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/input.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.json create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.map create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations/input.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations/output.js create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations/output.json create mode 100644 packages/swc-plugin-extractor/tests/fixture/use-translations/output.map diff --git a/packages/next-intl/src/extractor/catalog/CatalogManager.tsx b/packages/next-intl/src/extractor/catalog/CatalogManager.tsx index b9910262b..05d632200 100644 --- a/packages/next-intl/src/extractor/catalog/CatalogManager.tsx +++ b/packages/next-intl/src/extractor/catalog/CatalogManager.tsx @@ -11,7 +11,7 @@ import type { ExtractorConfig, ExtractorMessage, Locale, - SourceMessage + SourceExtractedMessage } from '../types.js'; import { compareReferences, @@ -43,17 +43,17 @@ export default class CatalogManager implements Disposable { */ private sourceMessagesByFile: Map< /* File path */ string, - Map> + Map> > = new Map(); /** * Reverse index for rebuilding aggregated messages without scanning all files. - * Contains the same `SourceMessage` arrays as `sourceMessagesByFile` and is + * Contains the same `SourceExtractedMessage` arrays as `sourceMessagesByFile` and is * kept in sync with it. */ private sourceMessagesById: Map< /* ID */ string, - Map> + Map> > = new Map(); /** @@ -308,8 +308,8 @@ export default class CatalogManager implements Disposable { private async extractFile( absoluteFilePath: string - ): Promise | undefined> { - let messages: Array = []; + ): Promise | undefined> { + let messages: Array = []; try { const content = await fs.readFile(absoluteFilePath, 'utf8'); let extraction: Awaited>; @@ -330,7 +330,7 @@ export default class CatalogManager implements Disposable { private applyFileMessages( absoluteFilePath: string, - messages: Array + messages: Array ): boolean { const prevFileMessages = this.sourceMessagesByFile.get(absoluteFilePath); const nextFileMessages = this.groupSourceMessagesById(messages); @@ -378,9 +378,9 @@ export default class CatalogManager implements Disposable { } private groupSourceMessagesById( - messages: Array - ): Map> { - const result = new Map>(); + messages: Array + ): Map> { + const result = new Map>(); for (const message of messages) { const messagesById = result.get(message.id); if (messagesById) { @@ -429,7 +429,7 @@ export default class CatalogManager implements Disposable { } private mergeDescriptions( - messages: Array + messages: Array ): ExtractorMessage['description'] { const sortedByReference = messages.toSorted((a, b) => compareReferences(a.reference, b.reference) @@ -447,8 +447,8 @@ export default class CatalogManager implements Disposable { } private haveMessagesChangedForFile( - beforeMessages: Map> | undefined, - afterMessages: Map> + beforeMessages: Map> | undefined, + afterMessages: Map> ): boolean { // If one exists and the other doesn't, there's a change if (!beforeMessages) { @@ -481,8 +481,8 @@ export default class CatalogManager implements Disposable { } private areSourceMessageArraysEqual( - messages1: Array, - messages2: Array + messages1: Array, + messages2: Array ): boolean { return ( messages1.length === messages2.length && @@ -493,8 +493,8 @@ export default class CatalogManager implements Disposable { } private areSourceMessagesEqual( - msg1: SourceMessage, - msg2: SourceMessage + msg1: SourceExtractedMessage, + msg2: SourceExtractedMessage ): boolean { return ( msg1.id === msg2.id && diff --git a/packages/next-intl/src/extractor/extractor/MessageExtractor.tsx b/packages/next-intl/src/extractor/extractor/MessageExtractor.tsx index 0170bc1c0..3b942f8c5 100644 --- a/packages/next-intl/src/extractor/extractor/MessageExtractor.tsx +++ b/packages/next-intl/src/extractor/extractor/MessageExtractor.tsx @@ -1,7 +1,7 @@ import {createRequire} from 'module'; import path from 'path'; import {transform} from '@swc/core'; -import type {SourceMessage} from '../types.js'; +import type {SourceExtractedMessage} from '../types.js'; import {getDefaultProjectRoot, normalizePathToPosix} from '../utils.js'; import LRUCache from './LRUCache.js'; @@ -12,7 +12,7 @@ export default class MessageExtractor { private projectRoot: string; private sourceMap: boolean; private compileCache = new LRUCache<{ - messages: Array; + messages: Array; code: string; map?: string; }>(750); @@ -31,7 +31,7 @@ export default class MessageExtractor { absoluteFilePath: string, source: string ): Promise<{ - messages: Array; + messages: Array; code: string; map?: string; }> { @@ -79,9 +79,20 @@ export default class MessageExtractor { // TODO: Improve the typing of @swc/core const output = (result as any).output as string; - const messages = JSON.parse( - JSON.parse(output).results - ) as Array; + // The plugin emits a tagged union of extracted messages and + // `useTranslations` usages; this extractor only consumes the former. + const messages = ( + JSON.parse(JSON.parse(output).results) as Array< + {type: 'extracted' | 'translation'} & SourceExtractedMessage + > + ) + .filter((item) => item.type === 'extracted') + .map((item) => ({ + id: item.id, + message: item.message, + description: item.description, + reference: item.reference + })); const extractionResult = { code: result.code, diff --git a/packages/next-intl/src/extractor/types.tsx b/packages/next-intl/src/extractor/types.tsx index 99ffed1f0..effddc0f4 100644 --- a/packages/next-intl/src/extractor/types.tsx +++ b/packages/next-intl/src/extractor/types.tsx @@ -11,7 +11,7 @@ export type ExtractorMessageReference = { }; /** A single statically extracted source-code usage before any aggregation. */ -export type SourceMessage = { +export type SourceExtractedMessage = { id: string; message: string; description: string | null; diff --git a/packages/swc-plugin-extractor/src/lib.rs b/packages/swc-plugin-extractor/src/lib.rs index fc3834681..7b3f6929c 100644 --- a/packages/swc-plugin-extractor/src/lib.rs +++ b/packages/swc-plugin-extractor/src/lib.rs @@ -49,365 +49,412 @@ struct Config { file_path: String, } -pub struct TransformVisitor { - is_development: bool, - file_path: String, - source_map: Option>, - - hook_local_names: FxHashMap, - - translator_map: FxHashMap, - - /// Each statically extracted source-code usage in discovery order. - results: Vec, -} - -impl TransformVisitor { - pub fn new( - is_development: bool, - file_path: String, - source_map: Option>, - ) -> Self { - Self { - is_development, - file_path, - source_map, - hook_local_names: Default::default(), - translator_map: Default::default(), - results: Default::default(), - } - } - - pub fn get_results(&self) -> Vec { - self.results.clone() - } - - fn define_translator(&mut self, name: Id, namespace: Option) { - self.translator_map - .insert(name, TranslatorInfo { namespace }); - } -} - -#[derive(Debug, Clone)] -struct TranslatorInfo { - namespace: Option, +/// A statically analyzable usage, tagged by kind in the serialized output. +#[derive(Debug, Clone, Serialize)] +#[serde(tag = "type", rename_all = "lowercase")] +pub enum SourceMessage { + /// An inline message from `useExtracted` / `getExtracted`. + Extracted(ExtractedMessage), + /// A `useTranslations` / `getTranslations` key reference. + Translation(TranslationUse), } #[derive(Debug, Clone, Serialize)] -pub struct SourceMessage { +pub struct ExtractedMessage { pub id: Wtf8Atom, pub message: Wtf8Atom, pub description: Option, pub reference: Reference, } +#[derive(Debug, Clone, Serialize)] +pub struct TranslationUse { + pub id: String, + pub reference: Reference, +} + #[derive(Debug, Clone, Serialize)] pub struct Reference { pub path: String, pub line: usize, } -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -enum HookType { - UseTranslation, - GetTranslation, +/// A next-intl hook a translator can be bound to. +#[derive(Debug, Clone, Copy)] +enum Hook { + /// `useExtracted` / `getExtracted` — extracts inline messages and is + /// rewritten to the real translations hook. + Extracted(ExtractedHook), + /// Plain `useTranslations` / `getTranslations` — usages are recorded as-is. + Translation, +} + +/// The client (`useExtracted`) or server (`getExtracted`) extraction hook. +#[derive(Debug, Clone, Copy)] +enum ExtractedHook { + Client, + Server, } -impl HookType { - /// The extracted hook name we look for in imports (e.g. `useExtracted`) - fn extracted_name(self) -> &'static str { +impl ExtractedHook { + /// The hook name we look for in imports (e.g. `useExtracted`). + fn imported_name(self) -> &'static str { match self { - HookType::UseTranslation => "useExtracted", - HookType::GetTranslation => "getExtracted", + ExtractedHook::Client => "useExtracted", + ExtractedHook::Server => "getExtracted", } } - /// The real hook name we import from next-intl (e.g. `useTranslations`) + /// The real next-intl hook it's rewritten to (e.g. `useTranslations`). fn target_name(self) -> &'static str { match self { - HookType::UseTranslation => "useTranslations", - HookType::GetTranslation => "getTranslations", + ExtractedHook::Client => "useTranslations", + ExtractedHook::Server => "getTranslations", } } - /// The unique local identifier used to avoid conflicts with existing imports + /// A unique local identifier to avoid conflicts with existing imports. fn local_name(self) -> swc_atoms::Atom { match self { - HookType::UseTranslation => "useTranslations$1".into(), - HookType::GetTranslation => "getTranslations$1".into(), + ExtractedHook::Client => "useTranslations$1".into(), + ExtractedHook::Server => "getTranslations$1".into(), } } } -impl VisitMut for TransformVisitor { - fn visit_mut_call_expr(&mut self, call: &mut CallExpr) { - let mut is_translator_call = false; - let mut namespace = None; +#[derive(Debug, Clone, Copy)] +enum TranslatorKind { + Extracted, + Translation, +} + +/// A translator binding such as `const t = useTranslations('ns')`. +struct Translator { + kind: TranslatorKind, + namespace: Option, +} + +pub struct TransformVisitor { + is_development: bool, + file_path: String, + source_map: Option>, + + /// Local import names of next-intl hooks (`useExtracted`, `useTranslations`, …). + hook_local_names: FxHashMap, + + /// Translator bindings created from those hooks. + translator_map: FxHashMap, - // Handle Identifier case: t("message") - match &call.callee { + /// Each statically analyzable usage in discovery order. + results: Vec, +} + +impl TransformVisitor { + pub fn new( + is_development: bool, + file_path: String, + source_map: Option>, + ) -> Self { + Self { + is_development, + file_path, + source_map, + hook_local_names: Default::default(), + translator_map: Default::default(), + results: Default::default(), + } + } + + pub fn get_results(&self) -> Vec { + self.results.clone() + } + + /// The kind and namespace of the translator a call's callee is bound to, + /// honoring the member methods valid for each kind (`t`, `t.rich`, …). + fn resolve_translator(&self, callee: &Callee) -> Option<(TranslatorKind, Option)> { + match callee { Callee::Expr(box Expr::Ident(ident)) => { - if let Some(translator) = self.translator_map.get(&ident.to_id()) { - is_translator_call = true; - namespace = translator.namespace.clone(); - } + let translator = self.translator_map.get(&ident.to_id())?; + Some((translator.kind, translator.namespace.clone())) } - Callee::Expr(box Expr::Member(MemberExpr { obj: box Expr::Ident(obj), prop: MemberProp::Ident(prop), .. })) => { - if matches!(&*prop.sym, "rich" | "markup" | "has") { - if let Some(translator) = self.translator_map.get(&obj.to_id()) { - is_translator_call = true; - namespace = translator.namespace.clone(); + let translator = self.translator_map.get(&obj.to_id())?; + let valid_method = match translator.kind { + TranslatorKind::Extracted => matches!(&*prop.sym, "rich" | "markup" | "has"), + TranslatorKind::Translation => { + matches!(&*prop.sym, "rich" | "markup" | "has" | "raw") } - } + }; + valid_method.then(|| (translator.kind, translator.namespace.clone())) } - - _ => {} + _ => None, } + } + + /// Records a `useTranslations` / `getTranslations` key reference, resolving + /// the id as far as it is statically known (namespace and/or key). + fn record_translation(&mut self, call: &CallExpr, namespace: Option) { + let key = call + .args + .first() + .and_then(|arg| extract_static_string(&arg.expr)); + let id = match (namespace, key) { + (Some(ns), Some(k)) => format!( + "{}{}{}", + ns.to_string_lossy(), + NAMESPACE_SEPARATOR, + k.to_string_lossy() + ), + // A dynamic key under a namespace covers the whole namespace. + (Some(ns), None) => ns.to_string_lossy().to_string(), + (None, Some(k)) => k.to_string_lossy().to_string(), + // `useTranslations()` with a dynamic key can't be statically analyzed; skip it. + (None, None) => return, + }; + let line = self + .source_map + .as_ref() + .map_or(0, |sm| sm.lookup_char_pos(call.span.lo).line); + self.results + .push(SourceMessage::Translation(TranslationUse { + id, + reference: Reference { + path: self.file_path.clone(), + line, + }, + })); + } - if is_translator_call { - let arg0 = call.args.first(); - - let mut message_text = None; - let mut explicit_id = None; - let mut description = None; - let mut values_node = None; - let mut formats_node = None; - - if let Some(arg0) = arg0 { - match &*arg0.expr { - // Handle object syntax: t({id: 'key', message: 'text'}) - Expr::Object(ObjectLit { props, .. }) => { - for prop in props { - if let PropOrSpread::Prop(box Prop::KeyValue(KeyValueProp { - key: PropName::Ident(key), - value, - .. - })) = prop - { - if key.sym == "id" { - let static_id = extract_static_string(value); - if let Some(static_id) = static_id { - explicit_id = Some(static_id); - } - } else if key.sym == "message" { - let static_message = extract_static_string(value); - if let Some(static_message) = static_message { - message_text = Some(static_message); - } else { - warn_dynamic_expression(value); - } - } else if key.sym == "description" { - let static_description = extract_static_string(value); - if let Some(static_description) = static_description { - description = Some(static_description); - } else { - warn_dynamic_expression(value); - } - } else if key.sym == "values" { - values_node = Some(value.clone()); - } else if key.sym == "formats" { - formats_node = Some(value.clone()); + /// Records an inline `useExtracted` / `getExtracted` message and rewrites the + /// call to reference the generated key. + fn extract_message(&mut self, call: &mut CallExpr, namespace: Option) { + let mut message_text = None; + let mut explicit_id = None; + let mut description = None; + let mut values_node = None; + let mut formats_node = None; + + if let Some(arg0) = call.args.first() { + match &*arg0.expr { + // Handle object syntax: t({id: 'key', message: 'text'}) + Expr::Object(ObjectLit { props, .. }) => { + for prop in props { + if let PropOrSpread::Prop(box Prop::KeyValue(KeyValueProp { + key: PropName::Ident(key), + value, + .. + })) = prop + { + if key.sym == "id" { + let static_id = extract_static_string(value); + if let Some(static_id) = static_id { + explicit_id = Some(static_id); + } + } else if key.sym == "message" { + let static_message = extract_static_string(value); + if let Some(static_message) = static_message { + message_text = Some(static_message); + } else { + warn_dynamic_expression(value); } + } else if key.sym == "description" { + let static_description = extract_static_string(value); + if let Some(static_description) = static_description { + description = Some(static_description); + } else { + warn_dynamic_expression(value); + } + } else if key.sym == "values" { + values_node = Some(value.clone()); + } else if key.sym == "formats" { + formats_node = Some(value.clone()); } } } + } - // Handle string syntax: t('text') or t(`text`) - _ => { - let static_string = extract_static_string(&arg0.expr); - if let Some(static_string) = static_string { - message_text = Some(static_string); - } else { - // Dynamic expression (Identifier, CallExpression, BinaryExpression, - // etc.) - warn_dynamic_expression(&arg0.expr); - } + // Handle string syntax: t('text') or t(`text`) + _ => { + let static_string = extract_static_string(&arg0.expr); + if let Some(static_string) = static_string { + message_text = Some(static_string); + } else { + // Dynamic expression (Identifier, CallExpression, BinaryExpression, etc.) + warn_dynamic_expression(&arg0.expr); } } } + } - if let Some(message_text) = message_text { - let call_key = explicit_id - .unwrap_or_else(|| key_generator::KeyGenerator::generate(&message_text).into()); - let full_key = namespace.map_or(call_key.clone(), |namespace| { - [&*namespace.to_string_lossy(), &*call_key.to_string_lossy()] - .join(NAMESPACE_SEPARATOR) - .into() - }); - let line = self - .source_map - .as_ref() - .map_or(0, |sm| sm.lookup_char_pos(call.span.lo).line); - let new_reference = Reference { + let Some(message_text) = message_text else { + return; + }; + + let call_key = explicit_id + .unwrap_or_else(|| key_generator::KeyGenerator::generate(&message_text).into()); + let full_key = namespace.map_or(call_key.clone(), |namespace| { + [&*namespace.to_string_lossy(), &*call_key.to_string_lossy()] + .join(NAMESPACE_SEPARATOR) + .into() + }); + let line = self + .source_map + .as_ref() + .map_or(0, |sm| sm.lookup_char_pos(call.span.lo).line); + + self.results + .push(SourceMessage::Extracted(ExtractedMessage { + id: full_key, + message: message_text.clone(), + description, + reference: Reference { path: self.file_path.clone(), line, - }; + }, + })); + + // Transform the argument based on type + match &mut *call.args[0].expr { + Expr::Lit(Lit::Str(s)) => { + s.value = call_key; + s.raw = None; + } - self.results.push(SourceMessage { - id: full_key.clone(), - message: message_text.clone(), - description, - reference: new_reference, - }); - - // Transform the argument based on type - match &mut *call.args[0].expr { - Expr::Lit(Lit::Str(s)) => { - s.value = call_key; - s.raw = None; - } + Expr::Tpl(tpl) => { + // Replace template literal with string literal + *call.args[0].expr = Expr::Lit(Lit::Str(Str { + span: tpl.span, + value: call_key, + raw: None, + })); + } - Expr::Tpl(tpl) => { - // Replace template literal with string literal - *call.args[0].expr = Expr::Lit(Lit::Str(Str { - span: tpl.span, - value: call_key, - raw: None, - })); + Expr::Object(ObjectLit { span: obj_span, .. }) => { + // Transform object expression to individual parameters + // Replace the object with the key as first argument + + *call.args[0].expr = Expr::Lit(Lit::Str(Str { + span: *obj_span, + value: call_key, + raw: None, + })); + + // Add values as second argument if present + if let Some(values_node) = values_node { + if call.args.len() < 2 { + call.args.push(ExprOrSpread { + spread: None, + expr: values_node.clone(), + }); + } else { + call.args[1].expr = values_node.clone(); } + } - Expr::Object(ObjectLit { span: obj_span, .. }) => { - // Transform object expression to individual parameters - // Replace the object with the key as first argument - - *call.args[0].expr = Expr::Lit(Lit::Str(Str { - span: *obj_span, - value: call_key, - raw: None, - })); - - // Add values as second argument if present - if let Some(values_node) = values_node { - if call.args.len() < 2 { - call.args.push(ExprOrSpread { - spread: None, - expr: values_node.clone(), - }); - } else { - call.args[1].expr = values_node.clone(); - } - } - - // Add formats as third argument if present - if let Some(formats_node) = formats_node { - while call.args.len() < 2 { - call.args.push(Expr::undefined(DUMMY_SP).as_arg()); - } - - if call.args.len() < 3 { - call.args.push(ExprOrSpread { - spread: None, - expr: formats_node.clone(), - }); - } else { - call.args[2].expr = formats_node.clone(); - } - } + // Add formats as third argument if present + if let Some(formats_node) = formats_node { + while call.args.len() < 2 { + call.args.push(Expr::undefined(DUMMY_SP).as_arg()); } - _ => {} + if call.args.len() < 3 { + call.args.push(ExprOrSpread { + spread: None, + expr: formats_node.clone(), + }); + } else { + call.args[2].expr = formats_node.clone(); + } } + } - // Check if this is a t.has call (which doesn't need fallback) - let is_has_call = match &call.callee { - Callee::Expr(box Expr::Member(MemberExpr { - prop: MemberProp::Ident(prop), - .. - })) => prop.sym == "has", - _ => false, - }; + _ => {} + } - // Add fallback message as 4th parameter in development mode (except for t.has) - if self.is_development && !is_has_call { - while call.args.len() < 3 { - call.args.push(Expr::undefined(DUMMY_SP).as_arg()); - } + // Check if this is a t.has call (which doesn't need fallback) + let is_has_call = match &call.callee { + Callee::Expr(box Expr::Member(MemberExpr { + prop: MemberProp::Ident(prop), + .. + })) => prop.sym == "has", + _ => false, + }; + + // Add fallback message as 4th parameter in development mode (except for t.has) + if self.is_development && !is_has_call { + while call.args.len() < 3 { + call.args.push(Expr::undefined(DUMMY_SP).as_arg()); + } - call.args.push( - Str { - span: DUMMY_SP, - value: message_text, - raw: None, - } - .as_arg(), - ); + call.args.push( + Str { + span: DUMMY_SP, + value: message_text, + raw: None, } + .as_arg(), + ); + } + } +} + +impl VisitMut for TransformVisitor { + fn visit_mut_call_expr(&mut self, call: &mut CallExpr) { + match self.resolve_translator(&call.callee) { + // `useTranslations`/`getTranslations`: record the key, don't transform. + Some((TranslatorKind::Translation, namespace)) => { + self.record_translation(call, namespace); + } + // `useExtracted`/`getExtracted`: extract the inline message and rewrite. + Some((TranslatorKind::Extracted, namespace)) => { + self.extract_message(call, namespace); } + None => {} } call.visit_mut_children_with(self); } fn visit_mut_module(&mut self, module: &mut Module) { - for import in module.body.iter_mut() { - if let ModuleItem::ModuleDecl(ModuleDecl::Import(import)) = import { - match import.src.value.as_bytes() { - b"next-intl" => { - for specifier in &mut import.specifiers { - if let ImportSpecifier::Named(named_spec) = specifier { - let orig_name = named_spec - .imported - .as_ref() - .and_then(|x| match x { - ModuleExportName::Ident(ident) => Some(ident.sym.clone()), - ModuleExportName::Str(..) => None, - }) - .unwrap_or_else(|| named_spec.local.sym.clone()) - .clone(); - - if orig_name == HookType::UseTranslation.extracted_name() { - self.hook_local_names - .insert(named_spec.local.to_id(), HookType::UseTranslation); - - named_spec.imported = Some(ModuleExportName::Ident( - HookType::UseTranslation.target_name().into(), - )); - named_spec.local = Ident::new( - HookType::UseTranslation.local_name(), - DUMMY_SP, - named_spec.local.ctxt, - ); - } - } - } - } - - b"next-intl/server" => { - for specifier in &mut import.specifiers { - if let ImportSpecifier::Named(named_spec) = specifier { - let orig_name = named_spec - .imported - .as_ref() - .and_then(|x| match x { - ModuleExportName::Ident(ident) => Some(ident.sym.clone()), - ModuleExportName::Str(_) => None, - }) - .unwrap_or_else(|| named_spec.local.sym.clone()) - .clone(); - - if orig_name == HookType::GetTranslation.extracted_name() { - self.hook_local_names - .insert(named_spec.local.to_id(), HookType::GetTranslation); - - named_spec.imported = Some(ModuleExportName::Ident( - HookType::GetTranslation.target_name().into(), - )); - named_spec.local = Ident::new( - HookType::GetTranslation.local_name(), - DUMMY_SP, - named_spec.local.ctxt, - ); - } - } - } - } - - _ => {} + for item in module.body.iter_mut() { + let ModuleItem::ModuleDecl(ModuleDecl::Import(import)) = item else { + continue; + }; + let extracted_hook = match import.src.value.as_bytes() { + b"next-intl" => ExtractedHook::Client, + b"next-intl/server" => ExtractedHook::Server, + _ => continue, + }; + + for specifier in &mut import.specifiers { + let ImportSpecifier::Named(named_spec) = specifier else { + continue; + }; + let orig_name = named_spec + .imported + .as_ref() + .and_then(|name| match name { + ModuleExportName::Ident(ident) => Some(ident.sym.clone()), + ModuleExportName::Str(..) => None, + }) + .unwrap_or_else(|| named_spec.local.sym.clone()); + + if orig_name == extracted_hook.imported_name() { + // Track and rewrite `useExtracted` / `getExtracted`. + self.hook_local_names + .insert(named_spec.local.to_id(), Hook::Extracted(extracted_hook)); + named_spec.imported = + Some(ModuleExportName::Ident(extracted_hook.target_name().into())); + named_spec.local = + Ident::new(extracted_hook.local_name(), DUMMY_SP, named_spec.local.ctxt); + } else if orig_name == extracted_hook.target_name() { + // Track plain `useTranslations` / `getTranslations`. + self.hook_local_names + .insert(named_spec.local.to_id(), Hook::Translation); } } } @@ -417,68 +464,44 @@ impl VisitMut for TransformVisitor { fn visit_mut_var_declarator(&mut self, node: &mut VarDeclarator) { if let Some(name) = node.name.as_ident() { - let mut call_expr = None; - - // Handle direct CallExpression: const t = useExtracted(); - if let Some(init) = &mut node.init { - match &mut **init { - Expr::Call(init_call) => { - if let Callee::Expr(box Expr::Ident(callee)) = &init_call.callee { - if let Some(hook_type) = self.hook_local_names.get(&callee.to_id()) { - init_call.callee = Callee::Expr( - Ident::new(hook_type.local_name(), DUMMY_SP, callee.ctxt) - .into(), - ); - call_expr = Some(init_call); - } - } - } - + // Unwrap `await getX(...)` and direct `useX(...)` initializers. + let call = match &mut **init { + Expr::Call(call) => Some(call), Expr::Await(AwaitExpr { - arg: box Expr::Call(arg), + arg: box Expr::Call(call), .. - }) => { - if let CallExpr { - callee: Callee::Expr(box Expr::Ident(callee)), - .. - } = &*arg - { - if let Some(hook_type) = self.hook_local_names.get(&callee.to_id()) { - arg.callee = Callee::Expr( - Ident::new(hook_type.local_name(), DUMMY_SP, callee.ctxt) - .into(), + }) => Some(call), + _ => None, + }; + + if let Some(call) = call { + let binding = match &call.callee { + Callee::Expr(box Expr::Ident(callee)) => self + .hook_local_names + .get(&callee.to_id()) + .copied() + .map(|hook| (hook, callee.ctxt)), + _ => None, + }; + + if let Some((hook, ctxt)) = binding { + let kind = match hook { + Hook::Extracted(extracted_hook) => { + // Rewrite the callee to the real (aliased) hook. + call.callee = Callee::Expr( + Ident::new(extracted_hook.local_name(), DUMMY_SP, ctxt).into(), ); - call_expr = Some(arg); + TranslatorKind::Extracted } - } + Hook::Translation => TranslatorKind::Translation, + }; + let namespace = namespace_of_call(call); + self.translator_map + .insert(name.to_id(), Translator { kind, namespace }); } - - _ => {} } } - - if let Some(call_expr) = call_expr { - let namespace = call_expr.args.first().and_then(|arg| match &*arg.expr { - Expr::Lit(Lit::Str(s)) => Some(s.value.clone()), - Expr::Object(ObjectLit { props, .. }) => props.iter().find_map(|prop| { - let prop = prop.as_prop()?.as_key_value()?; - match &prop.key { - PropName::Ident(ident) => { - if ident.sym == "namespace" { - Some(extract_static_string(&prop.value)) - } else { - None - } - } - _ => None, - } - })?, - _ => None, - }); - - self.define_translator(name.to_id(), namespace) - } } node.visit_mut_children_with(self); @@ -498,6 +521,23 @@ fn warn_dynamic_expression(expr: &Expr) { }) } +/// The namespace passed to a `useTranslations('ns')` / `getTranslations({namespace})` call. +fn namespace_of_call(call: &CallExpr) -> Option { + call.args.first().and_then(|arg| match &*arg.expr { + Expr::Lit(Lit::Str(s)) => Some(s.value.clone()), + Expr::Object(ObjectLit { props, .. }) => props.iter().find_map(|prop| { + let prop = prop.as_prop()?.as_key_value()?; + match &prop.key { + PropName::Ident(ident) if ident.sym == "namespace" => { + Some(extract_static_string(&prop.value)) + } + _ => None, + } + })?, + _ => None, + }) +} + fn extract_static_string(value: &Expr) -> Option { match value { Expr::Lit(Lit::Str(s)) => Some(s.value.clone()), diff --git a/packages/swc-plugin-extractor/target/wasm32-wasip1/release/swc_plugin_extractor.wasm b/packages/swc-plugin-extractor/target/wasm32-wasip1/release/swc_plugin_extractor.wasm index 5bd7c74aa9879fd4c0b228fa9b065e6f3abb35e5..fe5e836ab8b77036af7a3a36ca1ed57b1075c38b 100755 GIT binary patch delta 160353 zcmce<2Y6M*);FG+y-&+Y!U=@*auQlX4T|)VgET>^(xoX1M5G7`BAC#701sp#O+e|z zK!704V4;ZyR1_{E0TB_ACMrn#ezW#IDS*EB{r=zc_dYkXr>$ADX7$Fupg5v9Br^r1rYcC)Mr(xmhYas}CR zT?%RUmatyX!bG_DZ)>6m^Omvg#owQ7W%1YF9*6dd_S*homZ(6#FinJoc?a6v=$dIC z<_rtd(4tu^XmvVXL+e;aIc=&o)w{;=q&V*V&5@9H!fEZ*>!nv;e9`YePFt^DeFhF3 z{DR*}r{iyn@bd`g6s>%c*ZH>A_f!2d{rOG$e0_ynFW;AIWUu~RyT2#qXfKS~psm+d z%Z+lg{*Jy%Zjf(|)i-MQwGZTba-~eyN3NC2w0E`lwAI@C+A3|SwnSU5tbi{ z_Mw=qb(?G-kUC52*`srx=eqPh<$q6GCtvLM(sH@ovcs~=vd8kVrTr(CT+2A|r*+H} z`ysu?NoXOmd%zAER!rVEaNRxEq~~@^eg&(eTC(H%Vf(;OSUD;GQ~2>l5SaN zS!r2gnP!<_nP^#SxvNjNykjBDLd!Bs+9J!lmid-U%L2<%%VNtC%RI}U`eprZ{kHD4 z{H0&lf7fs5*Yw}?tNPoP)s_s)9X-b~&NA0B*0S8b)pA~+U>$E=W?gEXZk=VFYMp7F zXnohZ(7M<<+d9QM&AP-o*Xp&-v(C3>TFE-j`nGkfHQl<%I>VY_oowCbSe0g7Y29nh zwSH*bX?@?i*1E>J+Pcn~Z@p#x$$Hv))_TEu-g?G*&N|t-+?HXRWy`e9v(2>4wN1Aj zv>mb?u+q3MO?3?Xt>|5+>?P=@m>+Kut8|}O8d+Z|J;7q z{)K&~JSH~sCM~ff&kMp14Kiz+t{|5hW{LlLT=>N6< zG5>Guw00>r3yk z*0se=Z%`YzIN`0<#vO3(NN&1cO&Q`Ap6|Wg+f1=tnv$OG=X{-9({15&sk+5KJD}}n zLj3Ois@+#IeV%t^`y?^md!&7+xa|G8eU0$(lQG_{yLC^ERJWce?dnf}>$3Op4h_R6 zJkS}gI-}7!wL{E9oq&=kb=T$WJsorrYQVL4LQ>t9MCqsgpl@EUfYRRIo*5!;czZq@ z`oJK&8ib`W=q2yfXSakJ%WEEYs#{Z-;g7;>N5`7j!nKYe*n+jwW)q5UShyOdaQw1U z8FAfvz0+Z}?cC0l&8-3z6Di+%UcF0|hdO;2d!OoZ+eAco%BH%7LIi&lBHg-1nTz|n z!c~`Ae0tX-56p6@t`Kw$?RKeP7N}DMVD_-?4MmtiIn8s`kGEa0p99a$ey}f5?X@ys z4(^ftU|((3S08E_y5Usv@pgSe< zruYMzP69W^3ov_#M|b6Am+5mr7xS_&z1Uia3~$|jCk0V(tS!u2rGI}hH#@WcMj2p; zNUop94*6*J@;UK6x%!AU+2aQu(J=SfAxRP@?X6d1#FyENUac!3U*8SShWt!_ZGs@L z>-A?up11GoRYYF)+poVX#5}Kia?R}iBfk^HLAM(9Erz#0QQq6)&FbC@Z^nA*&Gvvi z>dhFhb@XcSf%k*asQ?=}<|XkT@7OVQ#7XbYF$=}_-p+4L0@NSgdQF_d-^aX@(khD| zFuJVwyR|IiCDMCktX0hQ{y8>5e4iaL?oA=idgqNlj;VttyzZ?!v5eO?v4VFb%JwKbO)ZnX zaN-1Ge;LKMwqx>FytP>Gx+xK$#%EKihRn@XOZgVJdvg6;-+ND>}ZVs7@~*>;J;JNEW7#Sb{U z#ypQ2)&4}NcSdHf2SMJ-?1^LSLVz?cJM^8lx;T~n(&EMfgkQ7dV-RcLyTdRb|J}$3 zz*?7Egwx=paB$w2-q81+!^sVMuL@|p?7avH#>?+yDeXP7VjBQVUTIb6WvqT#lrGAD z6L3@sdecCwH|ywp@5;54#n0ZV>t+GrJ?pk(`4Q{m0FTy}m11-Du8nil-rHoo2;TlH ztE%^GRtP`6ERK0!*i;F#W^L*!E_i?0)E9HxY>pJacn55L8WOo}b4Sb!$exb&Up6IX z=Vo75pt85VD6+f}+qz?_>-7k4#eGZy=4E;;>;IyAisEn?chN`I(l#nfV4d{!Ir0}8laQs znl;pW^^oo2wtrO}hkNm> z4+Ukv|Md$BE%)T|*;T(iU7RZ3h~tNV%DLkMc|R|ysV9`QojkE!EjIV$ixT~RpX!PJ zu0MtmYbQa>?|+NO%C-i4QH zily0KU1|axv%@amRCIP-T`HDkZ@O9$B&D&jBGh~R+5+3sk61Xfz1P1Kf%C?LK5kjX zZ@x^>sCs}1@s7Lkgvj)6zcJl6soNh}fa(16eFZb?ukm6zT`eyXvOC@E0@g-L_3Zq= zkEwOH-T6k1nSO7XIO?r(zX|?MzgN|}^!^iob!LhvO|$w7m-qJl{(=s@rsz6^SUN95S%ua6i;DTR%y`~!^8qnj(V386{(X| zMA4oRcBnR5UrIF1*=-fWAGJy9U>8qdA5-k&J3%?U9U=kv=ZyCk%M>={0z_-TUl$DY6E*W^PX38se_a)Ys8UU(>+)VsbHAr~CEAv7qm#K{jAK z4ds<{wt;v?F`rsB2dh4ziQP1Hw6zAEcv4g=vT7K$Y9h*E)uBy9c@*=Ti085H?IvP_ zG}l!g%9nJptC(zxH|2K2Hr{R_7AiWuJHk?jV#`<^IYU~Cwfp7N4Ou zsEzm%wFYg)Y1?c=oT*GZF%zu3shwEoTP1*3>GzDtEVfF=XT@~23O2I5n7W}^oy5c< z8ZsYdo7@h2q;GSBQ*0J`rL!nukhD_H>dvB;Z?%W^l!HC-u@{^Zt$N4a*0M|K9QtUq zHJt7}CsKUCab6VxckKeZqTP`N_GY$EKV>D6WA7;%`IbpGeYH^P-&?E_-{-(#y9CWh z_eP0Wih20Si%}lA4Rp>AU`5ySenk zQA?EV#%f-d77P$iVhR-O(^N54loj)G@EoVO0ARYxOXF$NU0Z27Jy1MmfNM@&Ur{2O z^X4nYQHBi`qr@$Gd$6bgyj(-XV{~aS)Jo@JB8Xy!;3SCBW{FVxXowhqc}YVJ9T7KH zxT)eWQ3aE)4#R{uhlyxFz;g{ctQr8JEG-@(TvTSb=w*P3q9wycM}WC8T&z&LRbX;< zye@1)jSrz?Bg9w?1(aHpF%nvCZqD~3#rJCHztfK#Y2p=nY&0ZyZqC5bV)lPGWhF*u zrHMf%E?dOk^vzh&SKQ92Gfpg3o>5i?&g1?BG0$YhbfFHImQED?im+n304tWB1XY%o zGij2@QSkoZ2;kfksQ-A*n5kH((8AqR7A`phq@Gw>#0K4w@vK^;QZ1J#dAevI_S2y0 z%ouzkat3HMH)p~Op*(v<%6Mv;Au8h(fOHv}mmwk*Rm;#<8DhP00Ln`JHcRBH32@PF zqqSc9 zc1SUYUSEfGPSVHgAc=D*aXrk%Nt(1?%mXc=H;8T!^${CH917Y1lblCiY!JN_)i#Pg zsLkHUeOVh>lR}M$=Umw+gaxy&WsAq;ja>Smr#&pE{ua@}BDT_y9XO87ABvZ$;Y>>a z-5F-7MZI@GVR6?0q*Ja9vxMec-2r0>@GW=29_Hn|wo4>vX&<$4NMuvh|26zyq}krm z)5@gdKR-{d<>drfmY-#cOmT}Uejy%9^FTjUQ*}h32?$U9JOfjMY(i82`Du#5^1)!5 z$DZo?V!VhAwAbDKshH)l41XD` z^-gu2RjDF{y~SfwS>*Eu23jahT)vyNmIh`0VBsJcSrFrjIP8;9Y zuY=k-Z@8vR7kC8mTs0-4>gp3^Y05e-^rUo=>N>_bDZm)XIWo;{Ptp)3wF}g+m^Qv$ zQ}sZX?T*kYmH5y<}AG19hN5#;gzhvTyw$7jLu1@MvB-TrRN&;-YWM@MINI3pfB zIV9tZlXD=8W}KXVv6Hj9{e35ADSC2)O9sWKIotu*Z9+h5ynlee85WY&bx#R|q7}Cp zRe&0qnqXB~Ok`s`2UPmW<4Sd%QKzTUGf#sVQM3S`D<-rT2#)3%lNzK;KdZ1hk;C)z z^IZRG<|k>^W`SA&(6V^W9ms|JSzY^-H`X*z27t{ho{QY78Lb#9oC+==``}rGn(c!J zaOT7ZzzM}O4}b$(KZds7iY6q^&gbcY9fS zyoD{Avhp=cng!%daClZ91a({=Dl!9}!?V3eU8tl_k-9|v`yzD>^-G2IrhzVxUlqR- z59K5rO#_{7hf1&}x;|$m<{wxG86~iW%SU$AnSeijo)=Sta0gXV5g)P>?6xFnu7n^{ z7==5C(sKPnD^$RVsS)8G(LB(loka#eVrr*aeA7vOaJn|=Pp`}_kSd_W9LqU6K1e?od1q|fnSBid|gTQ(+i zd#tHw1+qxDZB>G$rp#A*5P+a#&*4Em`hkDaQfo@ZsSb4xkW^)^d^%S_u=>IuC4ELL z6p5(7s1-k3-*KfyC`1BrU3gCEGG&$ElC@oB_ z>NJsXvVL$oiy)zzfQ0k^9tj+b=7EA#Qad~~0V>T{QjyX9inEqB5?l+l!~6GF)Ogex zt2tKH`6%XK%E2I;UXnuT8}HjI$fW`QCAqRnOzN=u2X!Eqg6C2e%|tbb@sX+>F#V1Wh_t^y?d%pqwZ z%$J~$PrE_G`J)ZIpNhW-_g(ou%aNiiN}_C{42b85NL3cZGgc^)!7}3Mj?+&~-7Zo+ zeo5NR9l7a#wKPSGETiRWVasZxCGA3C(^8`;zp!P#(Q>@7Wwz0Bq@blSRyZKsQkA(V z)xrmi-YI4^*Qllo31Wg#(#2E2m}eYF!x%K#UQcjrFaf{`aogPv*HyJ`o^am}mL5|a z@fveGx&b9^XsX+B$KTIrSA=Fls7}?Y=&IHAJ0d}&e5R4%y0Djn7Gq3R&_)Bts=Qy8 zo`6RS@T&`;FzHJ*9BIudP}#L7srqV-<{uQ@9omKjXXAR4aD;abisUp~V>ziYwAsxP z<8i)0Q}BGpHhu!0WAS`X8}BaBxb~C@6DGvl6a~yJHDj}=dG7lSOMqEXN2q9vEvZ9P z_g2F^C0Ye4(PYONZj_HC=u;EGBRXcJp=unw+g8hOy9N6Ws^yo3lIIzt%(;f72i4M+ z>PiY~X{%8d2aomGZ?vfr-Z>bi-Ay$BBs9n`gRffUOb=@Zywc%vI9a6GUKSA^OwFop>Ezr*+;_cXU5gR1{ z173;is4_Xq<3LXS$Y+oggAf3%ILLKP0gptR!H#K~Yx;Dws5R0>pk^MUwH3}m^T4MP zu*PnCWk0JYrA1&+(FLvQ#+ethD8p@W+u@4U^iv0}gVXV+nx9`i)TPH-Q}T{sq+pr2 zo-di(s|eFZ@@cuwDeU46n^sHfA`NQ?M&)3_&^~D;S$ny4*8H}3Q_bUG`U7;b(k>SY zwF~bPn@d(Ztl|2>N81S^KE&8`e1Iya2-ZG{YWnda(^YJT?nL#cGEYxalu2tAh$BnH zwh|nQ?2s=dZI-73l`mf!+sA2v2NSX3_)t|MBn&HdTxw7e3hLObDd{0TNymw%;^3=7 zZqduqgr%WJLJbX}bb-C5JfN5!wEa|-sOO?oGGvldnV2w-3T#KdY7~%BfC$6#dFlYw zfPjYvgrKd+0Ej?;4(y_eM|Lp8WWaNohWld}M*#xanvlOT`&%m96fL)h@A#kwv0Yoy{2- z3iMJ3?dLk9+#U?X3L!X86amU<@`D%PxxtR~wQ&lT>T%%!69?je6xe*JERyC9tfje8 zfE#f$?}m$jt8jHT0pJq5VlJ$M2e@YN${@vIZof3e2yoIu)W(hfaaaLesCWs394G@+ zo2~*^GYj!*YETKyRpdV@T#!%vZ^EHmL<~Qh9-NjWqw#_WaO{Gtfo3|P1{`JG+-ZgQ zLR}$3h*vBP{FFJ00-DOPRsKNJK&0T~9RcuVm0$3$K>sJ0$|LeOM2Q6_n02IZZzw1p zC{LwgJ?FTVK374WZGu!9?%Z_Ma>9%)R!>uNp74Cbt!n8stZiPum}88)7_%ZgR?pR4 zML;~-i3T@8l9UH7O$kz^IzT)0r+_unQi>?wLMBT{15;p!ibjxB54P&#dep*GRXdmu z?-=pZqhUZWRD@uu>j#yf#@P*~)6s}C22Lg>sxTSt8zryN*>1P6L^Xa2n8u ziZReqlHe?Ag9|qjZ|5Cr9;uW&Fv8-9Mv6!ax(cKP(p=e)7KEDMYKCKo3wBadRz_6# z0FXy*;?swu<)8O}9U$A|0j)h-ibzY^zny+DRw!C|WSr%}n+VM2$}fr!Q2M?ghpQ-T z>dg={ErV!I9jpty%lL4HCBC$pR@#j$Ns31ddo`gnUHDc+r#+N0`Tv(~(hB(I&i{hs zKDN;wU>i1rDnVUD+a_Q`poijKWw>C!lsNc|K$_Be1ybN+1%A`bV?tmF`g*0193dB(w!QMl*5#@b*+_ zsk{ioy@GF4sPb6N07(E-PE%vJ(ncpMm;wn<`8(lfq{2Bn$60U==AA$TyDdzkIFTX3 zNF-6s5!-^yhl#8oIgsVT%1;aqkbiWOa-IEebH+VzZ1O#3x z?ilOq^4w6TumSBHm#BeQQ`Hr{l@*wvsC-9_GA=I~Yqbnx$h0>Mq6!o+3g*w1uj~~z z2~2VkZWni^>4T9@Ybd;P=<-638$F7f`VcrMJsX~{F0iPhR!0ag&ZEv3&c?em97ZlD%kH7?AI8qFhs1Z z-uL9_3c45h8`Xf|h~pp(B^IN@OnrcuHsZfS766sX+`&|GLFEaxWB>7%A05Roe#VC z<~ey4P`LS`TgQU`y7e@EeOs+sWb2$x{C~1_Q2tSe4T7>PTRc>6qIB|AT*o2|V@Ik^ zrhwXra(q#kLrFPP3$tNO|0N1@s7)7%!XgbK8&Q}E!wj|P?oknzHuoUp%vCh9vY3$- z`$BO0+5d6-*JL+|&z>z3P8ti<0{`Kr171GFh_%E8X+~IXBmacpN}>PI>0*m;5oqLp zM07VMxN^jN8DD*Pyj=qgm{zWNN_POh%SZk8qZzMty^-BzctqL2AYiuQnVi@;qNXJ4^Vfqf>o1Y3VPbZ|DZq9Pg)y zAUqeA<)-_2TrLw{wTq%f=*FT0c4Vjlx^KYpi=vENJDtWJbVQZT<^@Uuwr9pvHB7oL zPNUY31yqlCTXmT@eNp6jGI@T*3v?w%1eK=wzv6wd?CCs#5`Pr|fqRRL+)wv@6`jQf zNkhy}* zT%rDT(emH=_g)um(C_*kFC67jmEZA}P#(ScyQo;t*bstc@DB``>ypX#`32WmDvEq$ zC*}Vx+8L{=x4fRaA)=o!wuj+}!yW-k0fJlpKo4!Wfp=8$X#Wk-0-JUHA>tdF8^rh; zO4eW#9+;#~Pem<{Ms4sPywe#d;{OMn0yO&K240>t78ZG#U1bP`_mqLasNJ6;-k8q| zHBqR*qC9{Kz5OR%a5+Z5|0&8oaKL5%5*_@_y+D`HnNBi}-u(-2yX4V|zeGNYNjF6$ z6q|2~hA6Jx+rc=Ujhe4Z8%N6Ug_C_s5`Gx>U=uy7aUww9&Q zG4Hl0i(-e-f7Bzx=<;nAkGgl5Q^(#BZGrL8J3{e9!x$N10yxu{0VLnWt4s#SIYNfg zu)Dm{?7MggE01>H6|pG3HyUr<<^5K<$Bj?lGvlhB|j&JSC3Jt12PJ^G3;PKIwr@R9l~yBcDXaZK)7%C0MSf3#r~* z!eR=o%R(li2$NF1)l^GLyueOFB=;?rG7Pn?QYu-nYO*d0kH#bWXi{w_U6bk*zt(sj zj!(g?qw|Dmx{OC{y)K_9M9WYcS02&!m_^pZ@Ie--m<1@5p(7UQ@J;n;oS!W+sf5W2 zoMThUCeF%Bd8|??fu2V3rd7TK+|F8M6B}ou0-Q9snygAk+%g0mLu^t}a;r@awi*Db zmyQ!iv7;NR&Hgan^X;-4x(?X!jxcCvmrC_CaPX>g{AGms2EWb6Y;%mRjSr2`Ni3D2 zCb!g=vOHDxXR%bI4>7lAZkg4A#uKobS_Z{Bf2p+Rb$=#&C8z9SXnnAai!Tsb;?%(X-I$s3(<}MJ~U?_*E$Bu`DnZxD95THK~k}Nk9NG# z?Ll&;xltE^)1#?>30c`}DdEGjM6e9UoX<<}$^2GAwumy*flzCS3DR|g)v@%bS7f1% zTv+}XEkj`*mj45g5`$%oxrl>~)@EUTAy|5_$ckV-h#SGO0&3=Y)F~;IX2~ci`=j`) zr0nWr8^ko~waq;0Rf;!cqH3O!5Ajmq>^zDMVf<4OdluYN6jEWe-eh6(yA!>$6n)tbsI{>9Z&vaP{Gy_+?C` zA7GZWeUcfj+LFGOyLqmO@)vC?c?Mi>@PP?K3RA)tVs#49YB>*N4IPyk4>St*0MRO z{aUlQREw9bOtuw1*`FUTKg60H5*W9I3CtwhjN1JK7TeloSYN(ahUu`a44>BVG7syW zsIsgZOO%6B9932Z_>j{~Cuy$Hf21tyP7JI3;E1Qn6{<~sqerRDvE>-IL*-af;>ye9 z!fEPb1BiTijDUVE)}_81%cFDUWouC2u?n)AZXDBrTjaM6ywwSxJruKEah`i%7FuBAMfwgglG7QSc-(YQrkaaWZd$H>Fl-`mL&T z72slMRR3yHc`*&E!4n!?MLO|3rHbr|;%pV!8AaWyQrYlDRb}1(3XIaa1FFdufd)=+ zcc47W(%!1*!6`H-?ux|b{iX=*a-ft+MnwiHVN_Qi;^g%LEi z5r}80E~{f!t?F_limd7k?_700uHeUbGcP|TU%@VlYbp2RGCA0kEyT?AO;+ghxGZmo z94u48Vv3@Mb4JS_m-q^hf@(1HCmThF8gdC%zgFXsm|6|1^I=U^#usWnM1_@4FwDud zSdFf)#h|~eC6gazSuOt)w5VGD0L{l^KG!6mHk*^A+Oo_e=v!dHUq^q%hv|=$4GuRM zmeF|c4xzOn51-VQWlc|ENlmDmJgQmep)C)n^Isy_t*%@T5Vm@Ju~eObY@fk+45=g{L`eb#&t4dmkwh)dT7EEJm>u(tTE z0qjm5HEGC=iyF$xrg`$tsS`q#qhtvezN=@aLHCgcAKEB;)Ur{51wqP#wbPr8*dCpD zxW_+*?NRxZ0&C)%^U5+6ET_m|ps{i4Lm*F2<%xMIY?OXUk?&yX@g7;$Jj^2eZ3dQ! zhzAXfH6O-^E0j>*!Q~caKiQazX^q)I|4(BXZBoz9RwRbGM7b~Jxg22D59n^5bBLeToyGkOr<1H_&4K~8aI<({{nReKX{C607}F(XWi7Qx$KFt zYn$U0o?}$01q*Py7A(M??mPrbBpOt5Hl^TZaC&}h!6$OJg`9^;C*FZa>W-BagM514 zGyy+9CB5i>vn9LzxhCPBKqer}j~@aj{kUxOtV@ z?HHixZI5av`(n-0?KtGHw3iJPY13n{$<;wpecLv)z2TDVT?yJpc%ki=+GLiMQXY6SKg~PO>G?Hf#4@k#5u~be6S!*a;*2#n*qb zDX_@y%!eG+1&5qRy}R(#Xm( zvY(9+WymqA&@b~1Yuin#RM)?;^Wg5RxKDOxfML&ZZTxfWksW`|P|`gZVI)M9E8*?I z)>rgoE-BxWWuryULhFl{rG3_SYR^aOZC`4H4)v640Q1`^%+b4h@o9mhOH*`jX0FP; znf>PUX8NbEk^?O)Ryf~qO6kMr{&F9g03aEC@S3z?*G%V{cJ`5Rt&JwuV8V?0gdvjZ zgbkm@mB8;y`kDQHh5b(FNejLpkodw0;mJO#@H`kRk5Zp!pLyr=@*rxH`^rSx@B(AJ z`vqTJu$xt`%#tE#ED|Z>Way;QZH;-ln+?!rvp5Pf;KNkDQeylH>_4D;8?U_Ey z8A1E{@hac-L)>Ss{&IhwGp;|g&iejrbPk|a%~;x5S;c7v!{Sq~f@CIg%0{E`*&6o% z4t`PwKqbKw9l-nDIDi@L;s9AK)Bp&3!qFtlo6{?3Q!bQC+Km zKMc9*$9yS7nkZTfUxAud>u3Gz+5^ZIRs1eN~pMVh{@NE&c`at!BFs5HFL9rT4^gN8HJa5Ye^f_XAUa#iYHCOp;k3HvI{j0hJq zUjsq%=;_xuLY@9vp-Q!yD)pUl;Gz82WDtg3d5!g7lhY8KvWNt?1(n!vWI^U3ku#Zu1aK3Qu8%(c%G!tb;G2x+PW9XGp zj7|P1PM>WW#W9XqyJgg>zgxgSK1JL8O+LX{Z!(}=Z_0AYw0R;CEZRoP6szG1QLjia zi>b9|jg}wa>>G_?T1*}zD;i03<*?{@S1K9(KFIYDrhvcR8=V?o4u#L~0l*~5QnJi}Ao zsgHkr0-rx#b`CYY#|KOnwVnXiG>^WVz{#{fC$IpunaK8&CbIoJGqI3`a5KVu5j%;~ zN6$}U4^l-p0P@Eqsj}yB562pBOqNl;uvy(JJrwzTFqu`Q38>^0`8MD^BHA%6`y-ZU zHveGMRSmNIqd+IOCm-E3F`j$LI@^ zEsgj99>vB;V0esr%;zlhq4^J;!rl2y+qidRGL~%jj`SFOr``*|2TtMSiiJMsa8O0s z?ggw41~1^Fn6;qrD15&97YkUh+blFhc_I6~cNVhy6~0K8Guhf_vRf{aLw$O~2jbu& zRy`4mnNxc&W=Lxmvn%k&V)g;!mvCSIC9HgK2^T@D!etQUEs+)wx-MUYppLA7ENW> zais9XI{B=+fB4{G<-BuUQJbMZY%{K{lik%xv|q_*I%>Uq8VInl&R;J>3!U~N;lLzX zHd@xDrW@pRV0m-{<0UpC=blGxH}dW>H*#X<%Z+Rel0V>$jQ)V-a>EBane#+5H}jfTHW!|$ z4{qmdUecS*nhq;R(68Brn$9O<0b5wp!APmATm<9ElrbMOk-FF-N1%8V?4w)RalEvZ z?-ZWjR-l}G%3Q$UY|iIvHu$j6O!_om z`iHDnmwpKU;21e}@b(`OHZIyxIM?T`pWY$EjZhQ;U2$qq;7)!8q1;aCHuq(c*a%ib z)y9g8dFoEwcJf!G)L^Y_9AJ10@DOxQ zIC<8}hNhFrEpGmu2CMoyhAypzrG-xj6{fzQW=1clO=-N^hT<;u#Hm=4 zx}Qva(!-Jom*={*;4;b(W0^T?SWb+4OW;pUZ^3pDP~| z+4R_6D7@)(_X|hkoWpzNT>P#u_4!1uH-36jMJDQHPi#rJrRxZ}tU*!6?*-vP3C!~) zUAr9ElDwbF6_}WR-4;siZfK>c?`O#T7HufAPgbO(x3vn=-$PeZ^-!9z4~({j-rpzh z%T42`$|=X&s@!|Z@vAB~{@^&H$~mVU**Uuo0a?Ji^10k$6p>W#sw_cYABMM(O;--f zBzkY3EJ+o=fO6kNpMQb4;1ZSoQf@+R|CgwJLcw`l`y>yw-4u9)Yabm!?K^TD<=W1p zs9h$@S6s{a3bl_(d@VNuO4irNfgYyYUvuAvZ&3S?ZhphHwZ~*j`t`VU(A{Im?`@)0 z-=h0-y8bP9zyBR-2k6RoTw8V=wUcz|IM{}-TKxkL z2dGeb`m~&iIsAO-v|NnmY5B4n=KTE*=4)qoe(5v#z{mJ$799QofiLWFn}RP#Q9CT~ z13&qAHQ1F+(-vUP*fY45VUUsZ#94%eXDIb7SRHb9oE!p(MuMFmwUjb$_)wm=-!o(Yw5QlH3`oH0NZW9gp zKntb&zrluHr{v3^-0##y6-XOi<^hAYU_h;_GMJvd0@ZtihF{_K_^UXaKdApz2AX&c zK=;v*Yg|jd&P$BE&b8XV!>(?ovA=W8a|5+~H0=i0TK<9BR`UMAwP*h1zD0lX3f1;v z-^73%T5yvw{8$x#=3KlfH6p42N*@_)1lYA{f@Q}jyhRim{d zNYST`hE(HixHj38d>d}b7OFNxkEZ-o-QNx^iZ}LM+i2h_ttxH5E#FlW=i4fgYrZXl z@?X>)^xbdvK}M?rS1lKFO>hS<+iNKqkEbhlL81MtO5BqQAJ=`}M$fBSUHa=j3oNEp z7TNPsG(~#!hma83B0Mh<+LK~CofX8QNjdW)}fd zijt#s8_lq4k>VijjRbdpX4Oh!=5edm9FsO(L(|pfx`m#!G3Hlo+SVcfbUJF+DpHMm zS{!A4YPH+&?JaZTN1s|_sF?$BaR3gjk=UQJ%mF+wcaOjJA&PfPW2YHTbY;_=XB2U0 z&og=)MFwaAK%nZE_Go%CKvNQXCIBQlPUQl%_fR_+$hE*A#^lHtXy6k;XxdCMCA2>= z07^NI4p-MaY6Io4fy$3*Wuao)Kc+PhyJ*&9S`{i2jHYagXr(K%g6isMpPR2m2lMyS zn)=EHpDFQPo_$&`=RhXjtZpi)B|?b*Q&Nk;94O*w3Mr*62bi2v+8(hf=k*XRL~V3> zX>AvZ7NMHbH}8e=seK))C8MT?Y4uTf!m$6NG&W3Yi`vmJ?GqG-&g*X48m=jZ9oPaV zcrIKkgJ*k$R$XR~qh;AzROV34Y4eHx=&O1RO^nc#D$H18jSlt?s0=d(t%YB@!WRA- zPe*kvhR#GVC)|tBdeEXs%|U%5wc27DEsoTB;4SZb4+JGFN{cKrjei6e%C9zbA0nLe zk<9~R0T4eIV5#DVZ;@PC^lX%-&TMQH?`OakYb+g!Vmxm|Y1Jvc9ay4CG~?7MTB|C7 zM7tq4m=)33*d9t51vdRQS_=n^E76)VVY6ej4#4Ke7(mRTkXQiAqS{9BT&z|VBd5pm zYP(|jaPP%x)zO$7$CT|IhatylRvd=x!TVL%S~lH^W6%rSS_e68JjIOxR)O)rAd6z- zd4a}8@lrf5FfU$9Ry2O42k3PUUAAoX1-ne4Wj(Y=!fm@Ea@_=85nq~C6@Sq?30g~W zht4HvtwcU0m*EwUmeD$isgzh2RGLN|%ko-p7{y|v*lQF&83q2$5VhYbuPRKt$5DE?(o=0Y_sNt{+XD3+3w z@qCD`b%zFjJsG-bO3s{QElSDizv_%VN@pC#D5&31die>sdnYulB)#*vRvzo;J`SpT z>E7d78`PkGqiH}5Ego_`y@qzM$g~u6Lk&mM8;QCS?rDjT+aq6VHoE(S=0F4VU^JDf zsm0;B{WP1KUZ|;6l6S^a_4D|^<9$?&ZADX~_Ap-f7^f-AB5S$mTA=1>wYyk)zLr)F zi~zJlX^HwpolTVdksd-VTv%~-ZEX}9U^GK%)?i&JVAx0{%o%mGTJ-8ku>QT>unWJ` zVGA{>u9hNlX@6Z-#xK@GZEw!XdRlu$xSRFaE}*DDvzuxml;1!rAr{ls27LUCO~Zx| z^BdH;A#^U@B{+|tf1A}%n~vF0jWp%nqKKrcjkJo!zHt|y0{fLs)sys6)IEiV{%n{| z6y`#C9*FT`rM1+-!+1qg#l{fNT&mw#Q=a9?#*7*Yo)JJp`e}|}=tNjcxc3NvLA=G| z$(5%?(bXqef?}HR)Ll(@Dhi%jR$|z!HP)D5mrt+a`X68Sxpu14k2RXr_lS=8sX1H4OPEeRcxY}9^ zSKEOyj-d)|*xExG$5I#doJ&L1^VBw=#&z1(hILuzwhRM>N%}_ZnDp)1L7KPF*mkgG zztf&}Jh)eT9*n|VaCWF>r{*1aMwbpeV`>K;`ol9?5gScwij%cS|+ zC@OYj)zP)1)>zT2BWss0JMxfw9SzOX2^idrS^By&6xJy!)kSNF3m|Jzcb> zSWNE|}YK(F=VZL+?^^RcxV=s>r1^&-28VFYrVZg=^Y_ zx8q}C@H+mf9R8x%wV0mli&_jL%w^i-erG`+|eI-RPO zf@NVZvc$_c>+{MSQ~`o)30`?w!_Rk&r}&0iR0)6eDjmMktl}3B(cM6EKC_mhV=uGT z=`)bmMUg~RUe`+DSEsdf-?~wQSP+$$?ZTCSdI3-Ul#}T-4uZD+hSCSI9*7&va8M*s zs|ekhIiwK%yd!php9+9qryLA;bmeGuQ+UGn*`uT0L&1W#mCqkb?+nGEWf9!CSUNBi zN^=7JK9pB!Gz{Qf9<38y?g^_BK8!gEt;!E&QawGKQJ%KTs+7-;UDh~SIUEW*hqevp zGwS>rBZ`7Ita2Kds2o`68#U+Y5s<4b^yUa2{y`d))9H~Q%-t+3yC)ONb{@dX`npz{ zYdi5qT)#=?#w#u^L!ex~4Yj99Pnpv}o~+IURGvq{_b^vVQgLpY#rq6r{s zHm#b##QJsuPaH9k6?*weYzKVUM^e;etuzKh87TtynT$C*Y4&98G8RaiqU|?|YV`V4 zAeBwar}DV3rfTC*>o|?gX1YXqd067e;Y+&29NAy6cbdjg_fPv%3D;(y@gI?Xy0LL z91I_v#U>IFa}1@;)@m1M>y!j|DMzk?b>&(&CVe(INpi(}i{9rwV zQr^~L#b-Ia-iB9*t_5D`>7A7CWzk5R%Y2QZ0=2y+9rVF0-5G$-pVdVV&_Q?-JX4RN zjCl~iEwpr=AyAn-t5GISyfkS_8nQ0y;k0gnR@=XJAv@z&?v(0Do)0SSRB@!*>a_U` zBk3K6fg*|Szf%l`GH90WSP)IwmdrLId|j2JVXhq2uCW5NbQ| zTZ{!#)no~C#_%OT<1bpe1mg4urFlUv+q+Pwr)Z;kuK6xZ=w#~uE(5nMW#A}^5QeTS z)tmrvdnp)y4^>{KO`wl$h|cqtain`+=v(NvMXyY4bL=H4ZI4}zOVgcjQanUxY?hB#7%@c?n$dzxSm+U!u8V{tt%FV zvX7?jYc&@o4Ao20n6>O$FJ8-z=*MfB0DabJFN-zw#X8viwG_BsTLoxa*E3a6uyG0@ zc$+qV;~y&nx3Jq8O@}ssS$;Nr&zl>tu|rgLBLhWp&9v=THnPD$Lo4NW-H(8?dHe&d zq+B<_@H}l5mRyUCoGxryhY&hy}XM$s>uz~Q&ZzL|%v+RQkjFbybsTC=j* zq%X~e7THgE**p}fJe7AsQFLght(r^W^hygz-Ndbc{U^P@l~omTe4*5Ro0f@LzUN@& z;0F+|QYFWjdi5-(K9>XL+E0UXc&ckVuZ6-~>*{vHuE&hP*a{!=*t#F`*pnY>sbW1f z+o3hGtXCO-8rlZ;>dSYqHmJ9gA)zoK!QHV3=Y!#kyB_dEW2wU~1`KC3mc|>;Ffy^U z#dzL(3eP_o&o_7R;_vKc@FTN>{tg)XJK%%K{1A4~ z;D@}9n9%GXAQE*w$P@lP$P-W$-PnAMH|AEmD{E}*_On_{sQ~p`$eL%i>aOBf89iB4 z_H$V9jT5Mw0zT|>=#hL{`Z=5KXAi^u{)x66)_w)iktMC5+^dpw;tOpo8hrWEQkf_0 zHgZSmPNzzW`Mi+A6sk&NAaYkJ`_p+GlRiAvA3t~Lo5_jMprah6#vEmpvG*7__ta5V z&zQX1SiTZ<`x=UY1OM0(>?Oi(;Ky9BvutYjG18>S0EE(aR%E6u-)QQ#0!h|zm0<|P z$FUH&+;6l}a?3bc5~M(JW7(ES-m+U;@mmmni%J2MqITaxpBlvzJq?qrWwcVh_;VI*=N(xXAluSe_Scf%;9=lv5odl z)x+qDhV*Z>y1JFBp3uI^Y~XdHc|R! zyCV6Q&%=~&+-_Hn(MQ|uaW2gR{>1Mj+CAy&>N1;xFKEviR(rw)q=rt>`U@%@m3a-v zzxWsS4CiRL6!`TQQ1e$Ba!4;tRWE880NDPbP37SDdb9MewuNFQ#az-}LQj=%>>cUE zC9Mm(Pkv)BL$f;C#?$fNG<8Gw(q)d(6;lPMS3KP+L#+XoEB$bpa_KU=vher9>F^b8 z4kp0gQ+vr=hn&^7vss$XTxG#VPX*d_jhXb!E_7%7rP*yh@mu^CbY0EsNauYcU|p$H#ugG+>~0#gPg?EJoXU~jpLs|767bsXgi>(-jO5y%cM9*4 z7TpEA6~AFgyjOU`(*7P_2o=s<*Fg`a$os54`7#OsYFgkY+dPyW4cE8Y33~)Cvf^~* zimO!WykR)!{c4YVb51FrSZG#%gwjM&WJ zK~^}KXqu$!DqV)lpOBoE7Muwx&s%kMz0G$=6>WMW3uotP?|vXQ$;L@lvgyjf+_Vh9 z&)9Tz#rBq6SNBIB+x7QNfb^zAuZAY@c{J^J=<$}%_>hv10FcFB{{iECYR0DYSQ5CLr)xl!wx`aWpO%fs!wGYp318c=2b83XE_i#bnRPE~)DZ z+V)bq@=!p;3N#}`S7zW!e<+iIyO@9%LKs_go0`46&6m?aemIs=LUkoVxOj^pEljVE zi?@_8UER!`3)6if*gF8&G!EC#pt)>>u9Cc`BlJ#K3RX6j4mZFRQajqs~cx^hw-(Yi8&obVX}^N778 z;Zus{N9!ueV)J+_T2F*k!#!XaHL48++s5cWV(#OyjNs*1MsQ;@U4^^fH`B}G*3XBM zqq!bWpTvQSackEcTJwG!821!Kxb-6danTJH!>wh!uF?-@;`MI$=jiGu=t?fc9p?_V8ouXd?F}J7b*Xsy(A|BZgjE&mhRpi>Xio6<%B$`o4SH>QTs6-GfC6Z8;`2^QghA5v>xu|HmURhV(hoy?H zez~Ml6$W#t3V?2*;Hr8}*l!$3H1(~@Z1I46J+a01&+=7)K1hZG0`^Xz?~);-n=)|e z?y8O>$fb(a^>m=MuDX5*NCGTgwRud>D)Q{0=N`xU9E3(w?|pWEo6iHweVi3pa4xQ! zb4Tbga@=@oKO7+PMj}f$5@Io=hTg{Xh<<&9N0dx`p3s$bD0Dubtf`Mh!^0lrKRBO> zHs9Scgo7{dZM3wOZUf!;27g~I)(kk(W?n=cAE|3yeGniXsLQHo zLOuODY9s3FUtry)4Rm!YaiamNhn5X-{^)C{t2AG1BfULpLmKH#;*5W<0^;k&k8$H= zG#2Hu2{y<&y97U^L6EOC(&u8{q!dWr89J4s#~2zt^C-?Z%%dbbXQM}dTnR}bzu*EZ zi0W;z4K!LG;ef_bw^slG{1Q*2o9J<%Bs5_)%G+v7q~DwHc`a({Q%f;)`zdJeam`>k zvZ+x1D?Z15up*)23&8KmY+4RoSj6F;={$bD7dIN!At+jpv z3sM_B1-gUp&VFs9t1LNN-6?Icmie66j!hxU%8%{zMn*)@wyW->%QfL=`Cj8_*B)s8 ztjv5FPTC!(sOO-gK5wsY2dH9R!z?uT9ERc^M=kY!NIZo;tE z#6@KWVkx1k9#OEd$NhhOfY;ycs;ieac$%%d9!z%|A=nz$O;=8~uT^oi@0mx0_#?FN zNfzjmgtGum2B4VuoPG|&Q+qINOZ0@YWG5$@CiT?SOM7r~qG?Z0kks_H@AuRfU`Ey6 z(6OKN(o>CRWiv24f$sEXlUKVB8>E-|ux;`6#88*#8S3!oxqJEZfO|@X1+|KLMF}tP za&2B1%w?AM|I}2EK$+3DE;s z9r4>&{RXfRhIB;Jz5(o$`DO>xv{W3~!Gd?PV7YVtNYx*Hugko%{$EJ@*;n*Z&}JNO z&R(VYQ`tc*`Fx;!6@G7!Zi0QpRd^gl4be*(VtXYG|Ill@A-cM%K`S+uRx~Ec5K1hh^=1L`TYWzeCM9A(hfzHvYWidY8s#R$!FA8Ck|4`+4^ zTCO)B$7}jz;5z3uU0olbh@-WK*#@3D%;yvIgH0kP$9g%`kE!h0BiF#e? z^_K3BR~~hBy9U#vIP`-Lphyza^&rbmr5cpY36|<#5>r10?`SMLz)szyYoCB=)6?|~ zKq@hox&8YM(1H15^t>pYd1!bbD`DNv+4>B1Cc zLXfa&;Ho`P{Y<%*qAoMxGyk1~qbjEa{O4)x%b`f3-P75ZYd=F*33Bzy8wDIif+Cxa z&w#1BNC-`$sq##qlTTe{DxIB~p{C<+(b?^&Ql!rJmMs^;zc|#4N&EXOc;*+W@@#fo zhpXZ=?V8QHzWW@;0!0#4f7^#eJLi-lHyCa&;xgpLyigul>gqz>HR9Gn)lL}&E=-~+ zaW3eaPaWqPR%9MP#>~^zjoh+%y1J3W{@T&TOvF$8UT$pWP@A(Lj`<~1uc|U?ca|cd zSd&22EcHHdOF*1U`ch1PVm{-Fg7;jCV&8$2X@b4-4ui!T#0uAn3mD0+3v_jdiC2VG z^ss#agXy}E!JtT@YKscDJRfOYpQj$Xn8CDJ%wWbWW-uF#;`Cy~R~IRI3FFpJ6{l(Q z5OD;r zf>&l9%I+o8xn({TqB4CyEr%;{kIKL2v(+JV;yqnudSI|a=*{w((;j_ zLqT2$Bv6{7CdF>hRhky^tjzF;jXt^jCv~A5-=0}m^E|zq#bIa7O)P|?HgPR@GuI&Q zJt=#$UKhhJZ)Vsi!s*wya0F@NposQlbA$lRR73@QwuL?G;adUZJZ;~~Alq(ZkkAXw z@Q)qCvyP>k+gKS*&e1=?Mp|uWYwZ3IM_pP4UBM^Oj-uM0IrynvqJ$+PHS65Y6S64$(i%4lW7qfcS zyIkV-k#b3{@J`O9P317Mz))Q-X;vzC&#!@QDA5RquqNsxY+0Sc#!$Dny+=?j1R*bc zq!xK(t*kcU=A1_lS9lXJM!`4r04=PL!zLwX&vjnb73J^4>!dOue?Rw*wH{x(gJG6kLFt>lL!93=h;uf3 z$$D>CXU0>%k0e75S8mYEkK{^4nt8W<1mPu@%(-;i7P)qlqlgV#W-a00f_~l_UN<+S z-j&i^g&o|w$q3`iHgZ);hb=dkbm}v!66-z72DG1)aam`v4vowOrb{O|}Mk zc2#7lmrXx^?8T?UxV0wLOyEJvR+94mCoX0Jn%C~H7T%N<90WTq@zwi0(Py&Badqqyuub((-%x1&?ex_Pyk)sMnFjC?7Vi ziHLmzCN^H>AXA8{4nos@i(OE2sly>Gj(F3A1|9+tAEY^l&$tkTEggH4ev%Dt_{n<(0Ak}a75?mPr5v>T|Lkq5 z=E%$W)NUM5pY?H&rZka*Mfks_rN4mk!m-kS^COA6(A-_3 z3msK79ap;V-6ewf?z8Ku8bS{__v$FPO2ljNQM8#}tq>=vHhZ< z-IK1B@!{uXoAtEmd;7PfioS}lZ^+P|;n96=sMe8k>*<0%y3{<+F3HliDZGtPN2`l% z$@}VP6|j63bq2b+A{(Ka(Z~wL7b!_mALN=-nF9ICO6FdRk+rvjKZ(J?#*xvTtvoy|2Qm z+bmyOqI^NOG|_6);e2g5lFAwbT$%JWNG)fvQiu9A)e!&7ezU2T%bqcq&b8vWCNFfImn=*`?3eogEe{{ZS@mTc45cOD zLd3t8TDB9@&{tzV9unVuil@Z6^@O@@7g@>90@^DV&?W}AZ-K_4c}Ep!H#Cq0$drlu z`*5WgmfU=B)F}ZX$C5h}B|iH^6eKzTDGsRAwUySiPI#HlFgj)UGDWXdA7#e2(niND z@$-3!fBg3_T`hiJ&#e%g=Ch9-|?m{f%7r*@Ae=f>f zlB(U-FwySbMw`OJ|7lxo1~}4yc3N-nobqqO^h9LvA^JPko5?aFhsZYnliQ@Uweu;8fbrag$aYb>jo`@23@ChR_4&+>$EY({&#rLX3&@0 zv^vJh_0gBSmG8l;~TZh74%}n zO<>{GVAy-JW*ZyVIqf~uPs_llaE-LBACtR%qMugg_9vZ|-l|#ED?WKEa>4PV-tF4^ zK*7P=wYO4tI<>g~J5bth-l2W2!~mE{>+aN=RIlu}J25J#<>9-uJM!jMt0mlRZ@Akw zfUKnf(Y5Z=9;j9gb-TjcMz;^tS|&wUpu_Oz4b-wxJ!D@~`fi}cG4a9R)9jQ%+7+s> z9cg6+s3cF%rtyQdyXf2}v;;aiSnGb~*E@!27r;_>Y_OJ2N8ePM+J}Z{ud#dr&wjo- zIF}C7eotNL3~zOuTt8f^tGe8lBUEgm(GP2{IPoM{P9ew?I0D2}j9T- zD)r0Jq)gDVXzv8=t~1bYUp-O#T7^a!o{)t!W0JNA^w#wW$UB+djKpMZwUd-?@0_f? zjY(`7xW0&eGZ_PucZJ!!{>z=C<~Y zv$d{@@+3X;l=h6edo3kT)H3LbIa)}WVLvzr0vh<+@-*blR@*yQJ1@+ns#yAOp(~!z z1~M#VQC4=~nJ6oBbA9}rcDIv@Ss5}&R`w2RcDdM~dD^wA@^+-(@pR&aYK%yJYDPm} z)Si!Uqsa=rzCaEJSkhw5Kzqu|TCS(sXxMMOs$Hah_FSc9VtU!Py`{aXDs##IwswLYi7K>Is=HR(tjx84SgUD@ zllCX@d3YUW5k{$Kz4klsf6jYA-VR#wo;Ji7kqZjUevj2t2SJjK?Ri%V??7WHI5|p zb0rY8gU;Ee%`w);aM+CFvGu}~&VG7|{~6o=F=zwj+kB!`C57d*4CB6qg4?ynG0=;* zYX}x@*V&=H$9>uNsrCrkz4iJYNcJ;l>dmKbM^p3Gh%z<$^;u2n#afq?$vTs@Tqh6LF4<1ANjOy z9~Ae|bbOz-8{lpGN}F0Y9P}$+t-#f6{+DE!AsLgJ3Lj zp0!sT(2^7cczEY~tSg?i*Z!d4gyU!Su7g^#qRg-l9@6@%HKFIuBTy-Tgo>k4BnSry zlygkGoyYK)_JXq8Zt#;9&vb>pWYI;(wObMQ;nm~X4&-?B7wrpFe&es&cs#!ORSQ%b z0{?FiXUcPwe?oiFsjn^_JOL8iO@sceJ&M+k|2x`xqB{h=f7gmV2ul&3I3KdgkU*z1<1ekxwSgWEjqlWjIh(B)zQ z8qg&8a+>MY$p*skcN&oJX2aN_}CMug#g-LT)ZHCadSWgDVn758CQihjR}wWUba zr(;!#CFV%LisfVmwMo+_Vr=}&o-FYRlx^ezgXGqQEoq3p|Y^mZ!3aSYAV>(PQ- z{XrPIbMy3TounboTe__V^sjhap??*_O7Y(?MBs_JpV47YcJet4`AnK;>22*$SAC>P-&uNV`qU&~HsQ^2R zw0E19-SOz#QiqIaI2%D^&Tu)ap~&x?m~_rW@t5cYkt&(%Agu?|Kw`r$(Y>G%d*o&M zNw5+7;Xe92Rr$oOd!_yzGgqXyMJR23gp22$j^JK*wf<06m~x;kLt{=zFj;lniOTIO zuhEzC4Dw!wMz&JB>-3LM7rNb++V|DhB!>CEL<=d`>!ZOj#$K=Q4o4k*>UzB?J$ZvZ z6vZ&wnRe(#{a$c0d)iIxryh{%1H*K1@2xauxXz(iULDTW!qAKfz12>B2LSgA*s%rP^l=_9gSpGS0FArE^*zXD^0PHbmf%q!9Lu;s+ja$kE?f3)80YV;yi z-N@{gXPf=2>}y8rKQjauj|J2#=!LQRC205PSe*l4_8A9yCn^}Pk2NMZl~MV4{l0KK zws17AjuZ5iVH*p1C+f3YqIY0NriW4^c-qJ*n3L+8=sS9}dhOf0CKNYJ1sCeH?e8Jt285Ehl|EzIL3g zpWtd+&p|7pPr?(tdE66<<*7cq9V^$2r}g*2Ic}J%U*&TN8@sMvN~vpPM2t|5^{Z+w z2Au4xpV8~9SkOQGoX-B2ct~%*R3Ch!+*4@SE@2P3$IA2+7y#t4{x{1Y1j^}yGM#<& z?wTjd;^CHMw(EGi!`I{r7(|CXFUv~*zJ<@D?Awkj(1*|K?EZ7j3;G4hD0=1vSzVX; zI!CS?Jzu_sUc}p{bk~dWt^6guF`w#8rfx6k52Gj&*jFF>j=gE~0-bkOVH0jVYawQe zJjk9$4HxR{){UG9SG7`akjNHc*Bc*4FgbDw<-M%4pX=JeMh;#5vd-RBFbNm3gW|e2 z*s%K=j`+&BS&Q_x*xYZoNaro4X^ZuA>hL1Y<>K6BGNr#F0g|Z;U(tErkfHJ|i`iDi z(HP#H{qj|vJu;D%9f$GArW=>&Q^UW_r8*z;#_7>qx?`!%+v~%YV(PdjzsorZ!Ks$& zJ#eTwbD7S2!@-rPq|1wXGF86j0CO32U9LBe`BaN8%Yys)!sYrHqyjcJpyOz1F1_>` zh6nq@uj$L2{20d-5*}2`dzy%((uL0+^x*(18&>MgIh0C}QeW4D5zn)8?=!OL>eppW z@?g_A=lAT_!6w|u06)Jjd!w(Cy^*K-d#;kbxp5Vc{uRw!1xjCOf4WK!@SY3y;NVYq z5<$LS`5jJ$4M!Ng>CLs+d-%%@zM?lEJKc>uY~D4ZO>1BktZ}z6pBB8Se}K$$*8q2u z-qLwbqGh>6OY|&q3&#J}|1sKoMB5{eAt+Ri*vaM&{;I z$o>E_b1EI+M-^p#s1F9OdE!IV4vDdJv;H+#`SLuoIaO?dl$dD;w(6>ig7vmxhD@a^ zwm}jSJ@}H@l#XuG9|cbx{IPzY+HiB2336=T8nm1WSV*Cym^&b2z(iVps)x>08gBj+ z1St*r8MNY4{iaNJU32D&W(>7ls-@ZIex@g|0{SX&+ek4(k6ExF(j)U+JS1 ztZ2Um2it95{I%Ykp@o4dgQk81t$HdM-|83P(dS#>aR+Vx7E)50h%)HB@4&fd*hjx( zO=qTE_PxGG!B*19gZdAsqv>(Il|AQ>evzt-qy2|5hTCb-Q9X_BIRY(z9346WP9l>& z007b?xqrSy1l@E@FM;s=@))a5cJfa;wotcH*3TfRtyJ_gR1UIHJub0dZFl-rf1m9( z>hJnh+E{tuGUa#7$OnJdzd*J=e?VOZz?c20f9Mim8Keu;-Ug@inUTRYtuh5l+s0G6 zTn0*W^-M}ujq~Ug#i*sMrneQNH=04xZ~!q;HF}{|*sKGD#XuI-@)*sb=lbI**3>arzaB3 ze4})U#Hc+r-jHL|Ey0)vY}sEW8yytokXhkDmAy6Z+K8>URUFJWC-(&Re-*sWndjC zX{pdYQe?p5C^O{Kp7Sv$W>DP=jF+m5u`6KGn(L&=w;lcKnKA&&K#Q38`E{U4WAX5 zSeMiJmm9n=fzuQ_S<6$LII!#uuu8?JIB`Ij-N@j(lSyr^G^Qid`&WXfms7XC#t-DX z+^9uet~dBR(v+)ZRsI`fRrlU$u*2=zYYbN323%{r2yi2<8FHIM&ozX3_m3H?gI>Y^vul$2O|IB zW+SAI9!*E@gj?BfV~r%b^g1J+F6n2?Lr$o`O{lb$>8IRwrl3~071 zw(#zIjb=_D$VT@;Er3Ej93T7MXRxA;dRkJwfd(tuSi>}qcopIFcOE^9=wxWKe4xQ= zv9AU~qVA;HgA9()b?G4ELsXD;zritr``s@w?-`7@71VREaXubX2Fq?@jmgfqSPC>l z$mi@Kk_s;zB1!hp5ES@@+B{&i(vHg!OF06cr_m1>>}xES1eFf}x(^(Gsq6=_oRI!f zS3hXvVxB+npwSa`S3GEZ1Ym$kb|FQln$nfSj8-urQNs%o84|T}n86NqV}^rQyhZDW zOH=^aMZojChm4@|v;FQvMm`e=AN-y*!r;S=IBVGmVZUXc4v&z%sPl-yzU}zJa~0m4 z4UMovF?>4n=>CxgA61l&oiC4+5N{l5@L2%VTjZ?LaHzozjFM7n6eIVDQUflocGFQt zJ%*syqdYa~&qrk&@IB3;`$mH;t)SA;nC1Iu!Dz!hutm}%WZ!6mkEjkGV_aOLd!`ZN zo|#Lh#(;$^x1StqwBy!rFsKn#K8@*kdX6Cs$EdNB#CVBWI2<>?#-Neue)yISj0agB zrNjvapYdHZL89{fiN-3t$)wwR%sKm3#J-U6UWBHxpv_UqlpSRa?31ZwtIJ@O2_7#8T!jo0ie1hhc0|%oF_DX z^T=a>W5W^W#fMLer&{#UA2?(@_$f&Ulb*udsi4!p7#XzZDdQ+=*fIyKYZN6vEiw1< z)0qFbPQrN`KNoL%=)<|jFsd~)DUJG$^wq^2;;`xQN$gsufVWMesh^1ulD`}2YeBW2 zHLi+90S$iEC^cOaET<*UfeN=$_H)KLQI(h17PmczwszBk=P=hlqK}?4Iz_*;$-Q>3M81^n+E@aS6J; zhXyY(&Vi|X`4VFa_71G2#t3A2d#UjadOUv_7{LxYxD1nU2envkyor_2_sfmbOq5{$ zZh)fy`p{uKJ@GoY-lKNe>xRzzp`WiY+STLzYVWaC>gs~;`4 zf_FSn0ks+{mJf_hw7$aVrH;Y+c&kxB7pya~(B+%g8Rsy$Aae(M$GZj_xM|&c5dBrO znh0C%C6jKEaF14xmQ2n=4>=Kj4kAyHXA=P zNcd&}BzxdC<3>fPvQhJS{Jqw8qZ7A|^j7xBPZ>`$Y2;30Bg$O(xv|!*H`C7B1zrb` zKG}^fPhPdhc!-NX{G~(ds2+gsGP3CAt%hNLS!H~wLS(Gn&P8T7J+NgfC944MMDq zdJBF%WMIS*9U~KtuTrKU(ncft{4fMUG~7l!wK!t1y^~{ZATYX|T!^$$kER~M;B2Es zN2FYk!3}C3mEsL2sUZ1LGc1w#+knpTATHLvV@A62I-NLXduMcl)wmj5L6VIiEux{{jrIE7{cJcjJlJS!-AQZk*yV+@2@c}dF==FIfd0d z(TAs?L_SS7o;Dt;72e^IJWg&NP|5%-uTP%_&SuQi&9!i%*kE?|!2FcxH5*{ww&BMN zy3T91#7UQlUh`t*dwYl1oa}1jf3=00`s(X)up`@Be`g4?|L10b7Rn5}Ji+`;QJ%I} zCYdFSxDEBpR&+-#v$UF`Zy&2=w!jpd-skh$cAHdFZj>}iH&^3chN^UPlKhfxkIrzu z49zkxRVR<3Y1w9d`-dzOPHJS2tYcoy9mmHI{Z`j(8qPt;kwjPLn%{t{}_Zr8yfN={+8MR%=?Cd(qM}1t!Or2+O)e+^>PXaH!>S0@Nt= zLNvcM#5zpRG7^70?Qf0v3EK$a_%kS}jad&O0M~BRrzL;j>bHJv%&v%ZR@TPklK@@X znmFRdk4EHcXR>I;k?nLU?_d^k#HVoV3(WBxN-C7`cJc~Mw&TjP6@v>+4j4GL(Bz4` zs8CjVxIJpSr@hHX#_-#Ysgw^a{n^1}m83~WlU0(dJDN`?FPA5^5OV!mOX;4d(!Nf> zNJb}7*6`&>7UJ2wA?T$BN8;pyq=`XdRkU=J~SPmFJs$-sr^n=)e&yU-39bMHiTSj;QJa z5Sn~s()8{oAJ2xynNAm7XmUSr%rA#tx=`Z8zEI-i$b~@e`_!_Bc>#{zKF|X*elfMX z2#_zPhn&Y+=i%*XwnFT;Lg&%Hr_8e0dE4u})xTI~x%y)H?Y^PDG+K7C*;-j5eQ539 zF6K$I$$tD&b0~W*_@w)l>})9kH0Lp$#@{{^PowZF-iWKQdEc0s`{ z{eeHC?su7MYPo*Yjn%e6!*a~yX~mdKwJXms9Kz4Q?li#6V9n<8`%Ly+S~tY3Z5ItR z+3CR!-fup~y+z_nDu{T=O(w2h9BSqmW8RDD*LtUu_IpFkT&@ax(=Dm?2$Ovc&L3gc zQI%)xek0AbVJ+O*BW^OvoDkV$l{?k;+EHdF?&$Ah%%QG4bMlTDYra%_jMI!OEF3q^ zcH=M)h;AKc{)h)y&>KKW`~)*{f0*AjB3?KF+;Je9s~bnMcZ93v${{4pDG}r<8#rsGJC=^hytZnVEdfGwVySQF-2pS zX$I!wxzC$jtB==&`R3T_<3-sonho4>a!zmbe9?R_e7l}|b(%bw0S9B}EJu@{O$M z1FxEms=<@J*qo1L$=b!{JRtg(CFbF<{V;s7+l@=j&cORqOHG_1WL**hVwpKT%FBB& zFZa^ELq-}sx5nJUCbC2-TW<1R@s{P7ynhwWtu6&tz#B{kam%IaR+zc?J#2-^K}Oc$ zp^hIz-HsZF0=N<~PLO^(uS7)76i>Vtc_>Wkhe?@O!DVj<`sx9(x==U!2pz-YziE)#%#=RI;TQk zz~1c6x6MbwwS;5J)6JB%H;|r=)d| zC)ls$6Ye-9nFJHefOTdN#Pq~ENXXV>#+Sn243o1}A94P0Y>fXT_z#ama-r%?z!_uJ zQVTg?WdPEn*guAn-Zj&4e^!Hc&32h*7SH73IsU_R|GQ?Rv%VsnCjzMB>+*NOjAam* zTnes7b(@@H`B$zt!`7932{5@%UT^XNu zZZLWAQ2f66ggP6?c8`d9wDn@Mwj(>YVj;50gs~TY&k8w}ODP|4j5j`DmrECY0QKo0 z-SYwX({gI^A(!F@$Do4w28JK=T{lx>;Y zq@IOLZ0L*)QgzYCVDxT~sweq(6|Mc)d=?Ge^a%*%33~Apb3DqxCeHRQgf(1-H`u@V z2r*l`?VCO|v8##z5IcdcDW91fA_l)Brl#FHO*e*4Bs^YS`q$^6us!maB4W&QSW^ym z$~Ixdm;PKTR?!GLOBW*MXIUT5x$H_}(AqC>J7YA$PD(WNuE`!hs6)E@%tP5T22Ja>i z4(q64RJMc%6AXKM5lFt^fSj8b9xyGOlAL(Jd@+5roZ+g~R?hFp1U>(IbJ-c+aE(X4 z+6>b({s#oNM%djS0Kj4Dj<+*%1~_MZvy$t^U5jWX zq+N)N-T*v9<<`!0StEZ5YP<)9^x{GX7`zl)%{s+lheTHC3&dG!r#RjoS-cHcvxNUi zE*(mXlV@BxR|p_TILy%WFA`gpbV6}}B0oi8h;v|wI~xY>D4L0ZA+Ff^BaVTiz>%!oGaAp(0%s*^{0p;#vhsWs@Dhw#?)P$f8_|L5OpH^Gq;LmHl`452o zr_jNkY_+h4zc_Lt~TJ(#JCc4Npb4+$BeYRel$*AJIag_$K<)5 z0AfMMos7p>JEv4}2*MaAJe}VEmt*!PkC~MZ(#6fAQ7Ts9zaF9D6Pk`lyCV?@Y$RFU z-04wwE;*hZV7yG~BU3i8`#}52JzUQ@jBB0QU zN=5{<(IKrjzWIEpHYt!)q>LL~R2l}MWHf)n&V2$P4kZ)^1#k`(N_H1D_)lS)mheEJ z=3$I3zzQ_+c0Xs5-{T}+V2bV@^1;b|)5eO@IBPZk4KQNrSSkKD8AAA!gRy+>Fx3ia z){-36djTd40=9LE%K`bo&ondOEsAUJ@$;DxcJv`CI%UQn#Y;`GB)O*TdtIp_Aq+vH?u)Wm{gfQBeC-}qUWg=WCu;u~Kv8<541UbkJr%P6d6o}*)Hk9MAp-jnTxlXR# z&wo-~=24;~0-sD>aUmo-%*$cD${DN|pC#*+>9RefNY*P^lC0hv;Yz4CfX+in25L%y z%D7~gEpxhpbl-B#P^tVkXc-mM@r3!5@|FF`3G*Iy9khNoo0zYda@LtN)gz7sTss6i zpUGkLC8_|BqexnOZP!wI&MWFdnJxRn*<3dz$ z(#%nk>C%(tze-#(4*HRwNgU%AN?8DEm-9?uo&{5wpuK^V$Q(;43QSl~9G-Fh@GmQQ zXviOk9~2VBjpO2CNk5cQ6n8lY)(qD2pqW4|kbj^SgVY(9HzT3uLb#h5Q^dsN3f6W& zaAu{zO|NK$-rV2|lpsb~?SMI2#=XG@KPG<2&w?UJP9)?+q9ZtjRWjI}%OKW7I2O3? zJ`gWJZjVxML1B*rGx8qrxnGj4lHyRZ1W5_R^XOtO6_S3+?A&@Qj|$MS5g8Vv+OX&`!x9ug9}_XkY2cX({$bdZYy9spfB>77lK6la1T-@1 z4Ed@tPkH4+9L{#f1(WbE+0%^~k@G+BD3OJsPZ%3Aib}=?4BGdmFRR4B_;F4w5Si`* zhBJETKSnRb(uNEO)w23kW2&`4fymlD5i0~#H6mb)4jB$p4ftazDrlhIWT`m?(2l2C z(vEmxbmV2Wi9)t1W3efKL}sbGySt?LqI@c|9O8!Q-)Kv3md1KgPbHHhiE z`pigR8OliFi7{r4ueqYpYioR=bI;^_@sMA!oG;uIb9*$EiKaj~8p|TCs@B`Sw!Zj) z2cq0E?heFLpSOJtsntodc5S9(Pe2bQ2NHs+q|zk1<|L$2QVf~(!EA>hj|%azL0qel z5J++;*~3}^ld{OCI^Hi6KVtTm0BJ7m4IDlfk?`xQ=4Y3*(Tm1%wJjE8KBlMLxG~^k;lFq-? z?ponHpsFWJsqwqMJE^fp+?;p4qKtIdi|Woh$w7jO3ch3YqdkT=$5^C!na$E=Z8RL6 zF-7+hM>PUtWx5NmH(5LKaFgtQ2%SfIbK;lx{va-I;I(Pc2l=H1^zO)M26Ud2{^DSQ zRLhu)Sj@9=L9kN=xGZA6?2|+)0txOfW-eDaO#m$_)Gy8rw8>T>h}7%?<_oQi$CuKYjUl^$5_MQR<+;|@4aB{r+E16{w7$&4vW-t*qmP8hsb3LS zTwe-Ga48+r-g|co9;|Purixi>KAD?|fJR7W9JRU&iZpCZ0eL z!ko2O9!~!zP6qCveFs9}6|bP@-syM=(iTC6+ri`QM|GB$0Lg z)-keT92SiLXPumYR{irOKt5~2D7?Xm-CFi2C;!4)dz^1pyp}B00A{S)+9jvcPe}sz z;}%;g)k%hTQ5Bt=EXLz9?qGa^LepxAr6raU#FdSR&Yuu6K)clz1@U!)@{<`#KwC`D z2A+3^60OxGPzOok|@F{EPgTBqB_r4{|+F%u+`Uq{#3^ zE)Y_kRV`3LDhOpZk7A)(;{z*=Lzcs(+?3nzV8}l&P zU5fI`9k22JwQ@LXS;_9|Dh0&BIAWwwuN2X)1aQWIEW^vM6m+?uIK=3Xnyc)4YGn4Q zfz$<|G%T^u!!#*{Qv+%ID=w4{(q`nPTS|C!9G1$-j18bQP@6LdkZY0T9l~l$MlBI2 zVbrNsvP4gymaM)yMjY05Ru3)J=^;u(r{qDEV+yXsqbeLY`OepF9t|AWkn7DcLGy zfJ5-!AoI==CSsOp0G?q43{X5}y(ZReP}ck*)kU!yP^s0#`1Bk}s_37InN%%@;^at8 z!c+>gGmI0hOcM<>Da5Als}-PAX+no5rj{;xxdu`%v>Q_%VYn?_CVr72I&z^*F*)X&Q($?fcqAs#aS1&qOE&heEb&TA zD|x}7+e-axaZ^korw_CR;EUtz>jro?eNG zYB#p49Qq9J81)jc<%>WKpxGpAKPUR5_xeEPDLF# zm_-#J0}HII9M7UrrKNN-Aks@FbAAq_<+Uo=0|{?XMtM-Hi8!PvVFP(2Pht&u&McKv zLmt=A&h?bY#%ii4CX>u_W<@*(XEt_r%9%Aw3@l_!z;H5K^^rd$?o#H{Lm|-`X8pw> zaSgUSw0fd5Tx_j+g1wnX)e|?uXJ~IdaUS;0>eUzQhjV*rb&pD0dd6qa3n+aT6M6_EaIwRL zs}X-(Eb+%hh#w@aoJIVc7(@JVVd7{0EQy~A3Pf}G>D^QyhGUR-7C@C+Nr|mQ{oGgB zuR~hxzz@4Q`WJqkAHXgF4zcxWh0vW2`jDE>(85{}K+TQ8&0eBOtweF`cb&fjSK;se z))>CIWVHs{*h>9di@NQlw#E$mXjEMTdSSThX6=?ZtB;S+<*H+l%3F&@xZZAmYthqT z8S(!BbF8~MY{OR*<~T71bG|6%;-YNBC)q}s0+fJl%*B%yw-MRE=f*Z-B=C7*ThSP_ zH>j=X4T^iGt>7C<9&RVD#9L)M!CSR>3($f>;2qaH6-JX*w3k%+U3<{ri`1=y$W&gU z>pF-_L6HkONQ&IhK{UX(L(Vs?BSgep>e^A{mN=MHy9IPsHLyw*)%3OewA}b$d%%P#&A_1krIcfr%qL* zRSidhrE1{`Th%J{0U@tbBNmjawPGe4|3*jMj}UuE``ck0BPU5U?yp!UCHF6>#{Qjg zlwYFkAARJ8WU9;lxAR6B#<3DlX8)xXSPyOF#AST(C!QO%V!tB}pyA298`<&=M!6c+ z4*8uIa^A*Vg4g0$K|xb=K0w`*H9`N0rjw_$2(?Ee`U0LGK!cOpKc5*B*IA0%%V1LH zRZs<@j)BhHw{rW2&Z4QO;{n|N=(T2Jg*%g{Y{1(*?tnKWE&y-xwv788xtqrw^jiKQ z_p@;!Up?w&8*RRNh$_w%p>~J7Sjl;S1~|2U|-x#moroXiRNmBmp<%?!=Dvi`lWzF4&^({9;08Wh2oq%_|(|5QS-mV)S4ZDxIwvmbvvb8 z0yemvnq2}BKZEYM1Q*84plO!~0YyK)$m3Wd^6>>J^^NkmB|yy&2cBT`LY^@+vIj!yVY9CQ_$8M}Gy_Ux0iDwmJ3MKi+NKYP@2=mo`-1zN|s~-0D z;WT=J7rs^6x0$Z9rvl2Trp-r;RJ82oq&!+y<=^jhN-L&cotSYwCS67HGaE;Bo5^DEu>T)F#cT<1oZS0le zlICX&7{W50HDFZ`nOG^R@S8eyCDwj&Xe(>VSt)aFM^2`FARlq#p5|FGn z5f_Xeze=1Z!eDNoZdZ%OJ;ER^a-a@~#6+f~Xm>U+Z@mES6>2yBpE0x>43D2XF|m3% zvu!&qzgk=m0_7fh+#W)4JR8Z&WYLvM1a%20!VE&vDx4uCau(K9bfGNzYP2ZqIT4+W zal<yY%QWwwN6ZWNZZe*%jQSOC&D*NGq=MqiQVV96`7 zz%5Jq4P#+pO)bN80K#}R+Hz{RWp{vCiC)UI7Qz}!=O7c#2+7Y${;|?O%a>S-ZFkm^BY8o{dUgE8eBZ6E#uf2}zMBqZF9}sO6N5^wA@!(2*4IF@r{5!+@1a zw2g_PjV+rI=>n_4*<(Ca7MT$(BKdzc?2AbUfx!U>-Dd5gZ^rH~E2_DQYq^7_$wq6hNo)3Oi=vV`Si#VISDGnGY29%Pvn2lpXX)+LfFSp8XD6HZo3oRkA66n~3oU0>!rP*ctWGUp-A+3yySS>m>W zio>(6s-|L9ve^FU=;=JEYDpUBMSnzba78dC(BG4<=Ipi5>Z`?-XGq-DHQ{=-#C3TT z*Kh-gQeJqNmeo{rnJl_8S`?Gpp<>E!2cdB%xorpgmDpVsl&fS zFIOcEgE6}%;+ZX>n9ESCy&W_s(Uk7?b!tr|rpgjC!sI5mw4y@>>?^!M86E#H;`j!z zvyf0GE1Mswtg&0NlKFZtR7Sd_X9oR76N^9;A8Mjwr zUH<4O;4zFw$=)5cHJl{HHW2#1LajS3unesLL>7m9J*#iSm^w$eYN*2EEZ*9~GA9;0 zVN}D&d3Fs0xrQN;8XS6*EG$iG7GX?FS%?Wkb?y|`${~c0glBP)f83Z5R>WA4=|!cF z9#?q--)n^jq_n01DU|~^Q)wQ`t{k_?gv|0-$s@>pm9gYDf zwNWLI$c{F0;UcH=0T?~v8mk-MLvh>oSzsV`0{j$n}9*K=5xb^>KM6V>B2IT+8c)-65%qh%GDS$ARC*JU}xIs@Jwvh zI!^FF2Jb95?$Zu3EEtpG^5Z^{9gE{?@m3jr^IA|IXS=!MakYuGFEd z2jhSsgH>KI2j@f&xQZ;o?+)_k)tFK^p9Y0h&My2+ zm_DjwY6)nRj~fAf@Z?d@L_GiCwt)7PdPv@4i9cp2p1mgw{vNZ!;Vo+$uHQ>+0M_$oHS68^V&M7S%g3E-@V%3VOepuZVxbz~=*mT_^N z1EOa@HN&dCLdza;k%ms2T^A6$Un;P&TlLZ{)O^CZ)L z$VfEN2hG5W`2DOS_V|Khtz{ABpUcOx&}pPQ8y}A3jBF8ey4*TG;Dy6N%-%77;LTz=w}EK`i-h&mbBM^+ASe7g=&m6mzg?AvjlceP z7sGEKf*-EsJY|`f0O4_sH?dt9PDU#~%9XcJO6kub;*vH29cKX4Ay$=V&;Upp$LBvW z;yURKBrXU+m`NynE)*jl5ZM_L3MP8^E3;ERyl=tg2h!39M9$ejm&9aG4(OwyamT}h zBor^tAqgvZx78T-E}k9${ip`Hh64!zC#G8ge`K_mL5te#QUP}EosoA)ATsitE=Qiz z>BIZ6{W0P}VWv0(ACrxa-VdJ-sFSXX94sU79D-#t#$^tCVyLg_PH z=6K6Boa*{a$n8Mr5l3;ZI_flWfVBbE16g6@tysrt0+mi4QvoTOZ|#)c;jaC}J@IPr z23a`6f!GY(E_4j&tn6!1DYqDSnn?0TJM3yv685#=4-#$sA!fcf^D4ZX4U7YWy!gU^ zIlI2RGg-|KgCURjVE}-Nuu6?R!PQc6cGmck&C=_gar>jdNzs1I4Rv+2E~hP5 z=fdU>K#@yqLmIl>=0~G>j8C=ZsrSPoGo>7?!E!${!YgR_!yvFo^MSu={y()Y*T-)6 zV>`{p`$qu|M6fhpGB&`%;&9{&k{dW&0VYY)hl|FVe4};4MMwAN>EWV_{8>TW9ugPI zpQCBgL!!<<7z`=%}RXCD!D{xh(h|2J^5lyio-COE_7 z6^65e!y6gMbuN%#n^er(+ft@!L7-b^LZP=N)Yz#&1VfaU5(Z>`Kqa3aFq|7&Nd%cuS6ZvDSBubzN}s zkZoj8B4T(8kBI4ayhfStgHM$X!>}-7z|z+1VG4;zNsK1zhFhh~hronqHwvH=#q&Umn)>1T>m0zvEiA{S|BOr z1`vYmp_9j!nYgdR{xmq!B@=c>6C8(}?a>6sA!qZ}9uReoiwKtq~iD1%k z2Kw7H>RNc&%5*p|@63w8!d+V;(!eMx3yRGny?`tkq*V$vqW@B%?YcSS{cVb!YDe zRaNT6_0bD-BaYUMg8NG{et~#Z|0ffXn(V{9orqe(DOlKS=QJE3!=aGcZn}SmOoKOj zvJa9JIsJ#7lAoxNd)zlmlM!<;i~VGywy7v>pvUM{TuIBg%8$_jwp&Ou)n#E|bygs)=WPMl+2Nrd{~LZN2nZ&G5*!8VvSE+UhshTSHqN z=!QvAcxY0M4JPCv91T0k0hh9ix7CCJ*<$0#vNnK!`57JCHCcS9P8&Pj@&}DWyCp%8 zbxvX<`fZ9xR$qUdZW`pRpSph+e|duWCrC)OIu!dCQMajLB?5B(G8HH4q?fhlA9!MW zBM$W(-Ng08jyhsQnqs&zcB z81BXDbaAzNECHuJ{E!4v)S&A)a))CJ_fH2k&ZTFki}q(_V+P`8JK|)kGecac&e(0= zJ_C;Xon|nW;Z1^Nj1u%?KAJK#S)vvG;NjgvIJe4VzvYpE91MJ>D`&}y=$TofJ5FHj zpN09cj|xcK&eh|3T}0m8M=hR`r@;C@CD!1r;T)i3D?KwubikpSPv?kSpDRk^xXROW z#38ln3;V~X#m$OZ`GtMiGsq9$O~91 zEpCLksc;tthsk(ZJjczfep%$E9{moz@kawbZ|9q#et21QNpgjW<+rBddN69cNc2O{ z-TD5~7e^pFYPkt*eez#jM7O&`l^~)9FGUstF4Ol5!0Ee`1rO2Z< zSBeJi%lVPS?ypA@^JvoRhy(LDEqWcNq~_DNuj6!wtnXa9Zk6!kckwE5O`X}F0&2)i zmCpoQ+rQ3b@MLTRxUcIt9Oxa zjp(A5eo7au5yg!2*Vl+2_&M)w(TJZPye)dDW&0O2(KJOpIEI?(S~1>fwyxDx%YUPJ z72-U++b4DH6@@>%Y-)D_`+vS8>SrGuQ(6kbhkZWekvkO{a|#UqLF)Xjn8Ntm{H|!D z&i##)_2M!v-e`BI1NZc5&byDYkM~Byo?C?kG>eED8^%k7E$Iy*F?RonC zJ<$LImb?L;X^ZKc4LJXT>uop4^Dm1wh#cJ^dFtIdp+)v|_NRqw4D-zoVt&uYnX~Ve z4%YFn8O8C|Df!d^)_(bG%zjQ!!ayVxTf6t+#lM(~LtlcPt61A*EPDALtMkJF{C6IxOJ zK_ww|T?~}(^KTz+`CERmnM(elJ})JVOA_?u0VTP|qAwZ5c>f|7E{I?i@T<_$5fsK+ zFF$icD73zkU;ImAd$37<_c%RBquB?QY;}bLNV6wnVE8EJ_jvy8tHnJyz}y0xA3sp( zCb-wGpl3FL&q9Vw9qMb6^_OTT*a8|*9& z)2r0bplA6{F~Rv}dzAPRT6Zd`HZA)Qv#gNB0#|L~uu|odkOh`c~HzEP;JiZKucE(<++$PfVD)-7N z0T)W}S==~Z`!k2>qKI^3EIKb)TuGQ@@Uwp8iyW~@RnclABet=M?)+H1c9kTv0CbO> z5cFt;e+3}4W84U$RWl3wC#}9u-3BG6(UJnKWdk|p%*-0AIWl~LC2!?n;tqj@V)Qd1 zkv{uG6r?+#DA6Vy)YRP$hl-ulZM(=yc9tbxSq^I?>RX^?UlA@B={Cy6pprwL`R)TA zqcUFYCUNA{=8?74kIuit@4L(kK$9isK6^O;Lpn*S9Z zTV_Sfhg2r2a`^=jo0t{7Dw*jd&SY(uADHXn!}{n4|8owt-TSFXPJW%U`Vug#U=e5FjYr|uQF z66XMI*(XN1%8R2T+1G!CMFh9ha*2{oxaKd7wtkHho{Q_vIIagsp_E_1a&QGhddXArOJYrh zs=@CTlAMLD8WMhX+h_P!%Sw_XmB?lm%4S}5OF${%9*0Z3FH7J|a2Rhj6oJi=i-f!P zu`H4lX@o1YYQS`LNa17_+isPtBq35sLTtN)8z<6BPRcB`B3WYEnas+f#b@<_#zUMh zGNP`25bobpnKO#k*k)XeK+}nZY?&;fTaCgP;hwwwTP44FoOa9j1;ZD<2_r9cv;6E5 zTDkn}UXGD|04Jb9uy*D5;sS*=);&LBbx?Rv6h+^jIuw2D=uXE*)b%ht=f+gi^P~E6 za^g=e+(AnF35x7uy6q=XkLPkhDovB(}m7z>gkUsx)6gf<z7lC9-nHgbfRL= zHgA0G4E_zfjT;Dq4M$w?Gy20D&#?d+Yw;s8+qT8&9#i>?cYb6Q)C*a)PVOfLHU^Jrd^zk=%IXY}1K2ox}xGJoY0^)~&A z!=s4KZ=DdAGa=19As$mAD=80qcvmL{yVLKY`0sP9{X_igZ*x$$KM|wiAU*k~xQLJG z|B3b7i%f;n>0I+saV%_*4{i(#a zxa$8g_Z@&$6wm*;_fq%vULGWn3V8_uLa%}#3Wp#aLB&o{Q89{wf?X4kE+9x*qzEb~ zAWcOc3L+>X2pXh=fI&e(Iu=k6|DV~tyLay;@YP@W|NoY}yS**5v$Hd^v$M0LPq`>+ z36XJ5gw<)TqH{85k$XJ_u2WVg`2n#A!-;JAMb_)Q#BbqftF!{03EY%+Y>VI((mJOeT zP;*y^U<|9?p+uyF_)KsTVt7P?#0HjO=KMDzovyx(9q!8Q>5$YAe~rR$zV zmVxEQ3yG{}+}uF!U#qXF0k3-|4**h#7(K{If;%G}bO;+(iI0Wdp`XxP*XHjY*RO^ii6e z><7~1sQsxDtE98m$|fFTdg&mX7g3>LUIuIV#1_ejlk2^bNS2H%))9q>(W04_fOZ%c zCCa|Z4}sWF-@Imw64$5F8LqG-&ec-%$Y9k&?81RaOr>Q_kVlF4dxwuaVY(ykm_iaokHPIB!ub3uqYC2^vX zR*gJ&yLkNGNFFaXWU}iOi@)*z9(S)@;a_q0tFl<@@X`vCfWrM4Y6$t4+NSi%52QNoN)f{$xIcsAEXOKOl zM$D!K%6Fn5hh=%@?h&(cSisqup|h~Ce0fNL*qQ@+o-?@;ONYSCsKjd7+5)%?9PTxT zlspuWC|q3-k5^(H!D2sErT3t8NGHQa&j7W3ji;xvK6KbKc`W=b>f}14j|>QPuSj3B z`N1Q(tVWj2)l4uF8oS6%lV!QAQ|3xJ88XaW?#Tc{kKB*QstjgiDKxXHfC!saV1Y>T z`QOuO&}0Q*=pQIF{i?F7RR}V8td*cBkE7FXD~;4QMKEcH)a3`FEY>a=6_$!a4-Weew)T~2bWGki@yi!Z@R7!Ns zy7&lCB&W@Z7n`fIN(u4clsH}IA1fqW%c`;aLi{xZOO5KRMoD!H#~DhX?SEn^w6VI4 zsX}db@P!)ekmmVyd$4ycHdn5yeRWt@t-4aQ%JMYQT@vtr5;QE*e#-JxbU!;0aqy#M zVsK<#b{}mCo~XxC!!1;0>a*oqN+B((Q7%OfBrnX4)uFB>nAor@ZouyJK!>`f5$ld+ z>}!qKHK=8KBlfdr+s|T6V^$7(Tss@H`?Jo6>1Gx@wCiY1io336^|S4Dy4S=R)bQn- z(t(7(2`eX7HekB==4$o?bk3GdSYK$MOPa7DDR%F$y-M(@-a$?6&=kZ3i(PQhHLQu| zIsLOZ+KkcmU;ArWD<4r%x~B!iH*Ch=i0Rj|{blXl!eXg7mLr{M^mVKd)5d5nwSX$k zBlNyoqysc9#BYZuv%^>zF5viEJlkCAeQ&6;A2*k3#ZS#y{f1M117gjJ=5qSAK- z4v=M7lMYrP9z&-%0Aj}$>{_U&qgpTu`?jQoglIzxR->-NoN&}Smt-?`!Ay$KK3k&S z^0$GD6*R$k>Q%1ETH1WN7{ZMB^l|)xPd{g}fM?!rF$2GjF1T4P^k_o-C^nm{T4gf@9IRc+oy);GR!Z4kaD#$v{ciI76@6Q?@{qVgS~K#6xX_x_ zhOxQ&4Xhhzy6^@VZx)J0H-O0A5_@i76nygB4US}k^H{1<>JV+8-2ceh(69}=&l*bk z9Xs~qcn3!`_5HmzU^vso4{g}(sO_4zEF=BA6mjJNR$Y4_$DJY~9w+*>Wep(UX18Un zBUivnq#3GS;MSIiuoPb(>_bXvs=5GZ^Oib0)NURxCQvTE9TvGGPWH*U&#qQ~9h*)D8UhGg>y z&*j`MfXU~<4B-B)BC9JaUor#2i+BUrnMQ^#U0LT06}uj>Bv6aJRc5`2kGit)C1APZ zCd`_z#HgECg^H^A)nUz(WgKSJDE~&WCdeiQ@4OjeBH4mkIX|NQ)#Sr6@fNmRUA|$; z3u%V{PdVs8f=f7He-UoD?k?ik4DOJTd+X@LsBUbe3r2JVvLxqL)(0@Yd@I{fTKz5s zm-a8Cvnj%vgF^U)B0jxc|HV644e`lsta1(6St32$9409c#qyj|m=a{Qz;uoFeic>|l2ax7)?IdV@j0IUuVyG+9FRV(8qRh9?+hi^p(JxRVX6SQ<$a!(H~mY&2WmjTvm`$oB?arg?yRv~NT);1h^D}TWR8=V5=**cf^QTXd$JkgfgWs@tFVflUalu=q&CzM zZPr09j+-^XTv`p~gdB9?00Ac1uP1AkRRYKGl5T8e_4+pk(bDyrH4^Kk0w`w|%*FM| zs}-IA{zIbXJ*-hRYxrwL`Elx)xT*uSDuH!|HCJE0hrNtWq}(f)c`fdRDb3onZ*A04 zwQ|tF(_f(Pw`@J7BAkskJS<*?qg+P zd!2S4n-1N)pf{^5y7y+;@UO%3?eMn4Py56U*!6P|2#>CM_p_vG$0hS`6ZYwZOuHdG zO$)e%M}9H3*Z8G*X#hktEztH0W)P$A3?GZazIuZ6n)vV?&*k` zjqHKPBAe>+7)y;)-H#UE_GC$7@MCOo%(v8g(SIyU5uN(6hIc!CPR=e<3h5fHjii9# zB3-O$fY?;Bj??K0|4xNXNEk>5hu50{3Dv%S?4}Y}xvqaCsE_s!!%BVaThZ-tHp40z z51yl>oc07XhOb1eC)jh=28DFN5g$CkDwpKL5d1y}erUqc7_Q%+U{_hHM3JaJ0Oy=e zi2(!H*0f!+172*oQpa*t$8z)idql5+?Cnssz_QI$5Ep{-2K=XqsZq5@f;EtT}ER8eCJb)UnxJ%K3IrX`DZ-^TiTi6il^8t%~|ixqI0(2h=-nG zIoeq<`We>Qg*GKZk3Pdpi&Z0YIIC{)Yy_1AAAgqpV*3DFRNMb~CzGy7>8%wyGzYC`MLO2FnPG6a%11 z94>BJz`k;IOHo5oA*kUO(Y%norkxG$F2wF~hk~9K15`2~v z#1WX#OISAP@uhO1dJ^CTs|!O1HQageow)?ElE(q34R=;c{)E-*sy2WldFEWD5<3w3 zt(pp`S0QjqY1REXEbsrw%k3dd;q+hVC8E{S&KE!!AAuKlUVM&~pT&rK*pT=nOOF+u zheGmwBl-+jBCrlW={ICm9zoxnvRymRMWS?K;G?KOM?49WL<0P*%UL;(s`S zXGKMa8-%+!6b zG=UO8J?TwWaD-DINa4m!&>f8{UQ-;oTx&Dt5*$RGT$fsr^V8fPRWF0d5H< z907xz@uJBnc54Y4@%ku7Mkq+dH=`gUwu-}}*faJlhf3=prBqV?53v4MamB3#KnPi# zY7(;i{}frIbzWhph}-8hut(dGslf6-C|FK>JenE3N-IrjY2^6)w`fE(AHxjiOom!e zi#x}#+e`53HDe^NJ~4*9@2uzF9?M>F4Sa&s7+Sr;avLe4_NqAvTWrLf1kB`eKywlw zZ5=P9V*lnoun`e%kOtK8I#%d*OjXJgepz?U13t1(qqkB7>&S6uTd%Ty{X zGKa(!{G!7sF-or)>7y&JR+6$!WzMwcav(~t9hrG`Xlhb!H^ewNx#Lw<4~N&{C$M_< z1;*L1)xxl%gr^54I7~RiC4kA~jtT5V2gP)aAE}D4tz=hsP2PBA5O6gMMun3Pfp}Vh zZ4~t;vOT4nGqNVJcCMlJN=@XcN$hZ97}9~~zLVM04j^e}fi)D3U&=i&o*3oMjOB0KyuvyK+ zpbJBA*g#T^ky(kQ1joL{(zJqoik;D|>crnN$&eF;&G$`|o)hE$l720TMVk|5n8_#E zH3BH@&ygqyvyQ;-Qx0|?i2})M0_w@rL?wiW~2<+H&erP1I`H9xeMNAbuX8@kznswyC$@ThoTjUmvjeg zH8pI@pL?`1NismdKwrF~rw|Fcvq5jjRC)s}yYAXDFp<=}mi!cRq=K@I`Y{^2-eIj^ zHm)$24ZRZ1G95U@mvdQmO-qR)qYxk?DI3`{SBd0#(jav0JeJzjSrLZ5yI~Cn6+N%u z^jy3$kF{#DUggfFfQ8X&2Dgw=l1fJkNUtJ5Pe4!kd{&{Pts6~bQ4{{H!B+Fx`Y^)+ zvkVIr7q|=y5EY2Vr7U{G7hv;sJ3(a4MvPIaivPg0d@#G?Q64Uqo#q9a8>3e*!Yx-twvbOXEx984t#0R%#8B?kla8_UcBx^w-)_fSd zh^mkhY4{C;iqxW3$CZK@d^t}EY_=GE8~BJ_HYw6t(e0AcIp0MAFR8H zvEc&-7?R$Jgnn0&*!=-})M0Rj5Ez{gB;Xx;`}P zLzZ8n&a`E$ie=((O$_iiQn4I?N7~6fC2FP765E%t{*H*TF4h*^f~;<{uV}K8Mo+3* z-5d?tB4P()n=dpc-6|F4jWv`gY%A@ zrv8s3rEH6jrMlJaV|IT>YZ*eWKCZ!t9L$?NbX9E#XpdXHre4Xx7O^W>7F6FVD@wt~ ziEmhz_+kYcSduB0B~*LiuD?}uTgj@H%m8~6Da@2XtYp)xg{TIA+Vm7gWY&vlv4vF< z1)s3;Z6s%uxC&``pdHten+_!67D!@|aGMAzx-vE|SgvA`dp}_r?d-*yo8Ygx!ZLwS z6t+yzWMd%M7OPnI5)`>$70WG^BH@`AfU0M4)ibNuHKkKzi%;3>B`EU5r)<5Fq%HxG z)Y?G6M_UgF#8B^(t=@|Rt0kd)`x(m=W!JE~oGN2*Pc!LJ&#z(4phtbQhV3*XMGuIX zMb;d)_Xo>0_9yAA3xxp1*rJ_lF}V{zXDQ{C;4ViSt1^q!=DrfmK4<+)YsodC!uud~ z5VXW2TdFAdT2>`yKh03l?=u!Cty<$hbpWR=!aGnye7=?q`Oo`_guyT}zPzaWC;N#J zrOSt;2(%4nW{bUFu&10sv^mwi>sZHHKPW}VCIr{UEBx#+`DgJ%g2Qkw zD<$1i9rON5+rf%M_1nn$l;8q~H?rD}l8kA|+@b>FNiqWhc%x{#iHR_UZSN-5)v3@I zP**-T`?@r?0`vgeu;bgx+Muu5lIv^^=aS+$T4Y4ftegJ@NJd*o6OVnv9xFj;5CQLK zUy4aZEH7Jei`5}63*sR#Xkb;J_7|~5HDoqtw8_#>d`FHN;6_Y;d{c056v54Gm{qT9 z%OfJ&0ny`I)*L$@uYb!1)Q%kE)gjF@VhrVG2&73r?BTq(h27$Gj+Ap^g~?l4Cu{SX zRim)GZdfU3FO=fbSV1#sXbq0q%8Ip|5?GLf;bbHihSA&EdTYUF?IiWu0e8;>;>jJ% zzJ?r;wF4Ov3eQey#;d)PeN)RG!cux-?OjkQd&H{kV(*2K(4k!}ou65@8*_K0GSPpx zT&#}T&5i=A1NOifHr)YdJia3rQ(42m!q_SyesaQI$0x;n&<^nKDY29nfP?A-lqSWVmGBMdukwKyKRt!*4}=lASB zXFAztx=r7+Mi#xfd?c``DU}(=KcZ4G&i?HZZHrk&i*i8?l!ak*pDbp}v%@+Mei7Pz zv6KeIBpyG&w&q3hY1f3nQjR7ButJ;reScuHYy{Sd%FU*JI&&vHYyBTtd+i7D!jG&% zi3KESoXFE-ehYo@$Pfb3IZJD}<;NAO!c<&J8 z$5&#@A$DH{H3vd&OK=XrU{N>vz-{TKpV$-5T(c|O_7hdO>@ZxCOCZGMU4mXF*a$g9 z2FWZQ2f#M8~p;`yU4=15$Vko4zKR?oND zTHFU9iqQEcKeI~?+1X2=8;-HuJc}=qgpCvn6cUHZOD-CG^%%IFgFp(COpO&E$N9Tc zLO;P)gw6SHPq=oc%&i6o~A>Sv#d+tKS3qtorOF9esSn5%PWCZEK%UV zYO7^Rw~ci-2&~d7)l#85{K9UF-0xZP3wyk@dfgq7qZQ|_7l$`M>~_7qeq~MWvRUTk zX2&W|wDzK>z=O-jT_D3;mzs^JiE`}~&V%THAm%x3w*LAn8)LI8vhT&Z*_G8ti{HQf z8ywq86K>eX_~kd&&|OWK*pNDtz11l?{?4B4WL0CUbX`1jb9xx?7+?zd=mtD;F(*4g zYFOeq4CF4+;hfz3?t6|^wk(%0&Sz$WO_EJE!Ce=a9RvXx?`iXU)j5~Qjl;QCGP9+h zXSJ*@B@(%nb(aTu#AEHAsCK@k_2bxicFR?YsfM<|umZx-SlWax3umD?zp^44fwGM~ z9OejA5$iuH2K>R^b=l!U+7JkgN6fAWe(9LlUeSO9nwOe&8!5;H{x2G)c9j{W=>@p)Y!}@wusp+V zOX|VFQ5O(ZuLQ%GdXdDDSQ4ifhy<^$i!Oh$u^knQmcE8zR0x4t-cep$9jEr|5_gu` zEt7tZbuA;EcCox+1_(e*hWnQpNaBP3onGrYPov?UX9J z4LU8SyxA}xCViy0bi^MfiJT5h(>s;ao1v!A7F976Y;+!26~6mo#)w#t9@_t;^Eo8^ zdUz0$EHqq&m*p2gQ>xQs z$-E7R*`s(>x80;vQq6P_aCuUtZ4)bCes*HfFQ=?T)1`#6qwL#cHG;DEx6 zAM-4W>+SD$)kj;-WL4yl40H}QTr!}AfWp1yKXJJhvO_I=!Sz&pT_;c{p=DYG?BwpqJpp{iAjWi5BrRlLdPi(_=!;Z zP&zKWbjg&+`U*-16xlBOA=I5K<+^O~@DCnrAw>K2aSp4q7npDPbz9Syie{u3As-u9 zPo=K8F?hCaP;w^-UF(2y;nSsG(4zB$vX}shXy@y6h~IyGM?yIWA2PSk<{KQ|>$m#5ZYr zeHc)*biGPm2sT%b!xS#%8Y^y0N7%+M#kc8ts+gIs*Hh2EYeZTJ@?bv+t+3HBd0b*3 z^03J4m7%{;VtD|q3-{SL%MP6sPlRO&sbx~3Gy=Hcht@gGGxgk( zp58^#Q)n2V0ejT~2M8mN8FdgjRWI+i^q#TnJz3uw}q2E>zT)0;x-~bbB+@ zT4Kv7c3OOwr9WmZKs0Fr3g9ObV#Z}7ahEtmCF+#Lv2zFMrs{7H1C4GJRwW| z?A}%Qu~Z{eO^o8+Y<-}zhPwRlVBBPC5dz08GEm5Ss^a~-C+FxX+7^+TquWMnICxmr zho^J&TH2q%w{!F~Eo?G>RY~uEyTWOR34v~T0RD13I}wWpY`V%nXoB#Iltf}iuI{;r z35o!U5;5h1q9^3)9m1MBnyW8#RJ1tUCXH?e=Tz1!Xlir9t#?4#Eeqbf8fp)OZ16x8 zy`$~0zf0k#NuK_f_E)fRHMk-=D=xRO2*Z83p?A4$ySX4CESw9v1(+)*_-xobc*GG$ zU~Xkg)Dgylb~zKs)&}}u-4(t$OzSSSXbz2w*V!ZPTtm--%g3WN^dk;BaY9;B&HXij zj*H@j+WPPk90`Q#-o;VArxDBmQ2=a1Z3K`nh!iFUixzGAyP zL@+pWAIS;9gun+c+wL=U>~@=o&2@A?ChUPa&VuT-MrU=xWh03>q5 zSTVFr7@TY_*tf3UMXAopQ7UX70?j3==B(8MafD>LPKb&lI)B)PxNDmjK$N*65Rm?5 zA+s%3+^n8{o#iA9^G{y*W(d`#_+DM5$rBI_aeOKYJoKViQcth!$kkHThh?1gq4=|& zes`*30WkY3B9hBU%;hBUXidG6qNeACuYsW@nDK3oSTtqa`xsVC>*q>p&FDgk>Vha}rI#hDg=^j>G^9L zeW_EwH;^PLEZA1Bu3P3ZxS!{U1GBUqqI)M8TD!H=AH)>@q@8}3y{kt(57%Kpb^h>_ zFuwI4J|k~vZQy2J5sb8;*ins8W27n;q1w4rxGPi{R%7xNx>t-sD%hoO zp#jNB;qd5UQU^WlF*T)Ehn8rdX3xKzkO+_LtocezNTP1qJP*ys+M+{8y>6*cEJ9 z-{?kttTPL6E4Q2lTW{2R!=QY17kyoc`hjHkLb;?af%*}i#ICgC1{|XIWG0? zXd6%zv7R7qd)e3_=#<;PPwJ&%oxqxE1s*Z(EC2oJwLqGzs^i_dH#)4UJA3J` zg;jN_mtECLYw3?!Py3aJ@4>Y!n+3mDZ{w;LL2=0}aIdsRj=5KFU$F$M2q+E94?7_= zm*4Ky7lbvq;660CTYP<=-ZCsby|-gEh=w7ioCM<8-g>UWxON$OEuU@==mV`@(Fq>a*zO1PTonm|c6iA~r5K>_Kd2`o zLP_NZ_1&1de?O>C1Y#!k(VurArh-IF)UN zL>#t)fJX+&aCFylN0^(h&kuEy2BgQs`oORT_dl%L0U;>ZQ$Rx3{1HI6UgSTbzo&gK zGW)tV)lvhh0|WXZ%b&rSef1uig$oFKm~k9jJSK5*&*S>Uv>cZShE~*+O;PNY$MmSi<JVZR}-p;_;Y}M!467M zQYnF#hyO{vxg{?&%)%&&)+h(uLuYF#Vfr7d3!Oj@0gs* z+9(x?8Jdocy%(qR4z!52}zN|MWuAJD$_C>YSGdj5ROGU+adP zUGin{pJ?5*E-pDjN!CqRO;RvW<`nv@?BVt$RrdW;!-f?WQWobTCe?v$f6`S`jdCxa z?J?&X+ACc1q-xhfwTA=q@2`0(yr8aml07Q*ny1&q(HHbg4{l&8v&UEI%7po!uUP7o zJpG~zwWI09Z(ZS3bT}dF3ZLI9&<`TY<%mL^E?CMOq|*gU34`@R_&GILKkgYnOpO0N zAt`wJCB331Wh_M`y+Zum51AXVXGQxA6hO8}TpS4lVUb85r9XYs^r3420ri;f z?kXnjhq`%$9Wc>7TU)5N7BUX{f9|Qaqi9ru~QpBfY^zwM_e!r(O zelCu|xE6_wv9fZR;nc03Sn=om9>1abi7w;b+QnkrSp7M>l1i`0N}9f+SF7M)0~;`$ zR%}tU6+<_)5>^V41*PV{0#%_%j31|05LL#(FkU1YkCRQ`I!-o?FLa~er{mxTQzVW# zi7DdR@z5oT#A|~+8KUoa-G}Gr$Ln>pwPL||{U&Msrh{GnIW+1R73q2iWJ|0g-1y)4 zCk|n?fnP-2#>E)Ua7bKZ%WVuws_%H zY;oYC*jM$`)B_|+A(Fr|sQ+{iJrpwkO7ZopdT#mSFM%lh!&J~^d~TQzsJ{uuO~BL??lTpAL?P(NPB|AME_w4m9Rpf z+p|e_0~**NXf^S%=)X+w;2l@EMtr&q`-m&W?qzz-YUnLGKcQx<2I?UDlE~|MsZ@jl$uONXZaPaQ?2*bNnbovMYeIg$H zNZ+ij6U{%?|E8Z6`m0(|aLWq)3A!2U*0p-&v{f`d2-A%#B(gmm*Q&t}j&>#&i6Nip zU6djPu&^GGN)*F_G=|(YU@Aw{lEspO;a{AIEf)O1nU~{k$rxH!P#tAg>1X1XQWH64 z-Vx0|)yo9~pJK!TMf27A5s$VYnD;qma`Q!YMY*b?04gG!qNRQTm)u#i$t)y8enbFBrN z1`(oSgE!rxUu!L;Hmh~-OI!3;s#%63?1aUb%W2@9Tj8S-Kf~7i3vk=%pp#lEqI=|d zHti-+AX!p>a7uU)^x3M{Of#4@Nd_XT=*hI};`omB=rtET!J{b)Ox{bT^CbcDWWVsFnWcNE)_QdCa zkx;m0oSjsmuj}syyPYn2?ABB3g^@;=$b-W&1goTOkK8tohp)#wyY-GqzY=qSwjS^h zE1~;8*G&G&NEd-UItO2a>TbFk!t&Ff$Tw3_(T@l!VpjH~0{D2!*oU0?G zK-}eyB|Q?Tnfjenp29Ee@$S{@$E_Vnq(56U+Y1SRh{${O##h@aO*Ky;QG9kZq%X{m zQH?zpm4ZWB&3SqRO{M0O$cd`v8L?aZu~!e2m6L?N`18So8+k_W7B%+i8Hha7W}n`U zQL!9c*6QCTrtZ_*__j;BB}&Qj{EB;)_5t@hM8z!*;6H=@A+NxXW74+AO|5Zx_Mw|qr z+JTZ_ym&x@G5>&mO|u=6w#nBf5ZyFtwADZK%*F;DC89{_Xaqc>4uXq;s{2<#N^MjsQm+AuF_4vOdAdJ{j;HMASadPgU z@a`XAu(NUM>T4jb4WT3tKnwFny=Ic?m8L`KvVh$!3V+nAWvCBe_wX3Y%z^DVnh*zP zO_W@V3{q)BWjYM1s89AhCyo|>C=gJcL8yE%19ZooA=AVq7p_cg;8cYijXVLFHxQ4f z01QFV5Ly;UdnD>12MKMPEdqGtpx#S?kGX^j5a$)m4B0KdKM2Kkr}+J#{`|jFQO+NN zwB9YQ`bqEQ*(|k_B+;TJ_ggB8_~9qL1*oyoVck?x2L=;tszs6Ah=Z{pA2`}($tdD+T!3E9y|Tn^@#zuARZDGdpFN^qTYr=Ks%Qju z7{4u%{)pCeoY|l*pC-D3R-A+Bcp7wbR8LXU3qCxUUW1S7ZE-l_`D1!&yiEz>*iqP$ zcZdc*>)GjB6zO1a$>^37E7fd_B&Ok`KkHwCK{Yw1w?uAK(X_!u3DIE%QEytDgERY8 z9RP;_`c+PD4PDkUWHm>R>D7G_8^D7+?1>A}Sv8%T8;n>l{9!X%pz_%QvU#N*PiL^`)Q zeH`$Nqzj|O=~NF^lELRr>r=G$b6+L=TLX=i5_V4Vb0}21ze5JVUmo_kEK+ubrT9Vb z>s5;AepYW-@d&-(LhSj{RHopGCU`LH{tv|BvrzO74-?-G@O>vv{-SU6933{nMD*su zi3G=PVP0!g73?>t?v!hw@1cJ;xhwvTrSCB@^>_W&D$^ICN}@M!OHX609dL0dDYFY( z28IQ^3x_oJ<{@c=D1Q#Cv~%M6b9(d3V>>wSoPJVEo4ACaJgP`hswJ~kidgc8-c>mb zVD^>fV3+wPwAu@z@K3#)_Ltc4C)|n;i-Zf9a+gHM3wj5aP+saJd*0M=?NP zc!2&(Ikr-T4K+>`_R@GA{EX9h5RJC=@GGq70s)NYF@D0<6=!TPxrqe9PmQT0mGXv6@wtjEE|KzyOmSDe zp+ugYB~lK_6sxTQ+1K+j$=#1v-z9*qb2YzNrX;&k4$72qX|-Hl#SjJYh_yCa%Sa+-jJx zz0=j&`3b(x>2Z54Zc>r)1__@?I1>D;#hr|I(|!ytVSJv3{nk4Ci@tJY6)l2Z&L|$G?JRvz-U31n1%5qHH>*sBi@K+}_VX}g5uH-(N4s!qZnnP5x))c2ycvhGP6`WQo0$P%WY95yzT`Ha| z!|%bB2D{4eCbdTlCz0VnRG5de)o(UkjctyTc$`3gag9hFBdoaJ*sV&2&V7` zaZ9b2Gby}b+*<3UW-7jHvtAycmxI>JEPDCXdf7uSL*7@lC8yzKqV>`_jduXyO-?j^fd<tnY?|eAJQxE_MQ{N#Dbj=y<;lyCeF*L3Ot7WOtIV%Xa(y6|8mdODsLV6m9}?{nM=SGI?hoWyBuliY5?%sSsM>h63UBK!fm1W8 z#D<6xV2o z^Z0u0RdG6xS8ebKVGMSM9Nsd@zmwP;DxmxJqFY9p8*mN4!=`tDS!idYOrm`?jM`2y zwHlv@pE}hcKz53b)p-CveXDaaLyWA>pG&u@qpDhN88c?v+q;gubUccx2v)4YV>F*# zYfhZ3w_Z)2R>n?isXeb?5_i?)8RcxyV0jA|Epb7LEb($p{>hnsmZ+r$^Sc-4g`n;CNJErmSYX}3R?ZI6icU;9ARGf|CU?5WG!Qn6sCv-IPGdoqxzlv9DV!u&6Mw|!h zd#wH{QoxyM3gcwwFc_P5Ozyb*5>7TK{8&%DZA3oN2wT@<1+-dsx`>?MS(7L!sL z>rumuM!bGaDMg6sg&>pdQJg4^uG({#xX_4S)zB(YDwI?TMm#tSptJ6hy&LnZl1gby zENBeUm@PJ3?t7W5<@efG^Q-EXQr>|zrnFWkpj4@?ey3_Zf4T21n($OWbw?9^6>$7Y z6P^-p<5(dt<$kERHpS`cxE5YRc0!?5EbghF^`@^WZi7i1v}_(u}vn zM#F?=yd&Os2qDL3PELJl|B0&?@{>sbf*Pbg1~AGSI?Jt=y0X^82-4#p1RQ0Y8eob|^kxeAJFt!_SZHQ2#8^ustu- zril;R^D&mg6C7h;_vzGuuR=QS$QNT0uk6SN({@EC-dTG?jP1mGrOHV#Q6Us+UBFx* zq1-KEJM*kq`E{wN(V5?YMuv9g4Pxg|C#H&3oq1c@HMo&4Yb1>)q^gakk7kBBS7w@| zYLy%0Do!~J0gph4cm@ErBJs%#BCPu;Hk2K+qLl~)3>OzX<0Xp%|LN*MRE z)4~n9g)~>2$+%3||BL8)Gj9bHPrjK~b?`^wzsRP(>1J7L-Yuy04e{75{Ps*qSN3J9 zpd%>0vE~x1i$7AvqG0uI{5maDrCH$1S&sR7T%`tw+{)KQD>NJqcDaiud8`-lPR-(*0nlv%V zi`Lkg#O@w^QtV=CVn)HRx|d)?H~01B&$n7Azd{FPU=2}-Be_X>GalvbFb&1w$9NwQUYCA+n$;|%2(%DnW_D)b?a%X&sb+uP!<7B> z`qz;bB?Xe#T;a_oi!cfmyT7*1_QJYqmcw^^`cZz00fIL6=e>H^Z&XbNkwl%SDD&J; z(6Ye+5@GVj$RBanMs0ysAUW_QtQ{0LJ(8-9$pSP8BOm9T)R0h%`yb~Onp~!`2%zoC zG}Eap*zgJ7JQ}zf@D%R^&h^<-{A&+h$34qyHKKuO6h+ALVvi*+>WrNbhjrziwv_f7PIoA||r7aR{5HzsGqRJq?GIlOym?(}6k~EL1YKXRjc^W?7JD7i= zJ}(uuUgCGyb&Y-r{7bevU0WhL4dFScvfmIsEA>4|v~XgFtulbC>&?PZ)5{0UTYVyJ}6H=5^(dc*i9kQ}Fm@f+jkp%ya%V|>GK-l8n= zhDM&Yfmm7)-vV@R5mScq>UE?{mMDZR6=Q;xzPXFKXVyTbnYh+@Hf1qaQ+2RcoEgr^ z>!i#G{yu)zj^Hn%SJ#i^O#sOYBO!X;7w?SZclLap3e`5JlUVg1Qws|-4w}wh`r@}O zeiTnlrC3%-kT=rE;s<2p*NloXKP_kv3SS`Qb4_!Xs!;SA#hYpe#k5gS9u^DP`Te8# zS8BMf68m4~Nfj0mX3-0x5AtV1#0Xlx;}3^h5z4#^&i?Uez9cqQ_HL=@HvuC)T}+<9 zH=uXDCi11Iu-qhG9X~B5Vcj(vU~8 zw2Gh@KApF=leSFfEletJ#wxBwF?bDga>=CWC6nH?lf=z4_^lcA7Vz8EXsG60J4vja z!5`GdiJGrt8c&g9g71Ezp3J7!6GF2_VVLT`-)G?Kd}^BfPHgf>xN3$;)YDf^TsxD$ z3UzVwO#Vcq?$&h{pJzq`e6dHA?h+li!i4rka{wAp;kVZ;-CA z?M>dN9&HPyqdQ0#f-%qW6C1|+L8&O(YC|-NsFa^X-?yN;jtVY$3v(RpY@LnTibT0N zyh^6Kj5(Ly%o^r4rE&&un*&--Tu6zZN140m0g7nh+gQ7g5{usEjiCtt^ftd2Z|&aU z?Ljb){m9E#iwDic+BDY@0uDM+EBs(f64RYLY+!hYhs0U2^&LrcadUYK5MA53JR5c7 z&*j^I$L90+sup3`m?htA6)M7MXbm>ngae3w7lOl7k;8^k#l#O;h|^As`PKw?>P>5ABprTO1|At&F&X$$$%0$J8p z&J5ZGBYR|7bA)7%RMgxi;hjK48>O4GB!8=JZc-hy_?rXfTAA5mdx(95?gSFeg9=2| z<*#D2xPnT`;V<~jBHo{9rNt7MkQa%kmhk8B_RA8fOEq~9>!d}&d*0*BYqN*`OZgxw z@XLq%K6K)?WxTg7Y1S-*f=&p)82q%1&#<3E5-3x=yMiZ)y+N*HIvfe|&dDmjf(&d8 z0W|z?2iq^_70^hq&qrW+0PD4nc|H7W{FqONZr5i8IF6KPvc6n{Bs8=|B02wDv3CW3 zE>5XyvErUjc~9}lN*)h~vUMw=GK~_aRuVfE*MA~~>*!DTlsF{`qs91_zz${2HN?PG zP%jsYv8(ts=;v3f_(g4@`0`Ue+HShvYCg{vxLIp3q|ja0z?wTMICTy08=Wmx30nj7 zWW%>6;3W?L-CS--@w|1siT)uCEExdS&lQiXgN(x^n(MG2wK{k}C23zuqeqV~q1}#} zydLainRsYDf6NlE0VQ5*qM9w@=k>gSZi&}GK1`x{8+biK>FCISq`BgO4LmE|k+y&1 z0(T{ChbUy!>kgjp zg)CgNn|F&-E4dgkYY%wFOwoJ~){C!;&-U0Vnm5eNJ96YagiRteCgYuCfW<()T+OFxYuN zq_sVc(dMk#!YGzd)G7{*H~a$(vFF*EIq($ zWzy7uAwjD3v=0K1n-PS0`TiB+uLB^pv!dw_vWdAr@_G!z6Kigh40q8FAoUeu=MR8m zg*f*EWb;{K+C)~!+Z1mwYiYgoxBrvb@4N64}@ut)>zJpUn8 zv{Y6T@@uDisn&^hCwaa4vJz50K-bXHYjA0epfXrtsKBG=T> zM$1P=k7MN{R=0JuaqTj6?s*#~CB=Gc(S(OT?YSw%WnqFXv#J zM%v$h@PJ7B1B#4%ZX{~!Myy!=2MjGTVX&RP{7-PHRU+*I=8eSIIQT;3Tm-TXi(4;3 zZI|nK$gjV6oQB0f@+F>+j0Kla^{2rfF7ZT4J^MGMPU>zHfgoyWMusn(AjGYju^Yow z*JDfoS+DgN$=d&S!zIT^4VN6b|L$4x<@8A+44L8E0DMlEZ6L<_@MZM+1+rY$5a0ap(ehR?V=BI!w= z@iY#np7I%eK`h-9jq9|;B{Zw|MVWiwlhZml-*4PiB2^&u4$-%)ab4}Dlt0$|LH4WI zg=S;zf`7?{BM^iA62D3%g%b)g?2=Y$aB-6HqE}lHtes+1vE!UXLoHEk?fZ&GdetJy zlT{>kC3zursD7_m2sagTO;kHD{~{5{GSXr{pswr|&9jUy+Q-3hSw>$Ed|~^&ZQLN% zXBgx0d}pRnOWPV8k!h^f@Y=4TVIPr?X!qNH)b6*JZ+DBU-7Tu!Empf*#22|n5A5<3 z)CEax4BlDU$nj>-u#zD+PWhK1aBaR>{66*QoXA*cqz8FJW0403r+d{vSLKHz!Gapb zr<%4&G_Pf(Yny_1)-t~EK)eR(qW+@)QvJ9T^gq}C+%-mrf43vhv6-<^+eX`BIdKal z$;o}Oo9jw>7;jFLzZANb=bIO0h6N-}v5zkO6OKumwN7)E6T7d)0Im~LuQT!rEQyKB zSy3AP6qcig2MP)fnz&Z7UNZN~g{#Ma8!%v%NB)ONMI~vO zOVoB~ZnXAW@Q`9cw%#H!tGSVqCK+uFP;8_UAT~EQ-V|dHmF2%Lor_u+zy7z?5Kl{^ z{{Orh5`4R*0U5MTEW6&Q>K-$U3RYOkxrY4V!^aGl%~)gRRbv+SAIGfOzZ{u(~O~}dr8J+6q*2d}o_Nb+`G5$A{$CYi2fp9*q-_{s{pI}?#5&X>PVB`kdwlmT_ zv44C82DMT2>0mTeAA0!yM3Ra7XXqE|XF^A#o%&Q+Jl)Y~t&032KJRFBj?A0Y$*Aj> zRob?eDF1%Zvy)M^$wkygJ6oFaV$#e#w#TQr?E=1$*C)=+VS=T?bC`C@$59dgxpzM8 zWN2D(aCK*6lNKw}CW=?P7}WsO$}Yyw_?daL@hpDQZ!sPXj=Rb5X<=zWyxrE#sLSGE zyCAmg-zRuCqrFO=g`e}?jI+1Nnr;8lGO*mdHht9@-TqNd)QXgR7gRrnqWFK*Pch$5%Oe~toT^4^X*1+ zI*&T`4&yw2hTmz_!_P-|8d&lM|Gd-K?17W`#_q->ZD;VF9!6!aHAunH_ZY>Rwny~6 z&v-(m9T7j>XSDZiCizILxk{j_|7&qwZ(|hZ!-n1^RLbDl-VpBimiB{It(Eoh?rXdYEFA1>z~1wD(DN7x*tO!be#S8EbJ4E9u~_>#_(y*OH1%^Z z?g?Wre#OB7#`8Y8?5bd{wU%9v4m7fqdYx%bw9=*xMDZP>!;{ACWvO3*%7NdmQ! z!#DnQ!4ID_uGav=A5R%(s_M5TiE0EYn@cQA-1IbPZ&z@})5ckA{{0f1^c==1W{*T` zmluq3;*}SS?g5Jm3NH}~Z3|otAa%1<6@L*!`Hel4-ariuW$zb_k-*r=7fWC`m{MRM zSo2=du+VrPLwUH+ctblNMh-Ht9W53PG8*CM;2B z@&$?tTf>vs3gQf{qo5#Y2o7{A?LwR8iTFh)Y9^)v>Y{N5tBpn8!PV z<#vc59IMSGgpRS{T=r4lW%f$NgB=WlS+=};YlS&GkLPH9Dsg3+1MG_LCOlE2zsMh zYA1JbTxYl$hau@{1l@z3B!%A8OH(7@~I%*FT^#|i~{_um}VTU zMPt{DiSGW#7r#3p18MC?2nLwo$5P1 zh+wle7#4`HQXx`47Etgj1yg1lw|n3p3oU;qe%ihR{&-YC!Osa!d51>-sAxS8s6Qg! zoCj_DP;l2gBhQ;bosHDChsajW1)*&hQI$}HQ{yJe#3KTlc7s`TI%(-?9`}q93P>K+NK|u$_-VXub z3DIPkQ5!#fmVpdU25$=*ZM@n^G4o?%D}J6>fyL-aQGKQHBtE{e()hspk2Ub|k0;VgoUqPd?NE#cLF>~mwGHcY&>))HFO277Ex?MuF!nf}83|Uk8`c@^V#g8`yF}`j#ujSgOJhhq znPf{{%6weaV)0GDL_GsR@+gV(mBCr-jj|fT!F;g6_zS)o?|o&woiss07zlXPQFO1l za)QX;Xw<%4d5p!-WR5eJQ#O#Ra>(-%zHrQqR`JaL9?`u)qYQaWNe5--ICo}O4dV1h zBMYWq|0W}^2K7Puf}slX*g}Mx@$Mv_1RcxV&LjdqtHZW1?rs2sQL8sajef)6nai0ReIi^wkr0Z#G(Z3P*_7Hye$8 zvYzTVRz#VPi61u`xBBQA9$|Z}w14jrw)#n5q7^G6yoaLB7Nc^R&n5fx5`&^sPB`^; z{}zBZQViV!dLJ(y+hJsi)U6N<7sNGNjcc(>_smwKK4N1n*lIkWO%TQoqawc5--hWw zUi8{#)ByF3-e!!|UJ)7FAy&tVp4%b(7lx;T zzHFwk@{bF4-U&kydb)C#aSNxjrqBU_$0@r-=58Y=K>N1YFnH#97RW~rJ%I(F3$4B(}E@;Hj1d&@?B!aZX>lW zAOZDZlfVjV;x#dUWmuEtF0@#+DztbmgBA(b4H-EU=OP^e zYOnQzqp0u+2KQ?kCC}|kZ?wsT>?0zn*ytQjh$j{$YR>dk%9w;Vd3=&sKJir?FP|&3 zpA!e3^F3@ICWX0&+7N*QMvd}8Vge-$kK&#KVASJ8&mWA(?P6dQve@@O7*&&G%XIva zN`v=Ol$5j|v9K!=(Fef?;5T{D=oolSf&|q<+1I2YX2?|Pffd+m&=bC%b_1H#K*Av- zKQe95A)|h#pzcba+fDM(<#T(h=(o!#mnj(sTmsCsQ)J7)j#|2U%%g}QP!R_cvwkv0 z1H1)40m^Y=*H57iLRFI;y#27zK}MV)T_wsKw@WNOY*dklm+?w5VyJRlb@bC=QEFP)JGrX z)TJgA7qIG6O9enkM@EZ1l&z>z<#D&atmkM~8{p z$BY}X0DSS7QS(9SU=A6Ty*K1U;z#bR2U-SXd|d^B$cDgX=F4of0lpY z4DX*M<4|b2N8)0%oOAF$kMhry=W7XD6L*O+$BpFr^ev(W1O=p2RSThxaw9>qHI%#U zIP}!%;*H}*TIzHHe=60At#vR9y6{RfmkP1vxKTA_yc8N*ttcEJK?EfK6ngi+8T6kp z=4k&|&pUI{IOF+H3i~8+?v#-jJCj=7E%<3;pQBR6)8Iid^6eM#c_sN`t;s! zSau!|+kb<3VV$^$49P#rL6bi36DgOeLmR5~yHTq(jY_(lQ_29WK@zya#(E&(Aha%0 zAre8^7$6*A^MEc$l1rOP;T$pZccUD<`ak^L$cmjKvx;6GU#d9!I~KTaiR5!eO$W<# zu#d2O<2mqJ3*@nv$xua{I%m|ebLF0gb>?$X@VC*pI<*3;SEBA;t4QZtEh2UaD3@5p zHzIi6cr4kkN2RrOiv;pS{=*{lJ|OUySX%9mpL3opu? z3&zu70Z8XuFm5o`Q+FZfWaP?82Ye|a@uD#RAPu=_bPLOV@S@Szff3gNNv!w!%V=xE zhzl7?fpP6$M)ih!tz`lgJN}OWzGS>?8~L%qS9Oa|E*bUg7KtT+f|TqGL|Ir_t@)Ch zT6pk=@UU6oL9Lq|M7c89h`Rl6P`aWEoyu5rA=dm2j<{}88Qyi6MFD~ZLy|1aS7 zd3+sVLA%T2%Sy4})|0?WiPHgl;KJ*~c#kg$kvZmge0SSOq&rAuP(LE#FeIjxM52wO z_FiAUl$Yt|2zB@5YOk+(fs}-(q>*Q~dPH<1dZ4*ZeyQ?Bibk0VM+3T%aDkn7u1tla z0R;z?FO+wdOa<2`W-edAEu@@5oZu)tlMs>yWAS3N?-SUGo5lE=q+1GAnA1f(poMeA zD>1&BAn}zkzJGq+My~C5SPQ(ucW6$@1zxR0dL|AiwW?P=lh;Kji&x@&jZ!2tR8#Rh z#pUY{rJX_(?~U`dDtMbpk+TXW>U3Gf+__Y#<*Z^3DVbr)f66c-ECV@gSrc!GSBteB z{{j!^cykNI%y{1e8I+%7gge&8>UjjlIT1+kb+)b}jhB1Hb`-UE#G#>0Kg3Xr1~SJb z_?ld?qJs&(t=gX8a_0MiLZ?mRz8J4ISG~c9@eyd!K!6^*!y26x|j9c z1m$B%S>JN)yWm4fzIZM1OA1l|nJ&*o0{4Zv*yg$c({|eXq=NM6^!z<)Y5~RNqJ1q+o8E zZ-s`};&k7;NtAz>)hsUW}^bf$$X07Vu$#=y&Ilii>5_M#XV>!M-u?q-8 zN5$ine0RkzRL@&0`98xCOwRS)UZ7U#v|gek9kC`{=~XVP*HMuv`5NvjmO7rCsI-*z zZ<5iluUM2!jggYcs3`KLZO!WHa7g(t{Yo(c6WvXQ(L{`MS z(#)MQG1L-VuyNE$CMG(S%A-+dWuoCEl10G$TPB8Jf^kYCGZ~zEFvI*XBc7<{yCZ2y zBzk5H7W>adr-{{#;Qe($46g30a=A$1hZw_Bhw4XI?)j5z z_^P4J>NR}-r?>ZxucC-d%tIP=jJBh^Z5M!cyB%@JLgQTrM-r6Az^}aX-xwfG`J7_5>#!$Z6liWy;)U>6dLu0*Rb4ms3 z1g~512Aq5qaSyx5=S$39_H|~`y{^2b!!MJ+B%W*x?Yq=d(OB=&Fz_vkbjlNThhF3# zWg)hWIR@=#ouoV}ULURJ*+E79G5WfuZ&Ea+G6QjL3IcUW64m4}G$n13T4<+meT?2e zN(NAS;dOMG2Q7-2n5D1pP{o%N`?@L=TH7eCLZO{ayX+KtkJZma(=c6o~DUrfo?r>S`sd+x(?GFxYwbKb+^?;J?lMKNHqo`Il?C+jm*P&MEP znWA?aypz&BX$gbWf)!L6UoD8kf;W4g{5nc%gGA|_vTI0M{5hk_tSK`Is5uFeW>ED8n}$l)o%@2OjT<> zTrRfc>P@iY?5AA4J=Q7{rt7iVV$pHBp46gTzAFkNdtAyzYm{qnk+XFv7cRcbp&c4+ zL48V5%@yV1@##9v>AyW)k4G~&FkSD2OhnAkhg8qR&1T}x&(PbUpy_!!&GO-%<1{~- zOne{@S(7-CuT4c4Tm8{5A2tl`u+G=Vs~0I*`Ym7YP>))oHNAIII(?@1DqE083@Ffx zaJL9nTCUThP|x|l%+>S~v?_v=YUZz6U2zVVzQtdn#sLEstj{qI5@I#_ld{pgZs~-a zi~cb!{b6z70Fk*|w*6ppm3*S9ThYw57Tt-;pYc^-=%0^O_E_hx|IVC+cOb+;N5-$aidWi zE414m76%QpLQV1QY&|fVlAv}(JJ@GSQ$gmPKPRrv*5h2ysN8@xL15a2L!#jv{XDv^ zx_9fXqKN}$6R-)_QSFe({P(EL%f*zt^?LE&QPF8}h`v0G2T!02e5m^h!fMe^;*GoY zWb4B^blS|a^l|6BGZW_qFiVOreILOwUcEDuJ|c*!#XD(^)->Qb z)XB$^<^MKKUe_PM-~rj4R!5r)x=MPZSimPk6u#L&#TMUj^6V3DC7VSVC2 z1JOlUk=`NjOUm*|;Vjl$T1^<+i)qo`nF)uSQtDl-C)WOu!~vp9o_qXBL>nSd2*V8I8S`CMCJo}-J1oT{(xS)o~#e77m|)aUDAdP z8luX2!iQ9qsBC;duZJ=6z6bO)yZ1pi2ob~zkm`L>D|?@~`T8iF0Gc~rkE*j91%cIJ zohVV$uNXv@`0i^0|x#OlR*+>ODW-X|&$%(^(grreo8AD}XK z>=S&6-l@U+GF|K~uk4b|5+YKc+!SOv$gg2;+$Ux)fw6sAytYKA3v6~S(dp>QfThSc zZn#{EGM5XnR9|UOgKh21wBokJqvU;&xlC^oDMw>8)j{9UH6Qo_;ZR8%#6!!_?VJ>^ zEdx&%ic8DT?|&;|A3;BiZFP^p_}D8ZJ>pZj)}-wo@x&u~ckt|+NA&1cmV}_%(U#;a zgA@QYKK41rB&U3@*!7;a9P<`i#E9i+q}RoKJX&udl_~F|Ftr4_?h?saGJ%guXy(=H zeriVt-hhppq@?(D@#AuR8Rj7J9>pl<6H)f4o`lEoM^Q7Mh|tIMmUv`7CW+%8Bcf;V zV|t+$xC=bsCq02H^i{N%aPR=@Y6)Izd~w>)qO+!#h#u) zf#UkTdXV@^=+TL9QFnmUFu&RmkMbQdL#fCQ%)^$TyeN2y9)bH#>XqmX>)4}sshsKa zj8KYFL!(4rh-oEyw9ArWN&u4!l)xIXssueebtu*y<(P4B<3iknVpj=fwl0e^C9qDn zh~QQFofw8pS_PSgomTuLtjufTgC|ip*955b#2ruRKf>MlY2{N#Joz-H2QP|g&%nlf zU#xpZe>nCNS%RudR~v~46ROX%dKatfK1u6bk&TbtEc9|&)r$L=;51Lm?*61W^sL_d z|H&Q@+G_n_YX}uDHmuhBE6t+TkZY{bJD_ZGqfg-)h~7ovSpy6CeeuT{Ju{?I_{8~V z_2$9W;76_G|3{-l^nC$##UYXVf*w`b_dN1~zOatfI;l@@@r7 zBlLMEPMTA%j-LM`@$7p2@2ZUts}bfUD}v|s4KRm{?NW*Z%>B4wh%Nxn;oC*nM*TzW z4bPs9dIJsTivNC9ZxynM!iB;%dtS7CO;5#Ls9CS+b)xMyrI~fH=ZzYZxsEItn3pSG z(;w2wQo=s%3TZJtAsW1{Csa4RhQF>iXjN%?VQN!#q-4*kVVq@pfido!Wa}V3thUnE z(F)!dM_l;Iqc>(*_^eQWaq%rwXQ@co3@x!qWNe1L@s_xK zGgN)4cww{N#Pt@*quVL3Ty;~2@wPa=8JeY3blHM#Y>Sw_MX!TKuyl()2aDA;-iF!m znON|)p59l=eW1@ryVCrQNm{@FYak@YMecxsWM0YHF-rdsm7FH+t@$$Qalq6WbH;GP2Oi4~p+R;L;xPj|W!dW1?Xxy6Qb5uM|A{LX?&2wW7RJ0EvO~69d}# z?ZRLVGPX{fF2(XenP|3E-=Gwh8iAkMS~&-yX#L)i(-TwP(ci8fyy?4oOyC}BRHwv% zclC(wlCe&?L8YAB&P?oF*#q-HlR6gbD;pp6D{($wOkpyO<3BLY#b8 zUlK}&1k%7v&1F&ao<7N1e}bw)iIBXt0xuVNG$boG7Kos2dV)U*waDEPQX7{$=ntuM za4E!Pv45LR`{hI5M;qH9M!b*Zoy%h5`WvrkKFY)|LQ!KgCH;y@GE5n(_<)?*($P96}G%k86i6tNE{gNJ{V$s}$Du&#wBNMQs`t%`j^+T8qdqwniy>314yQ>t220`dT zPEcZ)<9=S;xm|D6&Dv#B`7s&#;GR`eRAHz$2we3F!`6u> z;^KDQ9lU`oF^R^1q$k%pOEIlsHBzVbmZ!fILqF0xMq1f+(uN|KQMJ^}jCkcEy?0|} zNcl)W<#2$bl|ZnmQgLe&4GEHW=&fwCUaA{#4pTT}-G7GDwLA3nI7u7xu^gq``Y{X( z3yZJ@0>mi_Pya9)5W7CsN5TSG@QI!&f-d^&B73!em?-*0uVGO~HjuLAG&hh$xSg>+ zUxQPef`-%3v78Y#ck0p3x2&VdQy;Txa6GI&k9`ryZB(I-k^vQ!Io<^0fQm#jzdI3D04M=@+I{01XMnaA{_j8 zsxUI(@fC2|7>NtU>5!mRwA(#lq0l&|A2`FyI~J6e)*H#I1=}_*jcW-BaeF z?d;aQL@eE-#|HgLymazk#HKxZV*O2&S7)aDuBBflIy2e+{OE%Pw0+&2Pr>VwmV3E$K!YvZ(QkS?yxAL);|4_Kzar4z+b;lALWFl5_ABY zaXt~ZAJEe+uT!3f4(NYt)nCHh_*h6VUJ`thmjqK5?U%fLP#@oe+&SQRh6B41P}%-7 zO*X^4P)V*S$wAf0m=8qgFqCv9?hxHsS@NZdYvHu(0UCVM4Ya#Sy5?kR3I-*Z@w(|AD z%~ZJT${lJJ|05$?5m3?cJO}34iA>9%o^{{q(R9n__V4t)F_%Gw#Q4E{cGqa)aG2Xy z%T40TF5??kden{nZIUv^pHui-J@*@zHU;UXbFCIDcGk)7%PYG11PS%iMfZ z>JB?kBYx6@HJ5yA%^5rYgY7*L?SV|3FDx8||!R0>Kz2Jnl zMCJbB;E#*%PU>kvGUCDFamob2<1z1yu%aM577!=wJ0XUmj-uio*R%iJwAwl5Qw5@hZ))Ej~kL zvFzUpUjMW{(0UUs;B682pVpf?A?BM;>-EM~=17)Yugon{#l>5=dYJkH?1$Uxzb#eN|E_`P4IdRGdr|TU;o`1ZzFQr{14O zlp8AW=QDajNM(LS_-}gT#Fdmgo7s}fG`{gSmq>Zll(f~vW)%l7p|JD?IBc!{+<^`5 zRvp<{ex@?Zk`=fdLsm8h@=L`syep(KP4W6~dW3J8_WXvKpB>`dZ+h(zX?Dn03w~B_ z(4jJ#Oc&pklTfy&DP??C;O*b_vs8gE z|Dh)hlW((kG|3WKsv4_q_EsHKmX_c^5A(T|F4p6ljkMBoZ&^W{{0N z=$U*$=bDuPtd{?&4`L76c0>Z%b*tx#AO6(;4x~oMH+#OnNb3S$i%Wm$|6oY`$0bYx zJm$&&TQ79lLBwyD^%s;|T+w?d_m5ZfnMtw@b;l@j{}pO69g#6oLK4{}-?3cGy{h+$ zuGT1Mw>mT?t>}MuRgZTo9Z-y-HF97HYX*);n9(NG62ATgS*&{vdmBr{qHFp%UOg=_ zqXxQOeqE1MZJaJxYjqvdNz26udThb|biJw4eB`_Jx;|XV3DSR}4$IUYd*V)(66cc@ zY$x>1M*zY-$C7-bm9tn&x-kC_-}5YXkexduDy7Ip)rWarTd2b!%KkVmjPoXNNpYg@ zUz;0cG}>NlMKkPZ=-HkUqcj$&gqWC7q_NmYTlQ20=xE~STJeU)8W-K@sa_RE*)bok z7J!pNhao5%UQKL6Q<@yd8&J3+nlPO8r1DdUU6A3=*}S5_zoS|{-7Ug87Wi7Y`@J43XNs+XGDb` zi_onuMXqQeLGgzln_FG-)lqv${z88iU#UD__h*q1)bjysI+nHD2C%IEr>IX+)TZLG zK$f9IhI;-3fvmY|9i-b`HP|hxJrF*w2D{(a|7;Bw9V5%`)y>^&8ez4mxHWM9WnvIZ z!?#5G1hJ$zOZO-h-o2(C=Au46H3wXMR4fZ-slJU0S`J&dt;QV?D?6UOL97wZgI*6} ztwz}VMxLZ-gooLE4|UAUJSN$X@59*MT<+_%m9lRBWY@d$X4Dt{Uvjc9Sms0vVSU_B zOZk&YNP$2GLQEwO#Iva(EWWLLBQ1wp`Q_f0L;LB`O#IAcc3Z0q0=}#lJ3?5iM%7~L zH^yFC8C%o~W$~%&t!6O&twG)UvQQSSL`vlam#HF)$j^(S z4Bkf7{9sutEaZlCYKF0BrF~R7*rG~0?s?HMj5SWL%(ARQ`mz>P5jcVgFmOa^AIjCr zFy@Y}`r4YocCMiOmWsV$tcv}0DU8+gmDJRlter1Dxh9K^z99$RVm?=sMJx4a=N=z{ z1~-+)lg<7YnIk{1I>wi7Ek3(o0?acqG;WKtgn;&K;3_W}f%LbmFxrKy z42W6~CG;)egx!miJd55sYmOcL_vtJTdsENrY(m-_#6MVFP>_fM!wuVO1Nzp)w+#3~ z^6CyJS*Z_;BF1*RWpFAD<~@rwvL*P#vIb}p#}1Vt)^fHKFK8al?ntp2uf&G>By14G zq`Y~*-S|oIy&2BZTUFvRNz4klwKjgVP>bQ1AKxLfN?#lHwh@ZzaxX=T^W4mVl6GrB|97u9?4QHT=tG4Gg8R|vVb>Cie$;{WM6>>2ki}EJvIEDx~WDa~N)K&mj1ZvM(4eYh zQ41lH)!Vf^Y>NVgPmN&i>J2VX89q;ltO%A^ss2B7Ga56kj$pSov~2DGpJb0#%ONg# zvux865mB4X`u~r!YyK-|*AQnD#m|xK1B1o_7RRwW9g{`4EI^b-RqYm>Bnf_2x8N6x z`J^r4Y830NS~jVQ9?`6+B?)pkBZ{My^+jiBwul#_*$8dH${3aeMkdFwhS~x#Forc& zhCYRP*z$cfhQ+j7KxJ`b(^D8!pxgq5duyF^{f4=N_+7avj8ysl%9>pn%OaE^V7GbM zI8m^*qG2pc_LZ6uv22(nV3h_G4Z&a^?2KhI6DyM?`LsF>DY;}~(GH2H#OONgDb)n1 z5dLwjE3B)YaW^qntM;sm;#fw4R6tZR`oMfzu9u zcs){=EsnSIXm_hJk8+3&i&JK>T|8T=GDwnN5zpe{WF&9TNJia)b2u zakFMI{}vBIbJHe+NKxW9#B6M}8;twC&GBqi?&3OmYWsGs`zEl*wH4y~1QzMd$;w1& zg+(PodX|driEJR&qD3Mb&|KPfu~LkoCFLt*SD{9*N{3>+23bb^z96EL*loDqV_H&G zQNM`=^i~qffCcnh5^Q&=Nx?1BLR1jQgr9ldE{LthXw?)WM;k-k%I@Z7`i{O=Lo3%I z=n-Zhn$wy+TTZf%a$sQuJO5ClNKfuyaTvCulpngeK(B?V`dTvUQ++DO8pFv;P+;cO zPGJrI7tKC8g$+u)MC$|C{rX-}j_!17@}35}Bc-L*ME-`@mjbR|5-IiAWb{*y)?+c@ z-ri25xeh;cc<FBhq`E&ZVfta1nCaZbhQ|YW(ohlQ1G*CxFG?!ac zPwR&4aliI7sOFogZDMm1ZM3BCH*EH$ntqUNf71^afjcwJmA*Gbo;qIdS5|Sz4siY8s6U|gy)@R?65uKuvt9W0;S#{ zwzXjIYCnrPEm=M7ezCeGO9_>wcVc5D77!|0vf8QE+^LjLG#G2!)iGk8ynV^q##de<|Yv@s@G?mMy8 zHZ=3NOaRlY#NN;>O_+;u3jN1cEIRffnIqUaJ{y3`h={eJ$kwbrZkX%bn#DkLMzm%b zMTg;&=%mp-t=U!_CDaeyhoehT8|M*1;Vdr3YI$)PHl*ygD9A1LKun)u9^CNNhJgG; ztUSx8w8-1qdE5#_&dub6Bo|j8q2=EKxfSz9biU6b6-nA;^APBWiy1aM7;dhyQ;{KB zI~P(;v4((GJ#9JZuwRMo^mzeJy0&({XXg{njg`)Ik$gi`{E zIBqU$Sib3nj%-qb{R(_NW(hfw`yjeaEDR$XdKb!=-if8i%v;qC%E(U4eJ62{`g8<3 zNN(!_r~g%8v3%$i*nbySai|k(5l_i_bFzsrIsI(qY~4|j-kBvP*@0-!ixhLye@4v! zXD0p0J+x-&Q8B$UYZkSgIeLpQ}G1j$=|-GP%4<-<(Y zDwSSg`sbG-UvSCbNU$$ct)ZL+VS6r!W6V z40UDwQQoD@%FdZe{)EYzS=vRO)Q8F2A4VtQqQYfchMStZJFv2~!b`P!pSF#prE;lk z_z=q-luJL#nQF>6Y01M728^uIlx?hfQ&XS%S?btwzprc6AUZ_6}N zSq|av!f1C;o31SRwyHr9O9e%dCErkcp*dz->@~tj4;)8*q*{FHFFEez8ZNIzH9LsK zuXn`={HXY$D|@J@>I;1G5~^Mhj2#8o$L1`fplzJ=O+#Rk-`Hq~iU>vn#BLw*{?}?j z&L!s&I2o-~RzMB#Oq}S(dNrovgGwSn*}o*!1x#*~#&2dpVh{{Eqzn;&C|)`wMt5gZ zjUzISqf(5n91`DkCmpr22ixABk|gCJ<<2W(xZ^$%Qs@qtjEj>rq(*||Q)pxp6>zl& z6xvbYz6GlCP0{5RU`NF1TUp)Upjk5#Ls~QQ;<@+NGavMYxAOj397 za6?+5{GsUH?aiXAhLuXv3M*Bz9Tw^S)0>S5Csv#Hk@+-p)(pwr34Pc*$gR6Ct1EZC z!nX!_q0oK$vghnVJ1Z+oT)RGpkz2E<@%J<*9zM+jy@ZE5oOi?(NU|K(s&W zj|hjwiTKV>%%TN6)HPe*|$)Ch!@SJZ6c;0-KYc%gD1X=ykjt;3M~)P zLa{m9O)JM5m(gT4H8WFo%x2Tp^03tqHW+Q@>mh7ZyoVyYu_F%Aa6gOP`ea?n{`t0{ zEKQ0LNweEI*_Pd9Ls^V$7g)-ihZ%umKRdb0cmllIeFyk^JfoDUx@Os(gzQ z$?hZBJw76d8ofazHPnKwz}+a0Et25(e-cTjPdKV0yx~TXv|a%=^}O?@BKiECQY3Fy zfR{$GS%WJ@5;>LX!meveBsCwAltM>&va~hSsZ=7^#%F13G&W0HPanl>sn5c^GhHbL zSw)qgiew|ebOGN)5#&l5d@vs+QQT36<{>wohnk-__&Y?E163#AMs6~4?Er2qMuptz z4QXkU3T!7H$NCJEJGW))mJQ6w%jH{e2puX(wk#@`)s*b>MaZOElieD2q*2?mLqMjS zbm{+i)r z?4SUAhbMai3k%ftdS*^$Upk9EBWesZLSxM-6@qo#N%G8>S59OE7aPdXSS|_mhpeiL zem^H_=I%_${eA&u;0Rh+Y`0;QHN*m~qeb|3!Ca!2o0v8GmFo_h?`oFp35@iR`X{HS#9cwnh+yJ)mV$L9>fOYdZyGfUO?Gbktu=lW; zE~b!ms70~82Vaj%Y=y`v#O(8TVp$=3&Utu|{EU1A#TV%XtFQ0qtYeTpi_%Pc$x};;wvTP|Lo&Dwg)NhgY^oEK-ac3cLqPxcM~D@EDS zuoyr7%_6b4P;V-h%wfZwgcRuCi0yZ?te$_hk>~~Kq(9ZNvPbmX;32l{HpksIc(3h(lelnCnjSpqoP!LhE(-*+MdUx zr(tZm4lqqSTOZr@9}8Wo~Wqhq!3=*JaGz`i#Xe71fJcQ7zOP)g6L+lC>Gwu5UiV zW(3Nzo${1E!WIPJ8)unMpi?+2a-Lv)wX>emCs<;b%L?M<7xE@fuVIBnvXC*VkhZ_u z%M2xFn{FD8{l{?so?ek9;Oavfl{K#_GX92F+}JE`jDD6kN!8{Jv5+pLOqT!O z1EKLKQB<7xmxLsLl`w_>@3Gugm?EDB|DRrVd@V_3BV71NG1W1I{e+oq%q1`RQlBQw zY;EqZLM@dk)G_zdv#~dcg_0a+uA`@y`ppZJL>==IJ#lmW;Pb>%dfEKG&IPk zUS(;al1B;Aq?m>KWfm!ZewDREGmU+X{ZOMwX6RpK)_p^RbKlTD+_fS5`(-*xWN+Sh z6K)XFP5Ve3&Fb3VhF6$3PwYMRZ6mmyfZd=D|=3bohmU%eg`FtB=&OjOO5AnkX?C~h+ zR{D(WzDpLxv$PDhc;tR0dovsQgAdtKLopbP#66Xgy<+rs%zLa8bGKu1W1U#Joi)Ms zhflV%*ZSIRyu3;gj}T@io5fow|4PlRlhg!U(Bwl!WmJ|#eE1P74V2!0h@u@Brv52b z?_l@U`jd){ul-`i)z3UA1Dp`eKW53ckKF0&hs(?;1(f zW**%xb4dn0CBk-Ma?B$>-^se;VeG;rgGUVA#X4r#xhv2cI&SOFTqP zG&j)`dUnq));j1LT7`Cmt`clO$!_Rp|8<*JC= zjm2#%e26!EsMuSd-{KAH`DHiz)rr6d_OMa4w^9CSyA|&HE0(I?e=@%&dVRr0rrq3+ zvO#MDv;z&}K!>@uRDAITGm&C=1snEnDHc_*q5tN0x`N#uL2t7TPN8*UatyZ8p>5)x zy)3z!*M0aT9C>Zt%f`m}#_}@*u}Em%hsBT_B!M6;z63Y7iSJT)ZE??+EEJqt@Fkl^ zrhdpiQts=-hW%`Kjdi3(YC1*kS5WK;U$I5-*!UGI#_~<011t)Q@;we>_>h`Jn%L9)@|=4r~zrk5wH+?wAbi_8txFAX}*L@A`i0K zQ6vslS()^*PJ_Ys^{T!#r7xFwT_!1?3lw< z-V-Bzt>b0zT?SvI^x|QaU|mn`Z`iN?&R-UZ>9ay>g(SiTpvo=7Eda+*^it977;7gE zA7iZpEZNl{nd&gxl847}S2{eSB_(y#E3mYB!0p1M^U)#DYdj87d>;EEk zgxuZZG_k^x4BwKQ#9sC*%W8Ys4orJj-l0;YBlLIJqj8R6nB_$CZg_B**dI-F=+*kC zS(dA^;o;;Ia*o#ai9zHT@4H$sb(p`xCYIt2c&=sl6zZO58W&K_6NgfTezIHqwitDoIagL=# zURC)3$!*^QPy=N+56@(qRq(>{1Q=Vr|-7j?D*h z3t72*L5g{So?d&y{sbG=T`2HwkC=7^Yw*u|)?H!aZ_HDe%u~WO1o4PFuCc~=EV{;8 z;InS;Ut>MBbE3v|7$g@(>UC)lj z9dR1haMIHCm$=p~NE#EZgE&?6{Xx719>`FX*i_B}#r`0faA2_X9u$ltb~2r4oWJ0) z`2668U_LUY3_QRjuGB%ar`&v6QvCTZ9^`+K<}6+;Hiq)jKq6xgTTU1sui1#$Uy~0G z-)^;ceB{lV&i+NT)%ifg^DNeRYwcgm2hZ1x-{}`6Q?>8Bl~b4JB;}OoWAHJtAL5;4 z_&ThOR`R}}`P(TY_Ke}$uY4vDTjL7_zSD`96zXXe!M8bao7o?ce4by?4oW~-+aZv( zb5$rcL8*`wH7yc?Bf7^VI=?Qyjpyy5Tw>fj&L=KZ5Z#z@McnGlqgE# zV*;gnh4?9nzf^@U**^Uk8C%k@tdqhMeCTAN`BVSaKZSRyMwk8Gb1A$tQiYXC{hn5j z-&@UM{SU@$c|AT7X{6Ohd)g+t*OzUV?A9=>q`@}Fr%cH%f37|!ZSC9bbWP>;|8-n9 zFO|2CTT7xwEfRY$V2|G7)|zNKe}Sl>kBaa*Xy#47X9=QL9hk{?eGhxLs_0Bk%ld~$#=*LMouxrY;lp#2lc`Youvah}Ll@?vu!(RFm7Ts%cZ*IYH zv%4o0cm6m#mHYFLLqfTO8V_FQ$3K?@`*WJt1IRZ7zWkbWhMqnc1{;O8Vur5!I!tuV z;9Wd%ZTJX(ElA96&-*tDc38hKJp2J60HPi9=Z;W3iCz;xZryXCJ%2z;V{i|inl)ug zm+VP!%6Jr)6M`SP3Btwdjyzs-iL#D7DGn12GBxt41)!e_8L_exf48VMC{Z>w5>H>8 z=tMhKgFB+}i~&%-$gKnD7X+XbV+p}e;dS69TAd*7h{LlkfZ~#y;>H77IvhnZvb&NX z@dV&R8-~b^;U=5?cy5l8pD zyxcrI>8DuKN}TJ=Bef6_l*v6cTf>K#NWN`6<(d2*O=~O8<@4H}QC;|_e!=bFflK)u z?LAF<@Yl8Q4sg>?CD+k&?iL>DuXPd|??T7hSsc8J*Vi&vX7jF^DOUI4E#kT$c-O-G zg50Uo3a84*mC?I;&h_DgosGKLbj9lKz=<|8$`YR*a94`Y^!~hSVB9b#cZ>%8nr4+= z;gD2E1F`9LD}e@Yv{G@!a7;gzmGa=jIg*o<3n*_QdQ7d5+^^(-5%a zir6&-x~k>Mp*%9WkDE(5?3+8jaLNQLM!&476UK|CLt#2>6my57vp6YAhw|(6spnyQ zoJb$eYf&cU51De@Dmo13O~O|sTCzspm84&(XYO!5N#jN`m&~VjKp?J;;E6@~dE=T) z$sXG{FMn!Q-sHmRcV*@0WzA{~|LF)%$r8}7`f~*Qsoi}CAbHFl?{KUI4g7FSosgfO zHEDul6Yv_q$4|%~mzO=gAUk)OqYN}^mou}b6iz70cR2Qg5D3D=+`Oq-1^JHSb|m$J z)_60$K;b5EY77b=3!G$J;dcTjc~^K|HUFtT{zX)RY@3jS7yJ1{d>C|Uy(*!HfK!Vs z%tsX!j6S)Z!YN?q zV7OKLxee|SV#=L7K29Y~Dv7v%yHBto;>ex6PFT0>tVz>y^9!=aAyUPid~)zm1R4ey zF1n54PmS%EYN;kryxAH7_u$;Zym1ryT0-DuPr;n&6YSDY81KUwa8mIsZ^Fb0c@w6M zn=n1A;I1jz(Ae?c>hK7(1t6LcU`oXfg}%&&VjqqVA;(wCcUoDA4JrdM#2XMB9(B zWAMxZj0KQ;93a0S&%qmWF?Kw^-C3ux*gBqnS%g-0({7A1Og~lC6XEWYH7B>QAV2%= z30YIJCr$G3 z0w^-MsYKHO)KyR>XH>(f>mb?{#D!LH6aWeVGXb*zvjNGD7L}1Lf`zNdZJSz==OC~* zvM8I#n?yed(#^W4hh!HOO_h-^{pmR$QcizQud0%r&q;8)! zenQ^FDY?V|i156-cue>bxap^IxYX(lmsy?RBeFAGE<3}FM-lAbI>X1{H#9H1KnV`D z27<>aPP%v_o7WC0Xu)N}2EG^gkQKlK;7>oLhq_s)7heIKXloI644zK_NCwDFGN8E7 z010)JxagR}dj&XJaz_W@p3K{eT+Ij)?!i3P&(W==IFrNchHQc_X+Y#8Vlp4$ItZM! z;rqxkSwzH~$-J(!TPv|yaFT+he)K<}FD$JCvVm2P$ z>P;+d7pGa4kf<1!n{pI%14%{RvTIG6vDHXq@se|rwkR(PuLWp;Q)-!BeM zm&Nj*!AGa<%CKtY0G__F%I#Q+zEv!l!CTay+n75Z1S|ur0=xp)2G|EU1qep-Pi(?P z$Y_3VczJuPme-+{+v~v}ZNpIpe6t9f$tQ)oGu4;~bo_RR`7`;;&Yqc~ z(JcO2@a-mdkXkz@j?d!lJFWwoPAFncz;l+6uhTwJX=1FNs5S;Q< zJ@~mBg5QPU%~HErMXDbBO7-B#*c2q|^wEmf@8;ZD&`pHj!|x8?kAx_|WE46Q&;8=* zd-y%g$8@*Iy+NY(tnfi_Q{fff5AFzwi(BV%Tmjod%$v*a?$V)$)rpd6NH&bZDXuS` zSPdspviv!N5ED;0$<%4?fb0U*t`28VJ!o0rJp_eerzYz8NT}=3iJ1pIHr`RSlml zaTGz7XpRctnf?fG5`gjY>J>cQ^UVsrq)EztOueT6Nq5JauUIb;ro|!Iabz~!dn2R#$PH9?&9ga6q!cBi9W%G z0Z;b9NrI@cs_?%9kMh9}X(Bw(=qcD|To1Np2po<}V&kX$o}#?RxnnrOCLvB^JQe;i z@NU4HG?@t9ozbL;k6$MURF7)-5FdOx{M-BB$AGu-!JmOVGy{$q4e`=vyj`Mt>4)$j zQCD~caB3=fj|*)#kLjZ5&7g%k`-B?^yrmDW2UNwAfD^-z&Yin?V<(PR0{1Q8f@#e50VgR?_(#A~B`&@%=YyzFtv=_Cy@iU0TCMLBKBXGo4LC7{CYF#C%{P!v zELQ2?S1tVCz)7A}J35KLB&?Sn;|{8QGgMB}Iw4udKj-2py}$=U?y&r0iNR(n1}pUjM)q9NwIt{PYQqXN$wbl@ZFK!)_6WCcI<`4`=mH$1#*8$ zVLb!BlPj-YNYLFbhYNjE z!)2Zi54hfr4W7T+t6~y1^yFe zPoI)KF1x@zJ!=}Kc@SO{{^5E@n^$Deu;A3W4ig4!c3kh)Erx!|f>q!K#krCS+`gfKSuNyrVH zw22De9ynE`!g~NGrJ?W;;3+=%mq?$qm-0Ug|ArVXF8b587uR!)yy%Jz;AO5VvY8B= zrU;a5CYOox7hNN?wVpnIx#FFEW!qh%UojuAQXoD?0dyB^R^i?Zvkc-$Lu?7Azx_OqY5WD9fS zN3Wq@!KY6o7|ZJY3a?2(C!#Xz;rS~-H1cb|R8}K7yhi3HdI2+D(AkmNVM{t%9{CsgUZ=8EvZsD|o33=|^nb!2l z5z)tK+>vkzNs!KtKz>L~(obdW9Ng!{E~n8XV0t;k-l~^vx)BkgxZtL*Dxk#l>;A!bd(tp2Rs}2C~(J(r^3eqhxz2i#{;LX zL-|hyPFYm=MBt<%-xJ4b7?Tp8+v}=gD{IKG6W|B%2L#|FUF~=`@oJC}BX$QFbz*9Q z8Vt|@>PJq7kNfQ9jhpi?U2-6rfu=)EQ{g>xX${is@JZI(i#N;WQ}xnOP!G zHx9Yn2VHXHvIZWcA>9XY$)Rz7(OS@F0AC3pxlwot+?hVOfZNyq$!hqs)$r%4;R}GL z095)5;ZCQi3q{BTfx5D_!k-)M!%6qiPqp}lVgNS=H@bA_Mn$HAG^!S*v8doiq_c@8 zKEz6|2nsihXMhi4z&^rn#j0AyqQpMmTH19H zf>P8>pC~5WU97e%@*|97m;1Y_s<^{2cyHG_b5D~8eRlE&BwnOI7H1G{t4jd^j%)UQj6etU+joM zw=ny-3r)8y+K3b^)`-G4>QiHl7U;P~#v1*dZGRH4#u^#nV}7!1CMp#&2z7rc*0=}z zq6+F5ZN{em?2>aXnRt>8bITIkHTH`yUP2-JQLXIF7O^t@167%AXjF^U}TyhjR2?;j^9S`~2e@F}rGvf4*;P8%7g$8%b%Yzrc(~@C$fbBAz6* zRJ#gq1UGfw7etxch;`zov#O~TWKW%d^yUly1fxCX3NjOn&M?S|6O69ThQErB6O1>D z2B5i)0n7kA0C*hm0^n`HF2GlS9|4yD{>NMn21o|91M~z80b~On0qg`E1N;T>`yLDh z)CSZ8bOiJU3Py@}s79bwb05C3hJlRZM-i`G% zO)|a?(#Cm$8X9f1q90GY9KQg51N;HF0th|o(H@PSPyvpj0fW0^ooMKrFxwNC7kfv;?#RWCD5s`T<4)#sRVc(*SvZy8#dU*23jj0LNm$ za=^2ImjN3An*dt?TLJF_J^_>iDm>F06Xy=Y&Cf!q0@?w30!9Ju0c-$#3OEWl1<=l+ zRsi(@8GyckQGmICRe)W9y?~>DQ-Di=u=C(PpcSAuU<_ae;2yvu=fSyW;V1(f1Dpj= zBHHh$IzSS@1l$hD2P_3V4R{-{4?tmm#`7;g?LSbpfbM{ifZ2czfcF9W0p9~6E})Qr z!GL=Kk6!4BI)q~jUCLfK=)e@Kff(By`V3ysK#1 z%wX8unc2)3op9kFmz zR_99t4pOKJrx!|GEN^MVYSYBVmPS`^=-%+9u1$p=0e33lg118G6QW@&qfNN-C3CR0 z^et#*6eXlyha3XU!jnX30-mJf7vM=&&Hu|Gg;Vu!-(qA#W4hr*M9Q*?zV z1E&(75Nlh*j5s0OZHy*(3}|C?b%kh#v|z>}0NKbPns~8|(ND`27up!@oj{wlHCl)7 zxQwsqmlU8^lyNl1!xXK^lE3s;V{5m?O>7C^7A~?&Nv*{ays~687$cL0e2oCA22Qp z8=W9GNuc<*h0IdZs=mfIs1o+PrDcmoO8p(pIwYj;bmclG}6}NNrvb; zPq(fHwjF*aM&4rl6}&OrkPNPd7JnnvRJ3?v zfZ=jRMT_+VjOH#C_o!Vk(9aAoS`Sk67HE>b@5K4kD({?94gV21X-pOWtQQxB12G;- zjTP$$8jb0B$i{09GP)2xaF9_q#J`Rq$L*nY#GFA!Kj-i|;?qG!Vgd#fat#jIl)tiA zLz=4IrwAJiT~R7J42HxP+Y_o&rh7b|)J9s@6|dfAB;wjZi$2VL-i0SsNNf9<;jT2YSAYgy z$e+>$58!nqf)9$Q+l@cMXwT&Wz(RmX7-F;*O^0AXZ|D#sIs8hzA+_ErOpp_QuZSf> zj3%y3w^f+=Ady1Ibc@f27$X9TLGL4`_cv;Z%%MiSw%;>msL@;N(j?K48hHkUlM3&P zQ!k+K@qv~+EBrApF3t=yT1UT#bf_133r}K{2TvN@?8LrYF8l4B?6D5S%ko$to3J$LRz_gKtgjt4f;JqFXTcKiVdPu-6SUn@Zz9S$YG9P|{> z(V@$UoaLV65ysa6n99F0+PKH*Y#`>0flwtk5Zmx7?|TW=xaPS{C7#gy!Rf= WtO5eWntfr0*f`b*^B>@6IQ~Cv6^Hr& delta 157527 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�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 diff --git a/packages/swc-plugin-extractor/tests/fixture.rs b/packages/swc-plugin-extractor/tests/fixture.rs index 0c5e2dbaa..197c29c4e 100644 --- a/packages/swc-plugin-extractor/tests/fixture.rs +++ b/packages/swc-plugin-extractor/tests/fixture.rs @@ -1,6 +1,6 @@ use std::cell::RefCell; use std::fs; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::rc::Rc; use serde_json::Value; @@ -105,20 +105,34 @@ fn test(input: PathBuf) { program.visit_mut_with(&mut visitor); // Use results directly from visitor - it calculates line numbers correctly with SourceMap - let actual_results = visitor.get_results(); - let actual_json: Value = serde_json::to_value(&actual_results).unwrap(); - - let expected_json_str = fs::read_to_string(&output_json) - .unwrap_or_else(|_| panic!("Expected output.json not found at {:?}", output_json)); - let expected_json: Value = serde_json::from_str(&expected_json_str) - .unwrap_or_else(|_| panic!("Failed to parse expected JSON at {:?}", output_json)); - - if actual_json != expected_json { - panic!( - "JSON output mismatch.\nExpected:\n{}\nActual:\n{}", - serde_json::to_string_pretty(&expected_json).unwrap(), - serde_json::to_string_pretty(&actual_json).unwrap() - ); - } + let update = std::env::var("UPDATE").as_deref() == Ok("1"); + let actual_results = serde_json::to_value(visitor.get_results()).unwrap(); + assert_json(&output_json, &actual_results, update); }); } + +/// Compares `actual` against the JSON at `path`, or rewrites it with `UPDATE=1`. +fn assert_json(path: &Path, actual: &Value, update: bool) { + if update { + fs::write( + path, + format!("{}\n", serde_json::to_string_pretty(actual).unwrap()), + ) + .unwrap(); + return; + } + + let expected: Value = serde_json::from_str( + &fs::read_to_string(path).unwrap_or_else(|_| panic!("Expected {:?} not found", path)), + ) + .unwrap_or_else(|_| panic!("Failed to parse {:?}", path)); + + if actual != &expected { + panic!( + "JSON mismatch at {:?}.\nExpected:\n{}\nActual:\n{}", + path, + serde_json::to_string_pretty(&expected).unwrap(), + serde_json::to_string_pretty(actual).unwrap() + ); + } +} diff --git a/packages/swc-plugin-extractor/tests/fixture/alias-hook/output.json b/packages/swc-plugin-extractor/tests/fixture/alias-hook/output.json index fd3f51acc..fc90c612a 100644 --- a/packages/swc-plugin-extractor/tests/fixture/alias-hook/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/alias-hook/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "-YJVTi", "message": "Hey!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/async-basic/output.json b/packages/swc-plugin-extractor/tests/fixture/async-basic/output.json index b07e2d8cd..6c36d4b02 100644 --- a/packages/swc-plugin-extractor/tests/fixture/async-basic/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/async-basic/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "0KGiQf", "message": "Hello there!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/async-explicit-id/output.json b/packages/swc-plugin-extractor/tests/fixture/async-explicit-id/output.json index 9b41e8221..3939e7724 100644 --- a/packages/swc-plugin-extractor/tests/fixture/async-explicit-id/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/async-explicit-id/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello {name}!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/async-locale/output.json b/packages/swc-plugin-extractor/tests/fixture/async-locale/output.json index b07e2d8cd..6c36d4b02 100644 --- a/packages/swc-plugin-extractor/tests/fixture/async-locale/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/async-locale/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "0KGiQf", "message": "Hello there!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/async-namespace/output.json b/packages/swc-plugin-extractor/tests/fixture/async-namespace/output.json index 64b9ad8e6..e13c7c8e9 100644 --- a/packages/swc-plugin-extractor/tests/fixture/async-namespace/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/async-namespace/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "ui.OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/async-rename/output.json b/packages/swc-plugin-extractor/tests/fixture/async-rename/output.json index b07e2d8cd..6c36d4b02 100644 --- a/packages/swc-plugin-extractor/tests/fixture/async-rename/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/async-rename/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "0KGiQf", "message": "Hello there!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/basic/output.json b/packages/swc-plugin-extractor/tests/fixture/basic/output.json index fd3f51acc..fc90c612a 100644 --- a/packages/swc-plugin-extractor/tests/fixture/basic/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/basic/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "-YJVTi", "message": "Hey!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/date-format/output.json b/packages/swc-plugin-extractor/tests/fixture/date-format/output.json index 41839e12e..afaeb4dab 100644 --- a/packages/swc-plugin-extractor/tests/fixture/date-format/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/date-format/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "5n-ZPU", "message": "{date, date, short}!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/duplicates/output.json b/packages/swc-plugin-extractor/tests/fixture/duplicates/output.json index 973cc9cbf..4704f6518 100644 --- a/packages/swc-plugin-extractor/tests/fixture/duplicates/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/duplicates/output.json @@ -1,20 +1,22 @@ [ { + "description": null, "id": "OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 10 - } + "line": 10, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/existing-aliased-hook/output.json b/packages/swc-plugin-extractor/tests/fixture/existing-aliased-hook/output.json index 5c53d2532..ebccbac03 100644 --- a/packages/swc-plugin-extractor/tests/fixture/existing-aliased-hook/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/existing-aliased-hook/output.json @@ -1,11 +1,20 @@ [ { + "description": null, "id": "piskIR", "message": "Hello from extracted!", - "description": null, "reference": { - "path": "input.js", - "line": 6 - } + "line": 6, + "path": "input.js" + }, + "type": "extracted" + }, + { + "id": "greeting", + "reference": { + "line": 7, + "path": "input.js" + }, + "type": "translation" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/existing-hook/output.json b/packages/swc-plugin-extractor/tests/fixture/existing-hook/output.json index 5c53d2532..ebccbac03 100644 --- a/packages/swc-plugin-extractor/tests/fixture/existing-hook/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/existing-hook/output.json @@ -1,11 +1,20 @@ [ { + "description": null, "id": "piskIR", "message": "Hello from extracted!", - "description": null, "reference": { - "path": "input.js", - "line": 6 - } + "line": 6, + "path": "input.js" + }, + "type": "extracted" + }, + { + "id": "greeting", + "reference": { + "line": 7, + "path": "input.js" + }, + "type": "translation" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/get-translations/input.js b/packages/swc-plugin-extractor/tests/fixture/get-translations/input.js new file mode 100644 index 000000000..aff63fbc5 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/get-translations/input.js @@ -0,0 +1,6 @@ +import {getTranslations} from 'next-intl/server'; + +async function Page() { + const t = await getTranslations('Account'); + t('name'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/get-translations/output.js b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.js new file mode 100644 index 000000000..3194728e4 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.js @@ -0,0 +1,5 @@ +import { getTranslations } from 'next-intl/server'; +async function Page() { + const t = await getTranslations('Account'); + t('name'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/get-translations/output.json b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.json new file mode 100644 index 000000000..b1383cb59 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.json @@ -0,0 +1,10 @@ +[ + { + "id": "Account.name", + "reference": { + "line": 5, + "path": "input.js" + }, + "type": "translation" + } +] diff --git a/packages/swc-plugin-extractor/tests/fixture/get-translations/output.map b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.map new file mode 100644 index 000000000..d1a24932f --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/get-translations/output.map @@ -0,0 +1 @@ +{"version":3,"sources":["input.js"],"sourcesContent":["import {getTranslations} from 'next-intl/server';\n\nasync function Page() {\n const t = await getTranslations('Account');\n t('name');\n}\n"],"names":[],"mappings":"AAAA,SAAQ,eAAe,QAAO,mBAAmB;AAEjD,eAAe;IACb,MAAM,IAAI,MAAM,gBAAgB;IAChC,EAAE;AACJ"} diff --git a/packages/swc-plugin-extractor/tests/fixture/let/output.json b/packages/swc-plugin-extractor/tests/fixture/let/output.json index fd3f51acc..fc90c612a 100644 --- a/packages/swc-plugin-extractor/tests/fixture/let/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/let/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "-YJVTi", "message": "Hey!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/multiple-hooks/output.json b/packages/swc-plugin-extractor/tests/fixture/multiple-hooks/output.json index 11b4f0824..7b4aab38b 100644 --- a/packages/swc-plugin-extractor/tests/fixture/multiple-hooks/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/multiple-hooks/output.json @@ -1,74 +1,82 @@ [ { + "description": null, "id": "tnuBMt", "message": "Page title", - "description": null, "reference": { - "path": "input.js", - "line": 7 - } + "line": 7, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 13 - } + "line": 13, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "mOPTEA", "message": "Server data message", - "description": null, "reference": { - "path": "input.js", - "line": 18 - } + "line": 18, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "MgvtBu", "message": "Component message", - "description": null, "reference": { - "path": "input.js", - "line": 23 - } + "line": 23, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "sJK5Uk", "message": "Another one 1", - "description": null, "reference": { - "path": "input.js", - "line": 28 - } + "line": 28, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "2k7cS1", "message": "Another one 2", - "description": null, "reference": { - "path": "input.js", - "line": 33 - } + "line": 33, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "another.6jb0KP", "message": "Two 1", - "description": null, "reference": { - "path": "input.js", - "line": 38 - } + "line": 38, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "another.KVQtmd", "message": "Two 2", - "description": null, "reference": { - "path": "input.js", - "line": 43 - } + "line": 43, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/namespace/output.json b/packages/swc-plugin-extractor/tests/fixture/namespace/output.json index 64b9ad8e6..e13c7c8e9 100644 --- a/packages/swc-plugin-extractor/tests/fixture/namespace/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/namespace/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "ui.OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-double-quotes/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-double-quotes/output.json index 6266a1dd6..b4eea95f6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-double-quotes/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-double-quotes/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-formats/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-formats/output.json index 6266a1dd6..b4eea95f6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-formats/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-formats/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-namespace/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-namespace/output.json index b1355a6bf..e3c7e99e6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-namespace/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-namespace/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "ui.greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-rich/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-rich/output.json index 95f2e165b..829b24606 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-rich/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-rich/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello Alice!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-single-quotes/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-single-quotes/output.json index 6266a1dd6..b4eea95f6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-single-quotes/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-single-quotes/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-template-quotes/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-template-quotes/output.json index 6266a1dd6..b4eea95f6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-template-quotes/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-template-quotes/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/obj-id-values/output.json b/packages/swc-plugin-extractor/tests/fixture/obj-id-values/output.json index 6266a1dd6..b4eea95f6 100644 --- a/packages/swc-plugin-extractor/tests/fixture/obj-id-values/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/obj-id-values/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "greeting", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/quote-variations/output.json b/packages/swc-plugin-extractor/tests/fixture/quote-variations/output.json index 9c4b44d77..d998af4c5 100644 --- a/packages/swc-plugin-extractor/tests/fixture/quote-variations/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/quote-variations/output.json @@ -1,29 +1,32 @@ [ { + "description": null, "id": "OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "-YJVTi", "message": "Hey!", - "description": null, "reference": { - "path": "input.js", - "line": 6 - } + "line": 6, + "path": "input.js" + }, + "type": "extracted" }, { + "description": null, "id": "nm_7yQ", "message": "Hi!", - "description": null, "reference": { - "path": "input.js", - "line": 7 - } + "line": 7, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/rename/output.json b/packages/swc-plugin-extractor/tests/fixture/rename/output.json index 96094b2e0..046b9ac5d 100644 --- a/packages/swc-plugin-extractor/tests/fixture/rename/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/rename/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "OpKKos", "message": "Hello!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/shadow/output.json b/packages/swc-plugin-extractor/tests/fixture/shadow/output.json index fd3f51acc..fc90c612a 100644 --- a/packages/swc-plugin-extractor/tests/fixture/shadow/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/shadow/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "-YJVTi", "message": "Hey!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/t-has/output.json b/packages/swc-plugin-extractor/tests/fixture/t-has/output.json index 1ce5539bc..bdf83c9f1 100644 --- a/packages/swc-plugin-extractor/tests/fixture/t-has/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/t-has/output.json @@ -6,7 +6,8 @@ "reference": { "line": 5, "path": "input.js" - } + }, + "type": "extracted" }, { "description": null, @@ -15,7 +16,8 @@ "reference": { "line": 6, "path": "input.js" - } + }, + "type": "extracted" }, { "description": null, @@ -24,6 +26,7 @@ "reference": { "line": 8, "path": "input.js" - } + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/t-markup/output.json b/packages/swc-plugin-extractor/tests/fixture/t-markup/output.json index a84a98d47..26b0aa90c 100644 --- a/packages/swc-plugin-extractor/tests/fixture/t-markup/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/t-markup/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "C-nN8a", "message": "Hello Alice!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/t-rich/output.json b/packages/swc-plugin-extractor/tests/fixture/t-rich/output.json index a84a98d47..26b0aa90c 100644 --- a/packages/swc-plugin-extractor/tests/fixture/t-rich/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/t-rich/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "C-nN8a", "message": "Hello Alice!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/input.js b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/input.js new file mode 100644 index 000000000..55a983f38 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/input.js @@ -0,0 +1,12 @@ +import {useTranslations} from 'next-intl'; + +function Component() { + const t = useTranslations('Namespace'); + const g = useTranslations(); + const key = 'about'; + + // Dynamic key under a namespace: only the namespace is statically known. + t(key); + // Dynamic key in the global namespace: nothing is statically analyzable. + g(key); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.js b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.js new file mode 100644 index 000000000..fefea484e --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.js @@ -0,0 +1,10 @@ +import { useTranslations } from 'next-intl'; +function Component() { + const t = useTranslations('Namespace'); + const g = useTranslations(); + const key = 'about'; + // Dynamic key under a namespace: only the namespace is statically known. + t(key); + // Dynamic key in the global namespace: nothing is statically analyzable. + g(key); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.json b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.json new file mode 100644 index 000000000..7606ae3eb --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.json @@ -0,0 +1,10 @@ +[ + { + "id": "Namespace", + "reference": { + "line": 9, + "path": "input.js" + }, + "type": "translation" + } +] diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.map b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.map new file mode 100644 index 000000000..6289d8ba3 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-dynamic-key/output.map @@ -0,0 +1 @@ +{"version":3,"sources":["input.js"],"sourcesContent":["import {useTranslations} from 'next-intl';\n\nfunction Component() {\n const t = useTranslations('Namespace');\n const g = useTranslations();\n const key = 'about';\n\n // Dynamic key under a namespace: only the namespace is statically known.\n t(key);\n // Dynamic key in the global namespace: nothing is statically analyzable.\n g(key);\n}\n"],"names":[],"mappings":"AAAA,SAAQ,eAAe,QAAO,YAAY;AAE1C,SAAS;IACP,MAAM,IAAI,gBAAgB;IAC1B,MAAM,IAAI;IACV,MAAM,MAAM;IAEZ,yEAAyE;IACzE,EAAE;IACF,yEAAyE;IACzE,EAAE;AACJ"} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/input.js b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/input.js new file mode 100644 index 000000000..57a3edc8e --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/input.js @@ -0,0 +1,9 @@ +import {useExtracted, useTranslations} from 'next-intl'; + +function Component() { + const e = useExtracted(); + const t = useTranslations('Namespace'); + + e('Hello!'); + t('title'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.js b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.js new file mode 100644 index 000000000..35c51eeaf --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.js @@ -0,0 +1,7 @@ +import { useTranslations as useTranslations$1, useTranslations } from 'next-intl'; +function Component() { + const e = useTranslations$1(); + const t = useTranslations('Namespace'); + e("OpKKos", void 0, void 0, "Hello!"); + t('title'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.json b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.json new file mode 100644 index 000000000..23c935fd6 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.json @@ -0,0 +1,20 @@ +[ + { + "description": null, + "id": "OpKKos", + "message": "Hello!", + "reference": { + "line": 7, + "path": "input.js" + }, + "type": "extracted" + }, + { + "id": "Namespace.title", + "reference": { + "line": 8, + "path": "input.js" + }, + "type": "translation" + } +] diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.map b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.map new file mode 100644 index 000000000..6456a1c53 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations-with-extracted/output.map @@ -0,0 +1 @@ +{"version":3,"sources":["input.js"],"sourcesContent":["import {useExtracted, useTranslations} from 'next-intl';\n\nfunction Component() {\n const e = useExtracted();\n const t = useTranslations('Namespace');\n\n e('Hello!');\n t('title');\n}\n"],"names":[],"mappings":"AAAA,SAAQ,oCAAY,EAAE,eAAe,QAAO,YAAY;AAExD,SAAS;IACP,MAAM,IAAI;IACV,MAAM,IAAI,gBAAgB;IAE1B,EAAE;IACF,EAAE;AACJ"} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations/input.js b/packages/swc-plugin-extractor/tests/fixture/use-translations/input.js new file mode 100644 index 000000000..41d4a6d5e --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations/input.js @@ -0,0 +1,13 @@ +import {useTranslations} from 'next-intl'; + +function Component() { + const t = useTranslations('Namespace'); + const g = useTranslations(); + + t('title'); + t.rich('rich'); + t.markup('markup'); + t.has('has'); + t.raw('raw'); + g('global'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations/output.js b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.js new file mode 100644 index 000000000..ab05f443e --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.js @@ -0,0 +1,11 @@ +import { useTranslations } from 'next-intl'; +function Component() { + const t = useTranslations('Namespace'); + const g = useTranslations(); + t('title'); + t.rich('rich'); + t.markup('markup'); + t.has('has'); + t.raw('raw'); + g('global'); +} diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations/output.json b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.json new file mode 100644 index 000000000..984240126 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.json @@ -0,0 +1,50 @@ +[ + { + "id": "Namespace.title", + "reference": { + "line": 7, + "path": "input.js" + }, + "type": "translation" + }, + { + "id": "Namespace.rich", + "reference": { + "line": 8, + "path": "input.js" + }, + "type": "translation" + }, + { + "id": "Namespace.markup", + "reference": { + "line": 9, + "path": "input.js" + }, + "type": "translation" + }, + { + "id": "Namespace.has", + "reference": { + "line": 10, + "path": "input.js" + }, + "type": "translation" + }, + { + "id": "Namespace.raw", + "reference": { + "line": 11, + "path": "input.js" + }, + "type": "translation" + }, + { + "id": "global", + "reference": { + "line": 12, + "path": "input.js" + }, + "type": "translation" + } +] diff --git a/packages/swc-plugin-extractor/tests/fixture/use-translations/output.map b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.map new file mode 100644 index 000000000..4f77233e3 --- /dev/null +++ b/packages/swc-plugin-extractor/tests/fixture/use-translations/output.map @@ -0,0 +1 @@ +{"version":3,"sources":["input.js"],"sourcesContent":["import {useTranslations} from 'next-intl';\n\nfunction Component() {\n const t = useTranslations('Namespace');\n const g = useTranslations();\n\n t('title');\n t.rich('rich');\n t.markup('markup');\n t.has('has');\n t.raw('raw');\n g('global');\n}\n"],"names":[],"mappings":"AAAA,SAAQ,eAAe,QAAO,YAAY;AAE1C,SAAS;IACP,MAAM,IAAI,gBAAgB;IAC1B,MAAM,IAAI;IAEV,EAAE;IACF,EAAE,IAAI,CAAC;IACP,EAAE,MAAM,CAAC;IACT,EAAE,GAAG,CAAC;IACN,EAAE,GAAG,CAAC;IACN,EAAE;AACJ"} diff --git a/packages/swc-plugin-extractor/tests/fixture/values/output.json b/packages/swc-plugin-extractor/tests/fixture/values/output.json index b4c395de6..3169d0e01 100644 --- a/packages/swc-plugin-extractor/tests/fixture/values/output.json +++ b/packages/swc-plugin-extractor/tests/fixture/values/output.json @@ -1,11 +1,12 @@ [ { + "description": null, "id": "tBFOH1", "message": "Hello, {name}!", - "description": null, "reference": { - "path": "input.js", - "line": 5 - } + "line": 5, + "path": "input.js" + }, + "type": "extracted" } ] From 375b031f2dee5db70e34f80451bb31b3caf33fe8 Mon Sep 17 00:00:00 2001 From: Jan Amann Date: Fri, 5 Jun 2026 17:04:56 +0200 Subject: [PATCH 3/3] fix: switch author in attempt of fixing publishing --- packages/swc-plugin-extractor/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/swc-plugin-extractor/package.json b/packages/swc-plugin-extractor/package.json index 248c5c576..633c71288 100644 --- a/packages/swc-plugin-extractor/package.json +++ b/packages/swc-plugin-extractor/package.json @@ -2,9 +2,9 @@ "name": "next-intl-swc-plugin-extractor", "version": "4.13.0", "sideEffects": false, - "author": "강동윤 ", + "author": "Jan Amann ", "contributors": [ - "Jan Amann " + "강동윤 " ], "description": "SWC plugin for extracting inline messages.", "license": "MIT",