From 8cbe69d74913ed2dcce435a94385b606530d450c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andri=20=C3=93skarsson?= Date: Sun, 29 Dec 2024 17:05:09 +0100 Subject: [PATCH] moderation tooling --- apps/web/package.json | 6 +- .../astro/layout.astro} | 11 +- .../src/components/react/astro-wrapper.tsx | 9 ++ .../react/bluesky/classify-buttons.tsx | 47 ++++++++ .../react/bluesky/embed-external.tsx | 16 +++ .../components/react/bluesky/embed-image.tsx | 17 +++ .../src/components/react/bluesky/embed.tsx | 28 +++++ .../web/src/components/react/bluesky/logo.tsx | 14 +++ .../components/react/bluesky/post-content.tsx | 73 ++++++++++++ .../components/react/bluesky/post-list.tsx | 27 +++++ .../components/react/bluesky/post-view.tsx | 106 ++++++++++++++++++ .../web/src/components/react/bluesky/post.tsx | 11 ++ .../components/react/bluesky/use-bsky-api.ts | 0 apps/web/src/env.d.ts | 1 + apps/web/src/middleware.ts | 45 ++++++++ apps/web/src/pages/_react/jetstream.tsx | 27 ----- apps/web/src/pages/_react/post-moderator.tsx | 67 ----------- apps/web/src/pages/admin/untagged.astro | 19 ++++ apps/web/src/pages/feed/[rkey]/index.astro | 40 ++++--- apps/web/src/pages/feed/index.astro | 26 +++-- apps/web/src/pages/index.astro | 8 +- apps/web/src/pages/mrq.astro | 24 ---- .../xrpc/app.bsky.feed.getFeedSkeleton.ts | 4 +- apps/web/tsconfig.json | 11 +- bun.lockb | Bin 438192 -> 438952 bytes .../atproto/domain/get-moderation-queue.ts | 2 +- packages/atproto/domain/get-public-posts.ts | 24 ++++ packages/atproto/index.ts | 1 + 28 files changed, 503 insertions(+), 161 deletions(-) rename apps/web/src/{layouts/Layout.astro => components/astro/layout.astro} (67%) create mode 100644 apps/web/src/components/react/astro-wrapper.tsx create mode 100644 apps/web/src/components/react/bluesky/classify-buttons.tsx create mode 100644 apps/web/src/components/react/bluesky/embed-external.tsx create mode 100644 apps/web/src/components/react/bluesky/embed-image.tsx create mode 100644 apps/web/src/components/react/bluesky/embed.tsx create mode 100644 apps/web/src/components/react/bluesky/logo.tsx create mode 100644 apps/web/src/components/react/bluesky/post-content.tsx create mode 100644 apps/web/src/components/react/bluesky/post-list.tsx create mode 100644 apps/web/src/components/react/bluesky/post-view.tsx create mode 100644 apps/web/src/components/react/bluesky/post.tsx create mode 100644 apps/web/src/components/react/bluesky/use-bsky-api.ts delete mode 100644 apps/web/src/pages/_react/jetstream.tsx delete mode 100644 apps/web/src/pages/_react/post-moderator.tsx create mode 100644 apps/web/src/pages/admin/untagged.astro delete mode 100644 apps/web/src/pages/mrq.astro create mode 100644 packages/atproto/domain/get-public-posts.ts diff --git a/apps/web/package.json b/apps/web/package.json index 14b22bf..838457a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -14,7 +14,7 @@ "@astrojs/node": "^9.0.0", "@astrojs/react": "4.1.2", "@astrojs/tailwind": "5.1.4", - "@atproto/api": "^0.13.19", + "@atproto/api": "^0.13.23", "@atproto/lexicon": "^0.4.3", "@atproto/oauth-client-browser": "^0.3.3", "@atproto/oauth-client-node": "^0.2.3", @@ -26,9 +26,11 @@ "react": "^19.0.0", "react-bluesky-embed": "^0.5.0", "react-dom": "^19.0.0", + "tailwind-merge": "^2.6.0", "tailwindcss": "^3.4.16" }, "devDependencies": { - "@types/express": "^5.0.0" + "@types/express": "^5.0.0", + "@types/react": "^19" } } diff --git a/apps/web/src/layouts/Layout.astro b/apps/web/src/components/astro/layout.astro similarity index 67% rename from apps/web/src/layouts/Layout.astro rename to apps/web/src/components/astro/layout.astro index 32b27f0..7f47a16 100644 --- a/apps/web/src/layouts/Layout.astro +++ b/apps/web/src/components/astro/layout.astro @@ -1,5 +1,12 @@ --- -import "../base.css"; +import "../../base.css"; + +interface Props { + title?: string; +} + +const props = Astro.props; +const title = props.title ? `Technical | ${props.title}` : `Technical`; --- @@ -9,7 +16,7 @@ import "../base.css"; - Astro Basics + {title} diff --git a/apps/web/src/components/react/astro-wrapper.tsx b/apps/web/src/components/react/astro-wrapper.tsx new file mode 100644 index 0000000..610d044 --- /dev/null +++ b/apps/web/src/components/react/astro-wrapper.tsx @@ -0,0 +1,9 @@ +import { StrictMode, Suspense, type ReactNode } from "react"; + +export function AstroWrapper({ children }: { children: ReactNode }) { + return ( + loading

}> + {children} +
+ ); +} diff --git a/apps/web/src/components/react/bluesky/classify-buttons.tsx b/apps/web/src/components/react/bluesky/classify-buttons.tsx new file mode 100644 index 0000000..9e9ab68 --- /dev/null +++ b/apps/web/src/components/react/bluesky/classify-buttons.tsx @@ -0,0 +1,47 @@ +import { actions } from "astro:actions"; +import { useState } from "react"; +import { twMerge } from "tailwind-merge"; + +const classifyButtonClass = + "min-h-5 min-w-5 bg-gray-700 rounded-md py-1.5 px-3 text-white disabled:bg-gray-400 disabled:text-gray-800"; + +export function ClassifyButtons({ + postUri, + classification, + onClassified, +}: { + postUri: string; + classification: boolean | undefined; + onClassified: (isTech: boolean) => void; +}) { + const [loading, setLoading] = useState(false); + + async function onClassifyHandler(isMatch: boolean) { + setLoading(true); + await actions.classifyManually({ + match: isMatch, + postUri: postUri, + tag: "tech", + }); + setLoading(false); + onClassified(isMatch); + } + return ( +
+ + +
+ ); +} diff --git a/apps/web/src/components/react/bluesky/embed-external.tsx b/apps/web/src/components/react/bluesky/embed-external.tsx new file mode 100644 index 0000000..047a668 --- /dev/null +++ b/apps/web/src/components/react/bluesky/embed-external.tsx @@ -0,0 +1,16 @@ +import { AppBskyEmbedExternal } from "@atproto/api"; + +export function EmbedExternal({ embed }: { embed: AppBskyEmbedExternal.View }) { + return ( + + {embed.external.thumb && ( + + )} +
{embed.external.uri}
+
+ ); +} diff --git a/apps/web/src/components/react/bluesky/embed-image.tsx b/apps/web/src/components/react/bluesky/embed-image.tsx new file mode 100644 index 0000000..ce836c6 --- /dev/null +++ b/apps/web/src/components/react/bluesky/embed-image.tsx @@ -0,0 +1,17 @@ +import { AppBskyEmbedImages } from "@atproto/api"; + +export function EmbedImage({ embed }: { embed: AppBskyEmbedImages.View }) { + return ( +
+ {embed.images.map((image) => ( + {image.alt} + ))} +
+ ); +} diff --git a/apps/web/src/components/react/bluesky/embed.tsx b/apps/web/src/components/react/bluesky/embed.tsx new file mode 100644 index 0000000..3dfc644 --- /dev/null +++ b/apps/web/src/components/react/bluesky/embed.tsx @@ -0,0 +1,28 @@ +import { + AppBskyEmbedExternal, + AppBskyEmbedImages, + AppBskyFeedDefs, +} from "@atproto/api"; +import { EmbedExternal } from "~react/bluesky/embed-external"; +import { EmbedImage } from "~react/bluesky/embed-image"; + +export function Embed({ embed }: { embed: AppBskyFeedDefs.PostView["embed"] }) { + if (AppBskyEmbedImages.isView(embed)) { + return ; + } + if (AppBskyEmbedExternal.isView(embed)) { + return ; + } + /* + if (AppBskyEmbedRecord.isView(embed)) { + return

record

; + } + + if (AppBskyEmbedVideo.isView(embed)) { + return

video

; + } + */ + const type = embed?.$type as string; + + return

[TODO] {type}

; +} diff --git a/apps/web/src/components/react/bluesky/logo.tsx b/apps/web/src/components/react/bluesky/logo.tsx new file mode 100644 index 0000000..689ba9d --- /dev/null +++ b/apps/web/src/components/react/bluesky/logo.tsx @@ -0,0 +1,14 @@ +export const BlueskyLogo = (props: React.SVGProps) => ( + + + +); diff --git a/apps/web/src/components/react/bluesky/post-content.tsx b/apps/web/src/components/react/bluesky/post-content.tsx new file mode 100644 index 0000000..f6fc2fb --- /dev/null +++ b/apps/web/src/components/react/bluesky/post-content.tsx @@ -0,0 +1,73 @@ +import { AppBskyFeedPost, AppBskyRichtextFacet, RichText } from "@atproto/api"; + +export function PostContent({ + record, +}: { + record: AppBskyFeedPost.Record | null; +}) { + if (!record) return null; + + const rt = new RichText({ + text: record.text, + facets: record.facets, + }); + + const richText = []; + let counter = 0; + for (const segment of rt.segments()) { + if ( + segment.link && + AppBskyRichtextFacet.validateLink(segment.link).success + ) { + richText.push( + + {segment.text} + + ); + } else if ( + segment.mention && + AppBskyRichtextFacet.validateMention(segment.mention).success + ) { + richText.push( + + {segment.text} + + ); + } else if ( + segment.tag && + AppBskyRichtextFacet.validateTag(segment.tag).success + ) { + richText.push( + + {segment.text} + + ); + } else { + richText.push(segment.text); + } + + counter++; + } + return ( +

+ {richText} +

+ ); +} diff --git a/apps/web/src/components/react/bluesky/post-list.tsx b/apps/web/src/components/react/bluesky/post-list.tsx new file mode 100644 index 0000000..3575577 --- /dev/null +++ b/apps/web/src/components/react/bluesky/post-list.tsx @@ -0,0 +1,27 @@ +import type { AppBskyFeedDefs } from "@atproto/api"; +import { PostView } from "~react/bluesky/post-view"; + +export function BskyPostList({ + posts, + mayClassify, +}: { + posts: Array; + mayClassify?: boolean; +}) { + return ( +
+ {posts.map((post) => ( + + ))} +
+ ); +} + +function mockPromise(): Promise { + console.log("promise called"); + return new Promise((resolve) => { + setTimeout(() => { + resolve(true); + }, 500); + }); +} diff --git a/apps/web/src/components/react/bluesky/post-view.tsx b/apps/web/src/components/react/bluesky/post-view.tsx new file mode 100644 index 0000000..dce18b8 --- /dev/null +++ b/apps/web/src/components/react/bluesky/post-view.tsx @@ -0,0 +1,106 @@ +import { AppBskyFeedDefs, AppBskyFeedPost, AtUri } from "@atproto/api"; +import { useState } from "react"; +import { PostContent } from "react-bluesky-embed"; +import { twMerge } from "tailwind-merge"; +import { ClassifyButtons } from "~react/bluesky/classify-buttons"; +import { Embed } from "~react/bluesky/embed"; +import { BlueskyLogo } from "~react/bluesky/logo"; + +export function PostView({ + view, + mayClassify, +}: { + view: AppBskyFeedDefs.PostView; + mayClassify?: boolean; +}) { + const [isClassified, setIsClassified] = useState( + undefined + ); + + function handleClassified(isTech: boolean) { + setIsClassified(isTech); + } + + if (!view) { + console.log("no view", view); + return null; + } + + const authorLink = `https://bsky.app/profile/${view.author.did}`; + const atUri = new AtUri(view.uri); + const postLink = `${authorLink}/post/${atUri.rkey}`; + + return ( +
+
+ + + + {view.embed && } +
+
+ {new Date(view.indexedAt).toLocaleString()} +
+ + Read + +
+
+ {isClassified !== undefined && ( +
+ +
+ )} + {mayClassify && ( +
+
+
+ +
+
+ )} +
+ ); +} diff --git a/apps/web/src/components/react/bluesky/post.tsx b/apps/web/src/components/react/bluesky/post.tsx new file mode 100644 index 0000000..10a1067 --- /dev/null +++ b/apps/web/src/components/react/bluesky/post.tsx @@ -0,0 +1,11 @@ +export function BskyPost({}: { + actor: { + name: string; + handle: string; + avatarUri: string; + }; + text: string; + embeds?: Array; +}) { + return
post
; +} diff --git a/apps/web/src/components/react/bluesky/use-bsky-api.ts b/apps/web/src/components/react/bluesky/use-bsky-api.ts new file mode 100644 index 0000000..e69de29 diff --git a/apps/web/src/env.d.ts b/apps/web/src/env.d.ts index 84f106a..c324f7e 100644 --- a/apps/web/src/env.d.ts +++ b/apps/web/src/env.d.ts @@ -1,5 +1,6 @@ declare namespace App { interface Locals { at: import("@andrioid/atproto").AtContext; + mayClassify: boolean; } } diff --git a/apps/web/src/middleware.ts b/apps/web/src/middleware.ts index 9e82f23..2bac31f 100644 --- a/apps/web/src/middleware.ts +++ b/apps/web/src/middleware.ts @@ -1,4 +1,5 @@ import { createAtContext, type AtContext } from "@andrioid/atproto"; +import type { APIContext } from "astro"; import { defineMiddleware } from "astro:middleware"; let atContext: AtContext | undefined; try { @@ -9,7 +10,51 @@ try { process.exit(1); } +// This is only until I get Bluesky oauth running +const USER = "andri"; +const PASSWORD = "devandri"; + export const onRequest = defineMiddleware((context, next) => { context.locals.at = atContext; + context.locals.mayClassify = isAuthorized(context); + // Doesn't apply to API urls + const url = new URL(context.request.url); + + if (url.pathname.match(/(^\/admin)/)) { + // Lock it down a bit + const basicAuth = context.request.headers.get("authorization"); + + if (isAuthorized(context)) { + return next(); + } else { + return new Response("Auth required", { + status: 401, + headers: { + "WWW-authenticate": 'Basic realm="Secure Area"', + }, + }); + } + } + return next(); }); + +function isAuthorized(context: APIContext): boolean { + const basicAuth = context.request.headers.get("authorization"); + + if (basicAuth) { + // Get the auth value from string "Basic authValue" + const authValue = basicAuth.split(" ")[1] ?? "username:password"; + + // Decode the Base64 encoded string via atob (https://developer.mozilla.org/en-US/docs/Web/API/atob) + // Get the username and password. NB: the decoded string is in the form "username:password" + const [username, pwd] = atob(authValue).split(":"); + + // check if the username and password are valid + if (username === USER && pwd === PASSWORD) { + // forward request + return true; + } + } + return false; +} diff --git a/apps/web/src/pages/_react/jetstream.tsx b/apps/web/src/pages/_react/jetstream.tsx deleted file mode 100644 index a11aa67..0000000 --- a/apps/web/src/pages/_react/jetstream.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { useEffect, useState } from "react"; - -export function JetStream() { - const [filter, setFilter] = useState(); - - useEffect(() => { - return; // later - const wss = new WebSocket( - "wss://jetstream2.us-east.bsky.network/subscribe?wantedCollections=app.bsky.feed.post" - ); - wss.addEventListener("open", () => { - console.log("wss open"); - }); - wss.addEventListener("message", (ev) => { - const data = ev.data as string; - if (data.match(/bluesky/)) { - console.log("post", JSON.parse(data)); - } - }); - - return () => { - wss.close(); - }; - }, []); - - return
Welcome to the stream
; -} diff --git a/apps/web/src/pages/_react/post-moderator.tsx b/apps/web/src/pages/_react/post-moderator.tsx deleted file mode 100644 index 07d5d8c..0000000 --- a/apps/web/src/pages/_react/post-moderator.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { AtUri } from "@atproto/api"; -import { actions } from "astro:actions"; -import { useState } from "react"; - -export function PostModerator({ - postId, - text, -}: { - postId: string; - text: string; -}) { - const [moderated, setModerated] = useState(false); - - const atUri = new AtUri(postId); - const postUrl = `https://bsky.app/profile/${atUri.hostname}/post/${atUri.rkey}`; - - async function onClassifyHandler(isMatch: boolean) { - await actions.classifyManually({ - match: isMatch, - postUri: postId, - tag: "tech", - }); - setModerated(true); - } - - return ( -
- {moderated ? ( - - ) : ( - <> -
- -
{text}
-
Tags
-
-
- - -
- - )} -
- ); -} diff --git a/apps/web/src/pages/admin/untagged.astro b/apps/web/src/pages/admin/untagged.astro new file mode 100644 index 0000000..ad4104e --- /dev/null +++ b/apps/web/src/pages/admin/untagged.astro @@ -0,0 +1,19 @@ +--- +import { getModerationPosts, getPublicPosts } from "@andrioid/atproto"; + +import Layout from "~astro/layout.astro"; +import { BskyPostList } from "~react/bluesky/post-list"; +const { at } = Astro.locals; +const posts = await getModerationPosts(at); +const pmap = posts.map((p) => p.postId); +const bmap = await getPublicPosts(pmap); +--- + + +
+

Untagged recent

+ +
Loading
+
+
+
diff --git a/apps/web/src/pages/feed/[rkey]/index.astro b/apps/web/src/pages/feed/[rkey]/index.astro index 5ee225e..1dbaa57 100644 --- a/apps/web/src/pages/feed/[rkey]/index.astro +++ b/apps/web/src/pages/feed/[rkey]/index.astro @@ -1,38 +1,36 @@ --- -import { AtUri, DEFAULT_FEED_ACTOR, feeds } from "@andrioid/atproto"; -import { PostThread } from "react-bluesky-embed"; -import Layout from "../../../layouts/Layout.astro"; +import { DEFAULT_FEED_ACTOR, feeds, getPublicPosts } from "@andrioid/atproto"; +import Layout from "~astro/layout.astro"; +import { BskyPostList } from "~react/bluesky/post-list"; + const { rkey } = Astro.params; const feed = feeds.find((f) => f.rkey === rkey); if (!feed) { console.log("404"); return Astro.redirect("/404"); } -const posts = await feed.handler({ +const postUris = await feed.handler({ ctx: Astro.locals.at, actorDid: DEFAULT_FEED_ACTOR, }); +const posts = await getPublicPosts(postUris); +const mayClassify = Astro.locals.mayClassify; --- -
+
+

{feed.record.displayName}

+ { + feed.record.description && ( +

{feed.record.description}

+ ) + }
- { - posts.map((post) => { - const aturi = new AtUri(post); - const did = aturi.hostname; - const rkey = aturi.rkey; - return ( - - ); - }) - } +
diff --git a/apps/web/src/pages/feed/index.astro b/apps/web/src/pages/feed/index.astro index 29cfce5..6848530 100644 --- a/apps/web/src/pages/feed/index.astro +++ b/apps/web/src/pages/feed/index.astro @@ -1,15 +1,23 @@ --- import { feeds } from "@andrioid/atproto"; -import Layout from "../../layouts/Layout.astro"; +import Layout from "~astro/layout.astro"; --- -

Feeds

- { - feeds.map((feed: any) => ( - - )) - } + diff --git a/apps/web/src/pages/index.astro b/apps/web/src/pages/index.astro index 5646c60..608bef4 100644 --- a/apps/web/src/pages/index.astro +++ b/apps/web/src/pages/index.astro @@ -1,10 +1,8 @@ --- -import Layout from "../layouts/Layout.astro"; -import { JetStream } from "./_react/jetstream"; +import Layout from "~astro/layout.astro"; // Welcome to Astro! Wondering what to do next? Check out the Astro documentation at https://docs.astro.build // Don't want to use any of this? Delete everything in this file, the `assets`, `components`, and `layouts` directories, and start fresh. +return Astro.redirect("/feed"); --- - - - + Nothing here diff --git a/apps/web/src/pages/mrq.astro b/apps/web/src/pages/mrq.astro deleted file mode 100644 index fd5d3e1..0000000 --- a/apps/web/src/pages/mrq.astro +++ /dev/null @@ -1,24 +0,0 @@ ---- -import { getModerationPosts } from "@andrioid/atproto"; -import Layout from "../layouts/Layout.astro"; -import { PostModerator } from "./_react/post-moderator"; -const { at } = Astro.locals; -const posts = await getModerationPosts(at); ---- - - -
- { - posts.map((r) => ( - - )) - } -
-
- - diff --git a/apps/web/src/pages/xrpc/app.bsky.feed.getFeedSkeleton.ts b/apps/web/src/pages/xrpc/app.bsky.feed.getFeedSkeleton.ts index 10de4c6..81784b3 100644 --- a/apps/web/src/pages/xrpc/app.bsky.feed.getFeedSkeleton.ts +++ b/apps/web/src/pages/xrpc/app.bsky.feed.getFeedSkeleton.ts @@ -38,7 +38,7 @@ export const GET: APIRoute = async ({ request: req, locals }) => { function HTTPError(msg: string = "You are holding it wrong") { return new Response(msg, { - status: 400, - statusText: "Invalid arguments", + status: 401, + statusText: msg, }); } diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index ce144a2..bfbbf05 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -1,5 +1,14 @@ { + "compilerOptions": { + "baseUrl": ".", + "paths": { + "~react/*": ["./src/components/react/*"], + "~astro/*": ["./src/components/astro/*"], + "~/*": ["./*"], + } + }, "extends": "astro/tsconfigs/strict", "include": [".astro/types.d.ts", "**/*", "./src/env.d.ts"], - "exclude": ["dist"] + "exclude": ["dist"], + } diff --git a/bun.lockb b/bun.lockb index a57c68e87802828d8177dc20b7b7c1521974491c..d76d67f93ee6cbfd38fdcd64d5f0608b54a46b59 100755 GIT binary patch delta 81059 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∓y z5#&NvzvrOrVtdbq<2fW}L5g**7cg&t#=LA^fQIg&$A9@FH;P798g z5JxjkZj6R=m_e3s7QKX|EO6tJaoOaZKkYg1y@YHk69m_J{I4J?!1XSt^DBt$44}~9 zEPVwjhS(+_d}q$-`5IDKLh9IKuOaS%3<4{^ffRJ$0+F-q4J6KZ!Q+5O-$446kl`J{ zw~!cQnS9XKg7NL-sy}v|Q{F=IKe%zm`s^(z&F+o2W>R}M+3K$yXZSma6Pdts65a10 zPGkgSY|b<9Ak{1%cnHPkJ*4!7)G=${gA;q6HPh$!ldHr>Vaf?Kq1+ z!BcFWIpjtcPmpQ~JS@d&{23DIkg4gy&yeDaWwK+w1;=NIzZk(a_&X>M zqD|=w#0B69Va^aJ4^p&E`2z6mwXn$Pn12Ab~$bz3=pK!$c%Co^s}XA1o>`IoO9=h`0- ze?!v1`yY^m2QD``RewTa5i;JL{S)FWh|0xK9>jCEe?rm#cyx`4``7d;c1AnSkY5mQ zK}vxczaV8C%k+bcj20ZfAZ9a8ZuB$fH2n=%nP<*g`5P2_wMo{j8$sfe|K6}>GWs*! zij&cf^XeZ+Trh(=S4@I`r|$xZ`u&B7LehNKUr73dxb)gzh}#%IRXYdUKL`&JxEq#m zGX9(Xi;K~Yv2eO2H={k{*6EepjP{(Y{~;L#(r`@v4+&|O$&KI4nf)0Ur(5$d+A=Pi zUdh8~&-sm!5!`5GnS8L&oXLY}`Y#?vJI-b%M)2|;cF;sN=Y1wd@X{Gb%Sn=%5xiW7 z89XBD&&&v25#ktT&N+b@q7u?DKgG-lo@9ln6k}loFHQn`j5Ugd5w!dz&zf@*hy_~y z1D?(K0#^kpSS(l}b}>yp_|0PaPku&w=H;x6ldbb?IUlkzf>#tl8k~A;5FVry&0&LB z1!-|_V1qb{c`|4$nVk{5<^*MT!kiq8;Q4Xzj5wz$ z2gDF?D(B4SfLb?|kOLsGUV56oep9!?k!#9T;GH32FIp5AYuH58m&e2lP_CwbJKYyq3fd zm7DG;&S=iMiJy_d0qp)y{EXnGBCOLH1sKga-2@=ISV6;LoIP+J$a9wj7#Tq8ups8k z3PJ(|+yP@w6=a6UVg_MB3p5Cd2yGkTeG28l89cQ~Z#7f4=2N#)h9uj8+ukhgq zx95B$7(w#|dDfisBp{Ir@x%)WkSTuytvU51Awehvu95R4VZi`O+^Z!aX^0hM7Uxq* zNa%u78>^}mEKXCU7{Lp}Ag!+HQV>1hsa4jCQj81+lWTpgIT@uPsvx7W#&8~Ju|w)~ zOBF_Y&U?}j&x31FP6ruA@M<9(AV)~qX)85u$$Onntb23s(b z^RWsffe3(yMZ{Dg(JwOnpemy|XSgaPme|4b#+|AV$FhRLf^p~cpE`{8Oq^=dt#ldf zSRK?D8N9(pGIy&nPPgV{v}Jre{iiOYJ*&DpBSRoqinT(Wks%VyWV|(fryip{tCj{M zXig{HnzLDhks%zC5j@OUzk_%XmGRSe>NDCiE}s5VpV6N4xhBL-OyKyD)Pe*(xR1f< zs|9f(JE*_FIYSE)oZt+@`9KSj{~=jgP8$-I;1O@ei0L~G8SOb%YD1Fy^g=5Z$SR4a z+K{XYp1@(1)d3Z}p!HXQIuMH>iKJ175j;%}&P<%=bQl>D!Tta(h|<@cUS-T^$62b& z$dC6Rvp_KYW|SDG-|vx@68g4XA_TQinS{|OSfrq9S=JlS@! zH7BP5B&L}_BSy^j29R*(+-1NBUi}AIN%+|S;!&pQj#`WsjE2*z%oy!BGYug=fz;y* zp*(Q2gY~8%*k3``th`1b7HC%05yS%f;$WFMXQ>fPH)u`DS|eED0jl>IjUk~1p19=n zGG+uVAA+uWnQjbm3(I82Ky${c(=9C-?U`gurdL@q+Og)FFfw>dw-sl!=G<-qF%dG# z!)OXIk!><#hXscz#A&FP-eLSSeWx9xJ*U4F!~$?3z}P+A z(w@ug|_ zfy&W0(|x3Iy{bf@$T*$lwk!w-LcSfnf4Gffaz<=)}n23Q;;6 z!F+&Vsyf3IaAr9}3P2Wc;l9fmRtSLFluRzLxM93+&g$v{N-%qatQn_G-|5b1&w9=U z6jXcN8Le4mT|uD&W@dqzwO))iEMOK`ki`uyALs@ODzNArH<0(i%%=#Zo;zH$9Kk$* zU~+oE6$Bxevk}ZE9-xo_o2%^!XBHutJ0VPv8@)gw0aogYV0Iyx=MhX1ZL2a<*v!1>{}54d^?u;z5}Wdsl5v4DGZ{l1Wd z2_7Be{NM{Qff+oe=->x20h}*cyZjg#d_ZkT#%t3p0~qaD1^gKqoF;>YDT4eN!As#F zj_US@3=}EKB(Lofe;r!Wgi7Xy$dl}D+tnF zh05jy!CV1abhkVRlE=UeV9uvOkRnDHl%YB0gCT(kE)qCb1w$$VaNm+sGX&Dv0@u<^ z1tHU|LKy8hH-|8S7rrr0Zj3i)d^LS%2%|ldTs$%BgT3W2Jp^$(1t%ypNxTt0o=_6?-aEFlMp^=yPyq}kBtWDvtwXjU}gXhhk{i) zf=N_9$Q)OwIu8brb<_7&GKzCDGJpq-7#ODS4QCWr1nKk!5ey8V7#J8t7#YBB6osk-(I6j6Lir#XluV_ed=L#{ z*2{oM1_lNY4PweNGBAKNDuOtm)3O*LIa?FT$47&rOotItgy=!dF=B*dPz$I7Eg2yN zqzy#fbn$vdS#TnBfLef!mSJFEh+zZ|@G;C_1fM&=unwx85*lR0dPaun*|Cg*U=MGC zx^go}hJk?rM1z=HK*aR9v5ex5Al7!MvK=4}0|Nsx4GQI55YI8}fvVdJRR^Nkr`t9# zii6|*7*rUU1_>Pp5ey6rAX=D#f#DX^xI56WyAS0*gc|<{svbmx;@~M%{25dnM1%74 z8>qf_pcXqw?mblCBUHmDkRSsC1BeD?@Ly0qhz9xV50nq0S*PL|IYH;1LiKw<MKgBZ& zfzz)qR1O;r3N}BeJTeUu_lJsuXi!lT0`+tR<1eJ-*kaVWR3`u{g%+O>8l~;#~*K0vFYC|PJG$?L$pnMPw^1L3@Koh7qhz5z9 zLG_zMX$z=4HX3BEB{L+0*+SISGe8+&8f2h7M1lcCgETlm`N%X#+>sf4zz9PCGx)Rw zhE%9J(&%~yGBuK?PlADgp%&^;Fb!%%fEnl#bmD{TM|BaA7K7@wnNXjAXb^J_h+tq~ zK&FKl7#Kh&hJ#ujAR44(BZy#NVA#kEYQ#Vo;KFbdR05d>rT%Tu)VdQYkB{bJU|=}R z49T7+pz3kcVE;2PAS(bRu9HxW$TUa@bT&Fj{w#>Yz`y{aL8a_9C?A;ysk;sp$4S>i zv&{{tLJ$pN-Ubm23=AMzkb!~W4U|u9x}FpRK|Xp5bqI(CMa@TO)O>*!FyEl^$TUdk zCsh77)Wd%ud^v`HAXx?mFb%TcKU4vzDaSayH;qvobo?3vGsrSfMU6y*l(Rtj*l3W+ z>?{lnOw-?{F^W(3>15;pH(t1*dhpR8vw2t;KxfG?C_~j#frg|vDi{RHPh>dE8LSVi z5#&P^sL$}xpn6P)1yYUZgXrnG8PL{~F;qJ~8f1+LR2?=NBxM02KtmUJXi!(d1r(VK z3=D283|`>+*Bj&>1_lN{s74SCvd|yO2hpJBV<-y)=+G^O1gHT?ERX^sodq-)5!=lu z&d4- zX!URwBnm2Rk!Vok{0h`xSE2s84wXlyL9u_A1=3V_1C`9-R+kVfB*G-(trUq0TnFb{UEvP4QhQ1u`hlz-Y;A?@br zP;q3MpMim48B`n#Z3Iq;APG>2u3?2VH`hWf-T>8zLQg-N11%>uLzQoVhQn^Ca%?n6 z>Ht*zK@f+5fq@tr6c2}>`VK?wImHT1L8qV+r=bRdXi!4|bYKoB0Ix&kZ$RZiG)Vjw zln(V!r1fT{=4pdf9A^0Cn%^(|0& z5Dik_4&m1`fEXZwE~th5PzxtOeL5K$5;LLl^Pu7jq5Ne~^~<6BH4uXtKs3nWwNO5Y z29=Tr<=2Bt@?M!E2U{GR*q)BzCMi33MPz%Zj(IAc5P>s4!S|2KpOoN2XKm-E=12WAx zy>=?pzt&J`5DhZc2FgdKL3zy%>R(58NVCs}9a2~XL)C+5kTb)ed~7tx{BWrEV%Qn# zA+t)*2#kkHq(BV-(I5lU*&##D`A`QGLFKX0APb7wA%#jMR2?!6lCOe>R}K60S<@J~ zz|FBbs9F#WQd19A(+D-I9V!o^LFum-Dn1!1j!c6R`3$Hyhz6NA6UqnCphU3{s((2s z5I_o6Km%bV)Z*1p4cKUq`ZZ8_5Dki*bx{55q4Wl*JT@BCtlbHZx4eD@Y8Wcc3*dZNeeo(q$ zU|`^fG+RLoP`C~NT@QB&@eTlG3K0%S(vpDc2hkuON^w9+Qdtg2NiN3$DG?Q*>d@(W zbO8__6oiT#;Nzefw4fTPL4(ZIhB{myLI*JzLoEQ&ARm}Q`N%Y==(2!{gJ_UCE2s~x zp+2^Q`qW|i!wN>{(Uk|FO=RGv@#xBf(Uk`b3=E(Z2%zeAbmhV5$^%dv9#ov-TX6uY zk3jOEvUhal0RscW=*k1oln2A;$^!-l2GB|bP-_Nx#Q`Y8fcPMB(24^PA4G$iYojX< zMpqtSTX6tNBOq~5ni*YrfU?j4)H6g8Aadd#6r|M92eN;3<-zF61EQ8TfbuVB#Q`Ys zfoRaM@#x9}2Jk#SC`^c0Pyo(vq-X${OGWjgD-XaU$fGL{K zA+I<9Wm6CzG+RBo@&L5302CrHdKj)e*e*Gn(MR3K{%PK|rT5Q1PwLv)ZlU{8BSE5a zwtr!K!uzHFj`6ngcSkhJeXV9@xIfK&gUyebk4(!;nR131ac2EdNY`)W732Z_jng%cGloyU0TSpv&gjk9JpCp}pyLE1?{wP}jNXi`(>qTvhEKOR z$;dnXEl8k!y5&j6@aZo=0&`C?dNX!Te+d$paf*?5y6-7QZ^rKFGfy#wPxm;@$UFTn zNT7GR=V`|9=|4aMYfm$JGxksa2@+UwhLLxA>={OH#);Eco?#519&whDcRKG`MsLQ+ z(<9G``)LE&+p(VKDR^vv_1@VEd950Jp@ z>5>;f;QU{Uk`B;tnW0?l5{Y?w?+H2NWK6LE!-sI5=JNE+{-e z0=;(`y%`TrzX=lPxCaW4dyL+UN2hn*1BJ(ZPD<+z!=VWX8K1Eb#}VvL&k8%bJG`ssPof*f~X7A10OMlGhUp&5=32^ z&iI%yobmGXNDy^p`bH3Sbvox0#&E`K(-T3|_31l7)Q#zaPZ`4*Z%)qyQMaZa1W~uA zOFm-^XS_4L5JcUbeiB68o38krF`V)K^vdTTAHM+k_&K9D zjNXi&r$@d6rGWRK6aW(VI-T=9CivNsvIrCr}Fb#OTfVe|qI7Pg$GE0ak}PbPe|0t$~WjNXi_(>uR_!s9C_JU{~M(=ES(!UH5Q_ba0}Bj@y&Ab}a* zK;iL?(VLNb`pj>j@c0f250C)wbkFag@Bj&{{m$sk$UprjNMOYeP+3FQ7_^kx*Fz7r&n@f#E#zZtz5C8uZp z28G8TP%0fh%hp!N@=H>2$IlOTbLzo78=%jnH0KfUrVC_Mgw!UH6rI9>A} zC_F#{z5f`!8I`Bs1POHf2ZhIfMsG&d>7D->!>3v>@lJmW;;T=!WD1}9f{AzPTqbWu z&8aV$!l%z*Wa6Ff%gE%-s6BlqBUAWv4<;tw>3=~2y3;+Gn8K(3012#RV)ACxpZ*gh zu!5P1cX}){lQ*N`^p(s^;nO2nn0Tl2vM_lw8c&a8VG5tl!OFxteJ@DBbUG(1Q~2~9 zAc0&~CT~Xb={rFJ8Ej0v(`DJ1ycsR0XRG+ z^qxMG2NWK>pzr_*_)hoa1%(GlU@b3`H>3abpCEx1e4y~)WAbJUoW7C|6dwGb@Ze|i zW(=Ml$qxz-0Z@2=1VX2C3V^}`B#~R*g@+U9 zJU{}qvP|H{1xTPm4ip}8OyI_a94I{GLE!-sXq>Jo&lJwsG`$f-HBY|@qFSaKDlmnE zniU|bZTdqH)jr))ktv+9WBNo8)j9p8A}Eh2fx1&YU5b%sKwK7f~Y0a4YirVL5&3vwQTxB5Vd@|r4Ca#5jTg;h;7Gh*~rKBZyi%-BS+~$9hb>)7R=Tfg1=Qfff3oIM!zZHxTqeaclsJV*@5| z1Hk|k$A+Ld1_^AP&S?mWV~{|uArrWP020VB0>!Zr6S#q31d3y0P#l8#M4-)7#Wdb)4Kmr|RpfqpB1a2Uh zfzrG=D9wWej!(BV2c>zCz+7`Ca03A(FauO#`dTo78weJlG;aw?^B{q<(>*Og;QhAQDAnM+9MSCW2s{uqk zn0^sNJ)ExTz!c8-XnG@vdOZCmh+){7_dEE`< zbvGt(OTi7~b$5{0K>}Z=bGn1P4id<9X9BkrKmr*aAg_Bcfm;e5prqglN(vx>-_s>M zK}i85Q0vJAZYh8SD!f2R!HWspQt$#L1#eJN00}To*YpM@1&~0mHxsy}021i%0VM?= zCU8r^2b2_iK}i85z&_p57Ze^Kfw{g+;FbbNV1^$kJp7ozEd@VNc=&_D10=vZ-P4~b zoRM$(LJ-A2{ii=u`1BP4puh-V0yh%^n8F!_rZWaIg@f7%AWCHVMi3=Boim6joKb9g zB8U>7z7s@AOcxAh3I{a}K$O(iPa7Lx+jUY;S`b`j}GTktoDIC-g2nTsL0_5FrCT~Xd>6Q^7?}7y8Mt~Xv z(_exFW<-L#8wqI*M1s5<1@bOPKzF)l6e#*Z0&AlntpSk0ifE9Jqam$Y^7(GL>HjfJ!ZKmr+Ypy-c-vYaj^}9?78a z013EHw@e0w2S{LUGNd&C5}1(!3Xc>>Yaj&_9;u-4015a`_e=$a2S{LTDx@_45?GN2 z3Xe2MYak629_gU)NQblr(m~;o0SXV0K05?E0P3WGvO3!o4b21TGSD1x*Aia=pd31agZZ zEdY=}MhPekN+2zO5>ObFg2DhKP(59;6ch#^f!b0?3jicgQ3eWwGDr)c43s9yL1_Xc z&^TSQ9F!(N0=?x-;Nb<3Kt}~AO;j*}hZib9X`&L8CO`u1(=97O;QzbJl^v10;}J#{?c;010H&gTkYp2|T<|4+@V4P1%F0EGug zptgYtJiGuBsAvR*Mc%cy#9!;R|00}IduGs_%50F4_6BBrN0VL4T3<{5CCh+h= zGblV-K;Z!rSU%md1r#12fw?VA;Nb<3z>HQ7H$%@Bj&{ zZG*HPKmse;LE+I3X+5-q!lMHe9vzU@LkB24I+=K;@9ALjVcN3>#5~%0_g-Q>k z4bcM%m0nP&fCLUs*X#v_3P_;07t)3R33T*Z3Cx%P3Y7_vHpB!_s7wTf3P|AWbkB*PPyq?7od{_|fCN@d0)@&XNE>1jC{!kc zLS-_f4KW!MDpNqI1SD{EI_DHnDgg=PPJy%`Kmr+4LE$l#$s5#$m7Kms#ngTiArq+u}|6drRx;QZ*R6zH%-oJm!JIV;-boF%J|T^FiSO68Jiub3Q0M zKmxh*Aq@+VK*j=4cr1W4EEa&mV<9L!Kmxy~OD+V32S}iHA*5je5~x@N3XesQhQ%UK zcq|5m2S|W%y5?d~cz^_Y7eg8rAc2l0pzv4%X;>@)g~w7*cz^`hr&}%sg$GDr?ovp@ z0wgeF87MrKK^hjzK;f|*6doV}-szspLE!-sSi77FJOlv}Sg`^W9xEViixr^oSP2S` zl}z9vh?Su5SOp3XkbvlP&Q+lB014!-Vge6AfCMsDgTiAq6L<(>H7GpRfWiYLAU$1j z4JbT70<~+Hz(Wuqfr_=D@L0Z*%5Clk|V?8K5 z)-!>JAl8GzV*@BWKmzL1EjNI|10*na1El2v5}2_O6doHPEsu?$@Yn5|();QG z9(y1yk3FF9*b52|kbv)W&%L1V012$!3u$?P1Xk<=g~vWf%VQrXJobaaV?U(ju^$v3 z2SDKg5(u5nc>ok1Ac5Qikd_BXAmbn?JPtxy9tT0;aR?M1Ac5%Vl7~Ry0TQS^1ZjDI z1S$@L!s9Tc<#8Ak9!Ego0TM`@u6YC$9w33)0Ic-#Vo z2S{Mybj@3!@Bj()-h#A3Kmr}NLE&*5(h9i^3XeOW@Bj%cpKf^v6doXfxpyF~5Rkx( zyP)v63u%Si1%<~wP5hy$!gTezOuzR}XV^Da21Zp2c z+8-c+iYK7(cmipEJOPErQ&4z-1P)HuddRO!UH6b`v%hf010Hg1%=03Nc-b0 zC_LVQ!UH65d%EO1P_n`224{3kA2ZhH6Ps&o7|#0TNjI1=9Wi39R@E3XiXlfsL=A@c0G_k8hCn$2X>M#xK)1f~c?4IlnW7 zGk%+%2%^4E-wC3AOc(sY6b_pC08ziD9|Tdqr%V213TON?y%0qGoqiHT{hO}%izys5 z;qi+poQZ*D`lVk?VT_E^HGeaOGcrwY1X0Y>Z-OY6>4txp!a)-qAc}4JLlDJ2-SRKU z%YQ)~x4)1k21sDWKaiLIL7EuvIid8ga5 zGlSa??9AcQEjXBYr@sXWs86@#U=E-D0wge(gV~!=bNWk=zzj}i-s!%a%;0$pPUi6G z9$d`4)Bl15bfgdIS$M?{r=s zX7D5i4|6!9$@GmN%5*v>FLOAf+4MvZWj=i;h_aY2$j2NGn!Dg*4xcW;&&)ghEFZJC zuQg~F1_K1J1ghGk^nX0Ds6f;z*)vGn^Wnh|##v2{7c@RcAAP!ERs4It%*zTAhChwc zTOuD{x%%Mz(fiA`npCltl?r!D&1MvuzL%d_V!A3nGiVB=ke@kxdW8Tp@ARu60sHBS z0?gslH3XS?r?(0)dowytzX%ez0TM73WCk@o8U;Z?Da6b({fQv652NdJLm^O53Nr^x ze=wJkgV7yyXI?m?2Z-{YJ}-;8VwwnZ0pq;sg(A$GS#Ps3Fz`(e6lE5lY~aemS(I9w zpHr5~(6HTClzBfhlB)# z%n9tQ?_C)fc&7_WGEbJ2@Bkmf){vZ&sh3p@IVhsXoq>UKx?vP^{`3n`%vVSw98{T8 zKvr>P73)?e=H@Wm*v_cWe4ml=#`K2<%;lo3HQ@7ZK*uLD6y@jSlol{BeBYjH$h?@5 zaocu5W9E7$#OfxOO-AimuDj)8%H`b9tH?CB2i%p8mdrr-5te$Tja`&mEc zcy7k9>AF$O<(w4?j0`*s3=J*Q*G4h_=KZJ4$RNbP&>*0~$RH0gIhzsW%Izw#%qmQ* z2R?x8hb5}%8S%^uID<_f2Eu2`Ed=vtVT4 z1}7sX)`!!tB{J7RVvwH+qzoyTFSAT?6`5wk%(8uc7IQEoj3wDTeZgEtLl}3j4~R8= zeipMXoWafb!UmFs?|4k#YQIKAt$7OOm=}T8(RfA>=k@urz=!!4OA~^C9^j~te#;lR1m}moj(LJ6Le}Y$S}|{ z*0~@F1_lPu0l|z6;1mowKnZld<+Z>=b>Udp<0nWKu3`=Ffi1E zP8$a4kz!zAxDQo$2dYq-fq~%+RN-By80Zk_hfsC*pklHN3=HZ}vHMUlIR*v>HK^DF zs2J!H3}0w;K7@$XGbn(99eP;TBZwda=r)w4HgClP$J`no>^+Zz`&pdRmTrC&yazEK^rP206kn4 zw5tZTjaL||uHKk|fuRYMnL*cbKm|=e=kh|uM4@7)pfgYz85lqbN(?Gy2E7{uly=0S zV&jkmg`eN{0%DK;sE? z`;#Oz&xS({3}s+oFlK`kED=z#Fa`z&eW+L@RBt!~0|V&zRZ#H9K-EQnPK$(Q*;uGp zB}*Go(WGg08001Brp+KMg7fx|Zq?D6$zC7{I4gGcbT|l!TwH zp8-{u#K6GtkpX<)Geag+43xcUK;C6wV90`sr7$osRDlvA0|Nu-Tx*a6Q$ckJR2}Hd zYH^3!UcCnC28L)h2Jm^Ev!GD|x@jy1Dh4|98x)-&yX!%gfP#D>)IiV`WFSjG zVvC?+jZgzYK@K`79F#_zK$je`F))C{mO+CWbZuDz8v_F<8dgE|g03!0ght(Js2J$* zuq24OdIr$Z;vnC(F)%QIvJohOtc5BB-Dh?gWE%qm!#b!K=uR`xwPm27Tn`lk1!*tz z!nF-hu`UJ%hJL6R?6`7}K1*mq2OU|?2#Wt61_lOD5Q2hjGc*W6hLy81Fo49iLVefA zz`y|V9VjSwLM;JV0P+b)40Pr>$RiV==7BhUE&6cVvv~7ai~HLPz?fVT*OSj<;J2moyDC+Lb98cfuV<$fuVzyfuWa`fuWC; zfuWz3fuU=%7L!z%YY-x|Rovk{GBvzzRB8nvH>hgN=cKlZ}Cai*0(62aA&1d{zdA1*{AV zi&z;L7PB%iEMa9}Sjr0Nf`GavpflLDSsB2+2hf4_=U5=U22e@>#rz%?28P`X)6aRZ zNCkp=4xm&6D*Hf$e-Tm$>Lt$#K^$V%*en1>H@SdGBC6V{!!=Nsf`NhIG_;p+9@HjgU|_feYMe1JFkAtZ28KX(28JMZ1_pn21_mF{nY^Gr z%SLtvhE41Y3~SjL7(mD4E@Wq50QFmzutWMPi`W?$7PB)j++t^7xXI4I0NTdH$icwC z#lgV91UeyB7iU^vRkz;KL}f#EnS1H%bc28NTY3=BJ2 z85nl3GB9jqWnkFO%D}LVm4N|tJ-~8S28NZa3=At+8Nk;OtYT$gSj`F^cVnn$Wnci^ z?QnyIf#D_#1H&yA28P=#3=A&J3=Gc93=E(PCJwMLFdPK6`R)b9Diz`*dIfq?;Z-Jm501A`F< z1A`$41A{pS1H*Yn28OGQ3=EeU85piHGB8|cWMDWA$~BA(3}+Y_7|w!PQs)>M7_Klf zFq~p!V7ST1z;J_+f#Dz{1H&Ok28P3o3=E*Y3aB3fx_d>Hg@Hkxg@Hkn1=4#1_0~XV zx`5ifpmr{(4a)_pDnM6hfE*0!h=U4iP?f^M!0?Tkf#Ewd1H)Hl1_sdiIQ8$C85kBb zGBC_%WMEj$$iT3Ik%3_uBLl-qMh1pej0_CR85tPXGBPl%VPs&K!^ps}kdc955hDY` zTt)_lrHl*=OBfj#W-~G{EMR0{n8(NfzPeD3nSnu(nSnu`nSnupnSlXx*BIztzq^c( zORYe688t97Ff=kVOn3KV;jM3FW?*PzW?=Zh$iM(Pg$r~?m^~u{0~aF$g8(A~13x1J z0}mtQ3QN$Xinfdl;L9AP7$Ns+9%Eo&0JTv;?O9MC1=QgJbxT0qN>B&N4RpU90|Nu- zN>)%41=RciH8()5ydqE`B*nqNAkD$RAOp(tYzz#b$_{kpK?pko1E_)oRfwR&p7*me zFdSfKU;rH`y^o!N0dzujIXeSG2|EKr89M_5=$P&bb_Rw!?2xmR``H;73P5E8I|G9< zs5{Eez@W;`z@P>y1K1cCK;2A7&~QR98>A}<>N+~HF))C-hM=w>sOtyn>4AE7pq`vB z8v}zM8>F`e>YaglV*zZC4j8Dz<;KRqV8aIKRDn8CpiYxF8v}zBI|G9ZI|G9>I|G9R zI|Bo#k7UTkz+l0~z+eJuPJpgIFk)k1Fk@q20Nt@54jSlYV_@KCV_*fr%D`}zm4N|tE5{yI28O+?3=I2N85s7nGBAK{)>zNVz_5;$f#Djc840>L0@POm z-HgJ@z`(-F!0?xaf#Dwu1H*q%qGV-YsQ<;n!0>~GfdO<~$p;n&hIcFs4DVSO7|NL$ z7$TS%7=oD@7=oA?7!sHn7($sD7?PM77$TV&7^0XN7{Ztt7{Zwu7-E#&T4L5%^_RSaWc zV2Ea6U;y>vK;6G676t}T?+(;u1YHXhIsIb*i*S803j+hF%L3}&fR0KAoizBIk%8d_ zBLl-rMg|5=CI$vACI$x3MU||~3=H~A3=FH87#P+tF)*xSVqgemVqgekVqgda-S7vx zybpAPAn2|}&|Qd33=F(X3=BsY85j&e&S79+0Cg-ucT;h&fO{?V48NEe7`8DoFzjSx zU{GcTUyjBA8f^rPF79S#VA#vdzyKO8+|SIwaFCgS0n|AJU9>irnSo(GD7P~+Ff3(e zU;vH3u3%0n{S_HGM%n4p6rU)a3ykdo2%Ykgzc@=&&&`fUf=pwM;=L zupeS)U;v%CeukZa;Uqf)!zp$Kh7;@z44~uQYuOnXKxf?FWoKZx#}4Ue8nQDm7=tQI z6Ltm$Q+5Uh&}9Ljlh!ra8Nhc@JZFR4yzq#Pf#C=n0|V%~2T(8b9~%S10g&Zv3=E)- z<0du+hDB@)450fdrm!(EfbOgK%*McQ8PuW!9b(VUz`)1Oz`zB{C~T0sNkA8^fR0wF zzsAbI0J?StbVU#7S{_bNox{q&zze!chn0Z=)NA<4$iVQ8k%8d{BLl-vMg|7Z-J_h$ z3=G`N3=BM=>j;?{7=)P_7>t=17)+QL7)+TM7%Z6>7_68W7@jaOFg#^qV0gyF!0?=j zf#C%c1H(%u1_scLlKVkJ&j*+o7!EQqFdSlHU^om)EKCdxQA`XBF-!~$u}lmMaZC&h z@k|U12}}$Opxd9Em>3wGnHU&AH;sxiF))aM?!*MCWq@3E4H{e7&B(w2y6I7anSnu* znStRIGXn!?{1r4V`&=5T6vOmzo z0O%fIb4CURP=5{76$AB(LH$Hf9}v{P19c)nT{6&+40s5JnSr5$iGiV$iGiV;iGiVq ziGg7P69WV2_EAM91_mW2$k08ghYacwF93~>g9Z;lT>;RzpEC;s189Qa0s{jBXlx!d z?5@nlz@W~?z!1UCz!1RBz_6X2fnf(b1H(3U28PY-3=E*l6+kyTfNp&N-2?%;i6VoY zfdO&;SEyBvcJl9)s=$V_{$b4d;SKQCS!mWLX#(>IGRC801+P7(nBbP0(e%j0_B4q2t1!K`GF14(L9PUF;0@44|7Gma{W3fUcIf&Cb98 zy1Sx}oq@reje$Xr4Km(mzy=xP1KoiHx)s48eg1~lgIoSlK;13Lr53w8#E_v{P|k3n~2d}L=}c*)Md zaG#xl;T1ar!xMG}hEMDa3}4t87+$k8FnnfbV0gpM!0>>bf#E4T1H)T(28M_13=Hqs z85o|iGcY`2XJ7ywOVYsx8Fd4VvbC`>Fg#&nU;tf-^OlW);XWG!!$UR(hLdaz49D0Q z82+*`Fo3Sbc@1iHfUc{V&BnkmhmC<@78?V@T{Z>=&>c7H*cccvV_=xd#=tO% zje((uje!AlAI=w0_lAuDeBBY~-kjZRkdd;zppF6PJ`K=~C!pR3s5b)g2rB~vXfO;k z_yxKi4Kxr6y0&gEXdnp|v>+OE`}F4!y|CzyKN-0*#u0hI6dg85ltK zEv2$CFf_0+Ff_73hKE271P$S!n_b7oP|pBT4D$sxMY*7%H#P>aI?(VeXlidh0|Nud z0kc4(?(7K5(0vHf3o;+(7)*H;h{2$1G+{1>(Gj5b4+8^3N-cO;hZj_Oday7sfaVa~ zriVtcD7%729YCWGAgK+|vI}(kGAO}=h8ICMGUqTcFo5pl1oi(x;{l)&A5`*##z#RV zfARLMQ7p<#^`M3VNDQPGlvzN7dZ2MokQk^T0TTx`FhHpRRK9}BLr@9=jiG_;gEc%r zVjw=K%mk?e@j+@p@}M#qBnB#%LE<2G2LnSMIGKSg1K}+U3=Fdw7#J2aFff3|)lM=n zFn|hPP{5yHU|<0CHI6bcFl=C8U|0$oo`#M^9DUmJBKyeRJ53>SfB&df1 zaxy4QfD$99kp=3(fEs5Y{V+Q~P6F986O_3?*AT$`x*qCBkQm4!kl)rZFfgn^@(aih zYZ(|AKx#qiU~-$FLvNcI7#Kjqar;0gv_psGwlOd;>;;XagGSh);-F!?oeaqg3_C#c zdQb(s7#J9KA}IiA+6^^iKj>aRBstJ{A4n}|+yUspB|XbqCY(# zp2el!fr){^o{0f`8M-wS0|V%idQf8v)aU|TnEnnl+rq@apu@z#0J=~ev<%=a1Eevp z!NkA-x@;ZPVSEFvf%%{fb5d zL&C_wP{atS^+8EEpOJw9G@6&o$iVO(Is^x51%O7?K<0u*((W@%UzNb(HT_Qli%k6$ z1_lPuFdHZ@fu@c?!)%GrF}r6B3=E)<0Qnr|+t&;X3@;fN7+!!T#~2tGKzvXd1vwbx zxCD@I85tO285tNnpshXwMo23V6e^%m5m2Ql!N|bC0U9~~!N9=q9dtqv=sGk828Is| z3=ChOb5kJtGgKVL2GQTp)UYx#Ft9T+F#Ka+U;qujfE@A@s^%Az2I&Kd{RPe1FhcBL z2X$YVplu6~CQv;C8oL202Jt}#voSI-ut3!?GcquM#6a?(DFi`A1_nN;k3qfyiSt4o z0~(+JwOv4i79g`=0~a85AT~&?0BF2Nn2~`&2xfFgg4F?4~=;jGfP^*A?o6r_L$VV{8s6$)#pjJKzYe4madH^7cL1uvL z0eSE@C?|jfKn-P(LXaSc4|1I;G#K4MV?c}y44{Uz2_pl8F|-Q-QV)t-kR>2XLGmCr zNS_&0jVmJq11Rx=#6XU=V`N|ejTM2^TQM>)*nr|6q!H8~0U2z~$iM*dnI+T!kR>3E zAjKfVL3|hu5(Du;hJk39B`%B%49-xCoERAx9HD(3kb2M&LZE>xm|d2j_=gz?G6=?o zxe^y2x$WiDH$0ZI@YX!>x zAj?3(4)ZBU0;CDVhZzQnH&C>If(_(T5E~>9QU^*qQH%@>k&Fxs5sVBBVT=q6p^OX+ zARmGp4l)m<2ALnu$iM&*tA_*=gactCYXDgYG6a-WK;qHRxCDuT=21YQ@(Eg?fL3sU zaseongF+OPQ$Ph$JW}og6;7Z&Feqd}YX5`EY)}w`G=Z`r$P!o<1QkRexkN?=hE!-a z%3)++$Yx|gbNuN7)lu#7-|?97%CVU7(h$O$`~0Ksu&pyVLf`I`vSp`~F1{yqsv0pGw-913QQ0m zREdJvpn)aOp!sh`28PejCIZN;FQC3NBLl;CP|<)i5cLaGX)-b}`~`JanHU(@p@Wd1 zm43}(;~D+B206=)O-G|CBD zO#l)Djlvr-F)$c1F@V~63?MPkvKLT#v14Lj0FBLnJO&!10(A*MO<7PY5;O(_YMN&; zf$9kc1`j3%1{cWSl{W)u6bqDAK_gk%+V*Zt3=FPJ3=ALx+?f~{GN7YiFtwgckddc2 zrs3v9m%(^5F)#!%F))BGhye}df-aQt0rh7qz9xP)ae140TP4h0rAV3>KPcy&3vp znHU&Ajsoj}4xNE41X%=92QmZMbInYU#fP9deNb-@eBEO^69YpV69Ypl69YpF6LHmGa`Spq4?>Olz}lo6&gF)&PHVqlmG%@iPU5C+MC zM(#o8fm#=9nHU)6Lr3&s@}Lp^N0`4NT99}sDtny+Uo)JctBkuSWgGkqtOMWIZ&4e z)Qti4$w1{7BPg*$`&6KNu0BD#J)piDXo3VZ=n3k(fqEEf(7qk0js^Aeo-;5ofVxGX zVPH^yj*E$bVG}5mK__QG-6NPMK#r>i6{JLVUl>3IFM96<)Exqi7J#A)G)e&KL4&&B zpl&y)Ttn}!gQ{N8TrQ{#ehnJT290lkM%+P*kwG&xN0=e&CqOedOw5o$YtXpKb|%Om zHX~@jkr^_$4I1PIO&5Ts4M2n0$3eYY=oAx3{T?O;hTTjI47->Z7}7#Qw?iby5~h6hXx3=f$Y82*AX8v_HwFD3>C(Eg1d zObiU)nHU(}FflNEV`53v90ScO015LGorprK6YzLSb7(k2mK~r!$q0?!g zX*Ez}&SGX@5QNVCFf%hSa4|D5faZc&m>C$@nHd<^K#RzsGzT*S121@vsGflV9D8>B$|6iP$fkBKJG7}FP>MmerV8~}?V8~-;V8~@=V8~%+V8{kd(Ss)c zGMO0|vX~hdGN6{FGczzaFf%ZuF*7ivLT6+_v#p?&6|mV?C+LhTXm%DfOADHz1x+S` zW^n_V85sPT85sPS85q2o85q2n85lsb4))9p44}y)TV}|lV?Ai?0B8*XNF!(s0cemN zG%E>O9-z<6z@P+OW1z~+zyO-H(qe|pV1Z^tLHa=ADoAS7pfg(_wV)X;kh~sLuMRT< z189;5MC&p$FsOktr71M%jF}l243G>mVrF14WQI(=f-C}AV#3V809vyEnyWK|&Io|? zfE)@^12PmugFFLbgF+C-2l*T%2D2O_?g^S<@_K?b=&qX?wV73yn{I4JFa_#lfwzV&2gU;v4O)PWoZa)>W81A`AUXh{H65+ndx zj0aN)atKH`y$PmyBJxC6u2c#Yp%rKvVJOPpe&EA9JJA@gsI0~c}BnHwC zY9E4V5UvMJ>4P+YrvE_#APnMzXqaK31O=M*2U!M+OPFOK-+{!C)q;Eu;=?=uN>iXE z0U$AuxuB&2pd|yKr3Jd6_y;jSlA!ejpp*CCmM~~tLkTkjLoqW0LlH9rLm_k~3Zw=!3l#-gmj+S@DtJINXb}Kt zIIo!*vhSjinSlYcf(DdLL1h3a|AQ=qvHO@A7`m7l7(hD;+M$bUI-&dyW(EdO>!BAk zg~80g(8J8Y04jK9Ff%YrW@cajs{>Wa6PXzpCNMKF^fNOsOk!qWn99t+Fol_cVLCGd z!!*#OFsKa!EqFi$4roRjR0z#xhAb`s&5eQhpbcV+LGx>%6+EC~o0)-OAu|I5XhFgP z=%NJB6e!4}^Pr(p4+@q@=<)}U1jr!Jss&KW2er>Ze2|5p;u2IHg7_edK`R=N9Rm`F zIbc0A0|RK27^v7@4Rs`_c!oI?q<;;>L-hL3IRZnFX>qsO|tc3M2-S11;A8sRua>v}^+;whWa2L5e^U zpb7>e2r1(aL#Lual?!MV`Vw?n8Z;XXnu!L@p@HV(Pl48cfGTQc2Jq!^$3P2Upkl|N zG{}>0K@~SM1H%Po1_scy7D)eNP{IOD?t>fvN_e0hWT2o2b#FjZ-k`P)XgUf+gWAHN zjb5PCeTx~giwv|G475oM6mp>G0`0W}?b8A!WYFRP*x~|E)PfcgfD$Tb_Zf%}+NWg& zT5$l{hy~hs1zLFk+R6ml;sjdU_6C$WYg z2Ti$v#w}T<%T=*Nd4eW!K@+#2r8S@#N6=zA5FfNP3bd#WH02HIe1euMfhKvikQUm3 zCVoMS?Lg|SrXQ?gQT7G(GeC=RLAz~0v+w*OeGe^$hhu+qOU*V9;*W2bbNnMc;^QRbq@Y&@(jFGct~w?pw5d(ww^!$1jNoi080@`A|kyq|XXYWc~CdN2JJtL5U zxas|mSj1Q?7#K39?*%CZ6(u00(ktuluY10gfr&BBM9)Cakb$9Q`p0?}Nyhf++zl*} z(x5U9{Wgg5p3dLM;>&n{dMt>7IFm78 z`oqU8Vl0LX3`x`PH?l}FmQDZJ$l@yvS|$aub#Yc%Y309YStd|e85-*uFkG0P*u)~q zcx!rf6N@pE2-VmDb=Krq=iQmB5jX}Pj zIlaD_Mbh*>4|u0x151Qa$XT{kN5O6f2ah2yM5~s*$Dbe3BA=KTeckK%`B4A zzjzrKK;GW3Gy9fxsDu|Z5{yA1%hE10Y=F+?Qz+L=?vpl|6qPD)*WMVYZ zGt>hu#eOw?ZVQW~v@kzpt9LuQ<~-lUo0fx3Gt{$WV2Gc7v4v$eW6kv3Ru)O=DFP4& zyYO#VUebG^i;1xgWRd{`!=&j8TUm^yX}x zAfEl3!?>Y9$>kO}T^WLMXo?g>&yQc#8HXaKEM;Q!l>+Z>ZYY@^*v%p-Jy{B3Yf9wd zL-Y6-ure{$Nii^pGB7kOoPN5KMN(#;6a#1nc7q|;$JbhJA}madtE3jUa)$(`R?FNXi_Ofmo1KsAB8D&2Iq> zFGB_fQQ7Gix>zJkS*0OyshvBH+RRYy%d%O(EqC)O$YC;AQF!QH*nLyM3Pz zif}Vz1&o)bXM=*lR}K;kk;lw}UU~g|15RDw@@D?@`Q0p%rd#A07$g}O8Y(|-y>Z)q z4lv9aoRw!_kY-?L_$ip0{mC9HpCwuht%Fv4U|G)hcY z>1B~(Qd61k(90shWS}zrK_836^rBuC6DAv#=^I|LNHE4tKiJD6$>gsx{Z22K`?VKb zc7Q|~A5Tww#UcsU_}~MJ6ig#bhfJ+1#7##c4Zd^rZ0m>m)_{QlY9C|U^q+k!#voJl z`dN$^bEYTuvuHCmPw(w#kz``h*uJ8lC4!Oh>~zM7ERu}Zrb|x*RZ<#|7}hy;_08G~ z!mdn=hI&Q@pi1xcbjK+yl8oP`|DVPp$;7BReceGLMCNSKLhLiB|_d}p%O zO>ZhlAGkbaP|}2C3F(B-6I-Ii0+<-<4E4a}j-KZ9HxpSTn5;CXPng0Y!Q`enU11W7 zglUi_BptT+bL81H&x`_@1X@td#v0(Gzv0|P`EdJsUIpT-Dr!gPVDEK-dBrfW}S@kKSBiBWU=x~VK?j7;H% z)8|ZQkw7y@7e`2$GBB(%goNQwUZt&~4hudoG0vMFKb^%I%_PR@(Hbom(#OB>b@C6!q>IZ zY1Zz8uDoD%hMX5OVhSomngrFcYB$Lo`fxn$04`#9%Q!ZZ?aAG^Yh5ke;u8 z8l1OjrU)qQSc2LN4B%juWc)OJ^=uYN>D!jzz5NZW>0a6QxwRjPFxuII&IVv$_&ojo zY!*o~9xI4DU0pqTYD8EvKne`NEh7ahNcbuRh=2LJk0}l!V`!jfpl3B*Zw`xusiPId za8G`QNdamb3lSOWrdQ8lk(6$+f>aj`@iG1Ei!Z2x z6o58>F)+-WzJ3mir0H^~0s-In=^umUS&J}&_K$&fk?w)YEc%gWz;Z$=7a?}WfS)>>zO*dp^1?5|240)#P77Ilm=tZMPguxe1Z%V1T*xBJq-!(%2T0DsX8Ji+ zR*C6xi&*9`x!6qq$HFSX~#IbERBq5(>E?=kz_2Kei}s8PJg1M6qpVVuaR_4A-VNE@4SGgB?4R@w29Z#eSn+RKiC z0n{J!XOWi8&qpNi~$XG^*B{H~O0dpsApQKDbxSYjU8h1M@X*&N37D+QvSx8&yV#KNo zo?qra1*a28DeDF)K-fj%MXFyqt%tUbK;?k@^tcr)4U9e0@2_AnmYM1fsYBoVpCi+(+feoUDFL$u}Cr= zpY9E!AX$p>>h$_mERwKn@N_yaCo8B;aCQ}oqzs1_q_fk1?pMG12R(m8;*|E99>d8h z!KCLkU1l|l1e1%`^a-4-5{xm^{a3R{GG3ZqxE5h3l&9uBecxudT2U4Q1_o3as5Zu^ z>4nG94UxIz1x3Z%^39}>k9uQ&1e7x+hmyAa^WclDn>VI7ME%+N#Y zSft<U6yg zEPjlur`K*^@nyU{J#Z7aOh3O75iJlwY1{z|Rj@Jy67tukz3=HcD)BHPMAJ#2aAMscmkw8 zbX(n&(_V25GztS6q%vS&NSJN^bb2(B%uCh(ny}JvWvxt3Fc;#HVnQJIZ3r2sIeu zY({W!!sF)KbjG7BQV^S=GEmP#crZuHd`*RvT7F)RS`B`uXCcywP}+2Zy$J8fXr@7G zZnal!GTRl{xDhHH(x%t##qe;<^wWD;B&BQ9Ahq_A!W1Xo`imMH7lK(%hMlbmv+WBEKxcx(QJ^K$A3tlD?7&DT+;BPg_)Vy2U#Rx zd4drVu+WqbEu*J99b%D!<|SB(#dvi3L{Q#%JAL&b7D*Z290mqe28MCG5#)PPdxQBb9VnmrKV4vHaYnudB2k}sh74XPhRfszJ9ADWF!&^(AID?w8oBq`ug z2QeRJ8??;InVx%$MN+yuACeVpK3{TqwZMoK5tNIjFFeK~$+&O&Zjic5`H;-T*H9O? z{(c;2WE>i7;1nPUi7;bEsOczz(hCb9>49_VS0U?}-j@)?J{IMY7-l%0U_mz+>UBuc zoqp#8i-|OU5u}>1)hR!^`0s8cOCSLRaiJt*$MpD5!(vGE&eyeikLpI)@TxOtwC3Dau2Ln_&L>;s_Aj)dOz@S(* z-R3Nd5tDw|^n$Z25~eL>5F_5yU05G`@mC8t*??v&7;wu#OocfK!h_i%XTrds69MVe zHA|+SIi(&Cnh^p`Zy7T%VDrrMo^vchjA_&7pJTCRVy&Eh=NyZKG;0+kq0RPs=(n;V zeHXOHV8Fl-KArzOxHT9HqE<{_eV#>|F>(6!^DK>w2c{eTVzFktH$C?ki!tM?=?j0c z%x1E#ot}1)#mLm77Lu%Xi--xu_Rnl$VKmV*vH*>gB-cW!gRTGHeBzQirHYWLpMLft zi=^~CsDf)oyZ`ro3TH$p*fpK;5{o3`jp@>tK;sCtkUpHnhiZR5f%c0Cbz*hX11_;h zm|D~^Feo!HH2jF0S!Xim)PIDE=sNJRhz-viRXM&oyBtBtR8F6JiA7R+ZXKizV6MK_ z!szz}H-v({(=UP?@o@TUkR$%rL7Hav?15=T9Vb%|>Llu?D_mxgFg2}*bZ48q=V!lO z$>oDk;a?943I0bH4R!vU{)3Roo}POd)Dv!lj1t_tw}0+xqrH}(p0JS#D9LfPL)w)m z*aN1!y~sU;kdbSjzUMNFgp3JPg~YF4hC!#yQV}XV+NXa2IV`pvlJ5+hX2ox3<7Yys zC}@Xt-g(7cUd~%rb{rwoHr@6Li=_0dc8J3=ciOBlVat7nP_Slt;T0B1#skv@y;+5) z&%46HCVd%d+G@AV*dlxNIS9osr*HIO6}EwRiJ=4HB`qNhW5({s3lYjhIv~!;Nm%s% z+QglX2pO%8>3mmNBuwo(AntiSt>n`}`)|7uDgrtnp6p;*lMydyRe_L6o*sRbMN+yF zYVBm}H_BPPvpNt8dZ+haWszi@KfTbCRhS*($j#FidcZlyrr*8FvQ=780@70WaHO_i z&h;~wLEUHrJrg}+hRf3v@3KfvKX#49gz?Gr-`7|qW&ZR-I+0VtZX929r+l>tXwDTp zyu&$Ry1{i82{Y*lkTN2-y_w;O*OqBu72r8ytqG7yMlpGue#;ggDM2I>57iXwv2r^^R^#9jcBuy7gfb`6M zGaF8FDQv6&4dNN-8JX)DteF7mHKdm}xNutXq>F$imchgK+ot>8U@>OgKfMt|ot(ZE zL_z(|bdyDj@%wbyn=Fz{Y?G#2++;CglA1I<=O&8_lggy&Hg{MQn2aV(zXB3>oHU)| z7K;y)-=ytfw?Jdyj8mrf-DYWEOr6euheaEz-ik4AdifoemyBQ=W;037nEvlBixK0R z>4x`MBpJ6(_XbhmSw1lqV+Mxn)9dfCNSf}S0rA*rj+bg)ey7fWi(YW!>NHfQEZj)8 zx5n=jxc>(p2Dv`{EXb@U)1TjC@ny`OZh9X){Q{asXEkMDkhY!Pavwf0$YRRC@MikO z`z(@-zox&w&mt)!G6#~sw?2Il@%Z2Be=LkfdfDLHN3)U#!; zFSa05q|AXtSQFpp6?Y$9+J%s*o1XgsR6xyvlwc=R?ycCd>{J~>!S3k`AFxO=-kHAp z0Vu)Efs~Tfi{^S&gx_>TsFR*M{lfzm32Do@kT%L==f2LP=X|FkRD?}eeuy+s(LBBI zA&Vqrct?EtqK7Op(0WLMiNkC9t%oc=(yU7$iDc31D(#Y(&+VYRpl1M@%-%cQ@ezw8 z_U6A0m>E9o*q%($3kAKV}X_m4alAl)G|NQ*pjt_>=2}C0X2Kg0` z2_*gHb_brdCV?hv4MB4|3=G06r>}d=BEh7va_RzBF=i76@S*`p#Pv6ge-xp}N54p^pl`spVulG4YZ zMUt7%nQaRvZK(p6D_{k&)Bit#7mUm(GF?S z&676Rb@^p-6hglow8#&#yPz#2E4UmXQ!qXI8H=P0);a-ffk?;n1{s6eb2GaltUMJluZBl96XrF{eneOdg)e3 zy%n;4{zV;u2QQ#W-hhDtqRtGfGr^9)A_JX_ho(d6XV#GF;!wTc!~FZZBI7fBS;Pn(^E8wOp){GSiJ9*-xKw^7OdViC@6V4fTvo88~)Lk9)}?!Pqvv z{3VO8jO;E*CF8ody!-~!dT(%x&qNQ@oZL120Z1Wu?ipNw#!VM~1ntRi0#5A{=`5uUOb;HAXqo-Q!2X~ObO>)OQ5Yx~1FaL7o!amRn0b@u> z;j?GD-8&Wu>4-g$`arlU?Wm@aI;bpx%)c?DO!t4oB57K<2NFcruP-?qzJ^Z{Y&baD z8umb1+=rOoED@FZy$u@51`G@nr_X%@N)me@8ROTRe|g_lA3Oo+XMOtyQcE4*cqV4O7F@-0g`!#Kg2eH%Np{zD&azi zG>qE|Fi+k(1o5Q7A1P~-CH1~6pe0h^)<)R$!gt`MRNe1DmC0eq$UyKKqo>~)WD-DC z09YBrq3QeIu}GRdI}GXmH>Q?y{89V;0HJ{A2>3AZ2JPJ?m&E#y-a^P29GTAdo<)L5 z+IG6edln_PGm8Y1`N`?)KCnnIIiH-a^8wrr zy8V?!k}+#~{0A0E#`@|1Ke9+p7wTt`f~$nCf0zzlHi686TFw|XJ@7M&BxCOM*`HV> z8M~&}eq@nk5`@^xxN`bN5EspQs6~u%(HEI0_@G)g-R>)k z6f6`V-iJAo38oPm-i#sBF~gZj@xpYiZ!AWPXQsz~W6|c+y#Q&+yqiAp8;d04%;~GY zu}Dg9f?ii*JSn;A;M@hZOpHq}KuU~#)9-&{ku*Jd0h0Y{jr8OX2{S8!ODOOvDbSV+ z(6YtiPLF?Ema5c%ixzPDNt&+voy8c7*-tJ)%>FpN`a6rH4C^Hbce}*VI~Okedjig% z26~1T3__QtZ}`q)6oAzZaPbAZXC;5edH%W%pXmaOHJ2b&NzY{l@K`_BG}De6-4tK& zq=qr5OodJiPxt!4BBhHyO)kK=;4-9%cK0%5VM@pDWtSw%FX{*|?w>yK2aBZ2+slv^ z8s^d>n2Z$D^m9L0j2PReGyY_eWQ?9J{gXvfI_)YX*Ph-i?`5Cm*$iH%Xk@Bq$_o4;UKE2kg$4Q|1K z+GrwdAX8yt!Yilq{b7-icD(^fO0|1}8>|nu--S3AyjIgE|L4A99OM_+jl~=n&}xZY??0kmqn8C;Pn6hSR|z{+#XWFPAjwd z2z3vp$Ny!KH2Zi15@fGm%$gOff7l0_b_^I8m~TQ#eTKAsN8U~-yaSd2m!c9kr?2}9 zDyD8uKk*lo=Ow29`O6|9jh>dkDF)op+%sMOAB!a8x#^z&Sd3wAn{pe{pNPBpLCB06TjI4IdGEShaWmp$YLvyAy?o}7i6(*1cyK)u` z47xUuro}WDsehi9TR`1K13fcP;Q?9cfoDaDB6uZ<1QT@C2y9IVWI+pbd5Uzc4I~Yl zzrMEVL-|!urUflvGhkqtGaaG52w zlBT#@ysx3F6i?dUIOV5m;4)nY%zHVDQeVfl#SOcjl87<8X^Uk7cLK{pW$Yefb1F&pZ2r8kC1hkDL8^oYmx_2l>qyujTBlZzreEM;HDYppG@XT)wLy9*w#F#fn#k$% zd08c;{T@N;ucmunOh33E08Q(G7MmFwF@#UQ%*$#lo%jgSV9WWvW!33_zZZk;GSo9P zWayu+$j2(lIBU8!AFHJFvd56t<{in;Z5ItR-+~s$ffEtKrs?^7tdgetA48J%&l{Fe zGnd9a1StT!gyGC%NGL5fyj7tbXS^RI1FmivHchwZXO*0OjgM7|F>d-tkabzpx%pWo z86h%Qsp&oZtbR;tX{by9~HHdlUIcCB~(QCHDsuG+Pk!ZBac|xMHo3>LjqRk_4IQ> ztP;|zp?pEfqthiWSX=`oSxB#F>vTq8R!JtVH`8T=S&bMsPxlvQHI{CD3uzVKFXAj-N(CVV+0aV+nAo2r(m0a~_Z0+}G< z{WP6Vj8#HL>JubrrIncH2QDx{TJprBIo(N&)kqr4+H+`!x@~&D7^`t6W?HwiRRE=S zi`H+DM8Y02X|-qH3Kk~DvTqRYt@sA9wy|Z-#pRwiXE8C(gvuO;(tOeSFS+!RCo(ba zfQnq3t}V_gDf8tUq;vGC=wenggJc*ul)>RI@qK!NIID!I^LI!SZRUfcT;lJOk`ZB; z`5jW*=d`TqRr~u(7%T(M6Rp$NinB_ZF8dDY9*O%M(0eVi3ABC3K+hD^-b621z{R-{ zD5ss6{#%?Cv=UQPg4LMu_jFGQR$poFACTCJObZT+axc9CRt|RM#OWJB>K06YD#7Z@ zWczFSJS$cSCbwVH{Uli>n4~^U&yZv_V!Skcwj}Ps2SXzU_21JkNU};ufBg+9X~bI1 zI2NifXMuATc>3$#bY>~mbSADp({rR)C1gbYKoqXAQo0iPUVS|iqX}r+l_3Lz?4Rii zq*x_PEB`=>3RPl_J0)dezDZ@@MTXD0&u4NKK-B!t0c1^1LO3&GOXgvdJK%yzssVcLFGfbL3Q5L*Fb~Q-dG6qKQ{hMoM zPU!4vT;$HgSZ59y7TGZUzAUSx>23x_25tt1hF#Z0r)gimEe`g$0Vqu!gUXz!(5Ov! z6V78|tTWLAg$TpN>AG^PlG1k=AQv;T9CWiTms6KyVyrXMGX!P&7t<5vSS1<1Os|$> zm6Ty%gxuJuvG&UTgnp&7V7Hos)bTP--yp{-VJgkY2)g2}A?Dh&ChK)O4}z^S0Bs)9 zgvwmfn51=QvdkZ_4A_oC)Bnn`N}8H8GJ?1BxHcbKK6T%BU9kI2K%wsjm66_7@qgul zT@qj!u%V&Tz2#XYrBk2^+!gkw3vS=G9IU_`WNY#CdU;k!(lInq8TU_rt-xx`cy_wHBC8~0!}Pn#V4GkH z6d|@6Gqz8^s>lkOp5attbqzno0!adxdC^coR{^v}eLoW<_;vShl}*=fFlJ)B!U9Qu zDaN`bnYpP9m1Y9FC$%mJWn#Pwm3cOOsS>L%WBc^aO5m(@(3w?ITAmFO8M;LYGCZzN zK~pZEOk%*muzUJi6%@y^n|{S88{(jfpRqvPBPJUzcJ|BDso<;*E(qa%UZ}__GhJAP zRh%(ydZ0S1q)eO;Bm-aLv&<6`_4Z_91YLOmTE-r3I6Xmy)rS${1ZmvC4i0K##(C2} zYOqQ&F@Ph^2uoIs11;zPXT?NqlsGnFU`Uz1QI$0vYQ}UE1y`Zgs>TYkF;SZp)FD0S%nIItwR^g(I^N)fcp9|PBS)Pz4X+!)_U@m) zTaQ(8x`GC)i9cqzgVF(Lu`p&j@a4gk4&p!?4GkF>o=sn@!Rib3Ff`C4L4hDM-BFWO zT)K;w5p>yNgJz_B;-B>IN1!bh0|o|&AEx(cvg$B~Oy8-=YRx!rIw&AO!2`-6P}4+N z%orHJ0SC|3A zAP2yr36caP7!OT1)L{jUEii;m?>Ar-lQU*uFc*L%^?g%f9)EUHehnU^1&{cGou|!d ztY-u&MH#@FkqQLpKtCj}g2X`)BqJmUDTe!M3WRqQD}fednCgKmN~j~GqXi+^_~7ED zwWS`t-1mlzG+jUuu8NW_{t;;HjD-juk z>Ku?88J|tJ)B~qhFb@(V?BIF~>PALLGJ_=sXex(BqXZ))@TObpv&zDhz%<^P-mT9H zTFJOnADnwY8H?GF0g?|G?@V_zfagdFXp4hS6dVur1&qT|51}F{`BcPH9MTuRrkL zn^7gf7M6{54NpijGKeuSG+dhdJM-0yZa#=s&>96$vqs*8)sRW#&-4W*tP;@dJ-x+* zRSGI*Bz;5{;=gAHGenBMIch)+He+D$n*P>=Rg&@Mbaqo#W5%%Q)~2kWUBn>4>3OEC zQo?vyKo3i>!$0$Im@n>`ReRjV~ zV1l~Pkbxm=y1g0L&`2{@W5%56y&zu2^yMJl!Rfa_yaUs}nz0(2u9*R`>zbe2^4I+j zVY`bB85qJbdOmTW(IF!ShTiG-%~>UxWdBS*V8bfG2yKj>o(^h$!bKs9%yLv18RQrk z8dTpVa4y?1Z5^on3vRzNbg3|cwC#rsV;<50CchexOoNXcNoEqfdrB?W<&p?I;4KW z8nz(qdDd702x^f51H;bg3$0mw8IMnYZ_O%cdP{>5yq9Qpn(0ZFyMiwTKudMNxd1(S z5HcsG+uE>#ri&UKSVa`Tie>*mhJ{%q9p0{(H(eE>7~&5ZKTSw(=UD0P7qOIKKNDje zs7GpS0_yA>uwiXr{5IXumKC&dBifc#Qo2J6l7Nq%ezmnO-lq^$gg`pV$EWv$6yV;Q zK7aaQTh?^OuIY^qkfb=r0knC|j@3jOy_YKhas{}3pEG@}9n4SQ^b6A@C4=5+Mre}# zGu^ejem+lZVq^fz-~LF6+oD$+&X5xg+aK#uw8SomjV; zem8tyqz7k^n(!4(a-?CqJ(?aaEB@!)h&vlleq zdB>Smf^p^augQTwhR+(}xlCCvv&}btJAoYvUW_AWJzd6~RYKaxnvp@AfuVtK`I)7G)9->j z3tC8J3hG|@yMy}?neME{jQ^(3b!U~7j2{v15?I$XLR5g4??^Ivv`_B= zDa5u;2cocG`hHJVNmFd=bRY__Ey{$*fLHE_uz`bM)pT_)R#)X-7f8YUqYX05i@c!K z&=Rycf7bMVFIGvc3ppVQdZFv74nCc@LRj4WJ7`G}MCRD^yI!DZ#}+4Gv%zs9$rR8r zUB{bMf)O0}BJ5x(uJ-8(-mDU)SYrUJq7Ax^_7KB6ceR&H4hVa}OI?MhAMj>nGsPMw zVExz@SwY-gIsLacD|CG+)HxpQ(+zxBB}}o#3)r{<=*lYOrMVE}E>ExZVU?7|8ZTh2 z;CL}+oHpIp7i{f+A67}z)!vXo?e)uUEs@w}(Dr8|J@DB04sS;AbhemTX{k;t`1BP6 zhz!I8vxCqId&0M+3wFseH-R%Q_$VR~A4n7AWl+x%afypO(7Ah41_n)^>2rKpeayst z8NvIX%@1~Oo96uRJh+qvm!+D%kdn=Q*~>pha(STg7c>rF!oXncJ6+C?RYDqv3L^%F z)6)a}SS1?TGO_{FZTwj! zWQ+qKg;%-qB7yroH8}_sUIEh!{8=Rel8cK=DhpB>EWefTa92*A2o6VZaT*g0$u^Sf z+vG0>cf=xkAgRF+C;Kn95xFCCNdzHN9z1;?$lk7CM(`#!ZTG$@GTvsOEta6eRty*z zVuGiC@@F-Y;SPb6lixh8Rydut?m?I#7Bbx-fK`HV#q`JkR$ndL3e!R%&RDrwXve|x zN@>#qSXG#q!?u45U}a+D-Vg#hFpPmgAc}SR>$PlB(`AELRi}Fdu?8rDP9_Dd;h6r< z*ePd&w-D&mQP8-f*N>AqtnU|x{G7fsh*e(cr68mdyB%7+Bz(1k)ykkE;{Z=rm9Fxue>Ayg<>;LIeA*^yt{{N?2g|NyoMoy0mVU>4! z#RlmNz6#kSYF_ej_BS?2tTJyCWmi2GnDd_vk}xf^G~z|)e3;0?4pIMB&E%{h*QIF^ z?9+FFj9WSVW(cc16Res*z`yURSBVHf~XzScY>&u({F~d$}`z< zPyZFlD#zr-JzXjcLR*1oJMQUGVXShDq0=kFSmhZ*r_Y2?JHuGzL5god75xfhm8+l4 z3rRCSeP=jKUwUWCGG2&VPxCyQab#v%{w7{XW&Sc(dV$oAr;LYqA-UQ6p<=|pr;ed# zcp=RI38BK5Mi){3RDsQm&MM?|& z<%I-RnefzOHp{Ao9ikvzOMwXJ8tIu$H_T*JnZ8wz1gF08&bDT7W2Wr%yq udg@D;W{<)~h+M$N>95wZ<#9DY`71Vp)lP3+$EMBo0V*i5Y5J~pY~KKn#RN+L delta 82120 zcmZ4SRBFS0sR??Te^xu(Zh8{%rsLWnodvUw$V+|qtT9Uye(finvgi2qEOCYPYz!da zJ~3RLX|>hF3Xl3LObiU%3=9oNnHdlNlH`F*7g-GcYt5 zGBYr6GB7k$Cg$dVj9A3Xz#zcD&@hD=qP`%%xFor_n8A#Vfq|ESp}~)tfq{#Gp&>6Z zFF!MdfuRkmt|+xQKc_5};Q%`WgFFL6eZw|(h{6@@5Q8!ji}TC#7#MzWKn#k3$`@p& zRe~(`U}sc_0oE=LIQXXt086(13KsKzg7aGnn@Dkvdd8M*^&^``y?T*XqSShkCK9fkC8NlR+obK^RP4|s$hGR z8d_Bt7$g`N8cK3fia{z*C_}=cxV#9&W#F5It_?1x|)!Pm(_$=%dZIu z8Ad4mMFZlj7a9=jic|Bz?zjWxFNT_vnyQI0ryX)eeBz`qBsDAyKG!N@`h7 zegOl+lF0`-#Oou2Aag+mlnm1mYDXD~42 zMnD`O9tknMnSyo76mEECPzaosDsjJ(GY!0V!#$Q=tn^kmM7Sp zdWHtm2#7>-a(-!E2?N7IYe@K(dP3-eqRisltYU@?Pl!)qJRv?#jE5K;oxs4L%)roK zp8!eG7vmv0U`ryz1AGY#42BF04Xg=}1e2T$2^pbe1_rTu28IStsDMT?1A`(1L&NVR zhzlPjL42;A1~Hf`4I=+86~e!s3Q>0eN-s`@WUXsS5C`tefLQo39^%0uPe@2D&xC|H zLly%=J*W<>$btlARu;s^6EYzN%jGaIs4*}!{LO|~{2&`*!R~AZ22}=zhS}K=pB85` zFlaC^G&E&G^f%-~)aB$uEcP#ehzI0D9B!EpF<&a5K@HS!Y1mr`i953*hz1X+ORp6{ zf?RcSCAWNiV+kbSic28InU+8z;C%@siQX-R&_-ntx+pb0wSs|x;e07XeN+h~JbguWe8|qZVS0Pc7KK`UYL7gdjwq;ad$Pj9=D3e3x3BRGOKS!cfuy zNv4S%kVN3y0f_@^sJJ?mFW3PoR{pg^)V*nk=)2JlQGci%BEJsIuV-kO-VTZ7MyNy{ zRAUra0Yifa)BqDGUk<8{8>;SG8zdt?YJ*sCrVV1j4k&+F8^i(J(C8~o%Lg|D^3zgF zl36ks7#b%t^0^EBnFxuN+?*V6b+vx-z|b!QfvnIvVFFdUx_@qKDVYH}h21H+^l5Ps_nNT^oM0H>9Pg2a*x-R#uL zTqr+z2E-LnGa%;Y=cSfp=BCy&@dYc?b# zVD;oDYluTiij(v6(vq`FGV>}yzAj45s06iX3>QOvT9ls)Y94G}4Dn%hPHHKrUVUZ_ zk*{0=v9KUJT{k7Oh#@UAFGaVsfFWfm0|Pe;14BdPWJ>}0`s^hT>kD)XOH)fz8HAQY ztY=*g3D^SNoXp(J5{9$OA(`^FHH6MB%FWD8WnjonOwUYCEG{{>0%EQHN=QBtSqbs? z!4(j5&O@CAbLMVqaJbhutcOaZ!lJ23R_WrEgeJ394Za4?!&n)kkCH51rjTJpmcIZVoo*# z1H)!0f8`cPBJhINp$^s%zA-c~6|5oI1=3+;Xn+QCR)YYvsr26p(h8W#1aSbUOayg- zVV#CsJ0baU^)5*4%!AS}{%NRuL1rGfG^pDHDTH3{f#?gE{7^`}-f17i8xDIRH6inU zh^@s1IhiF!3=A22AVp2^9!L>nzX#$Py*&_h@=()+_CQ?0wg-~ve(i?P?{`Cj>*;QY z_mh+Ii*zd(7&;Dt<*gd-9fp+lyP))x!;qS`0Lu4145?vN4l^*QGcYu;9ERlbWs?sI zi`Q@432|0E6C~^Eo`g8>=?Sp$4H73I@;9OU@KcboVgCt;dW%z#vP1e5q)cgsiU*&8 zl&Bo1AhE=B5)up_Pe8n#m0z67z`#(?F!ux`bNxLFsew!LQZkb>85jyc4P*uehJw<( z%H;f%R9K%Pi3wtnDHFt?^XDNBEx!PXm7EKZ@JhG<5qF2u2QES!kXoFan3I^2y7?j~ zyz3bn=3j*PSe*${YII+QL}ZN>!~oMP5Q~zFi%USImDOd4`m)RtkPjG2u7V6=Xh^yW z@o~d7NHWQ~2C*;%N?Topv}`!9LLB(?1_Og4sLfV$6H*Lk-Gmqb8yKie%*n|tE@6Q6 zGLGGV1hvy`P;tx9kbeW>$AiqICWZ z1_n1!FFWW4#OLX$dBv4^$qZS=`FW-c3=E&IL*iKEDkMcoF+qHqSX@#B$`PzA^Ihr zK-|ys1QG$TaL9$qhdhRedq8R1$KU|&maadJ%hy5_orY54F&1CpcpKU zeGUmQXg7r+;5kIS({o5Tm`r9AcX!Nt1xaYhuOX^;yoQu|k*^`%N_+!xc1e+m8OYwK zR}kBb-$J6LV{)gsyw=Bu5WAngg9N(Idx$KoyMFy0#LlztCSMZQ(>nYPV)%)VkTBT& z5#lsh)wL5UzfNPamV_Ro$>c~0dB+#f06qN>;^IS4er^sZ78w{;euo(H^E$<*%I-ma# z`49$1@VKQO10#66GsRdJ)aYSIG1g5iDoU(0Wrm1XGckfkj&hk8LF1*9k4p-APGJGF z8_@MEhT2`izz7~|&4ki0^)UIftPr=jOjeWK=!x`qxM5s4I|3iuim^qb+Md_g8=BYR%csTNk zI5>E$8jgxX{0Z%wH7pi~cnj7L*(nb4H$%f(D4m>>S(?efz|cN9P)1&J$8SjThdHNA znh`u0oGuM9HCh^?J7Drm8F|fiS%}%-fluAcViq}wY>_O)QE%iRx*R7zlo97tQ-H`y zO=gr8m*i4_B&0k=h$t+>MNKx871vzz8{*xv?~q!;TA2|%DE8<9q$GiPUw(3-taxIb z3L|*>AUVG%RX3}cAzg(LJk1cK0&z!!8aQwoEL0f5LupbfjNqX+SoRJ14ym<`ze6IW zLxT}K6!%91qOWxFOIdkEGcAaVwY4Boj6THeJ6TgsK2!WVq(1xj4N}d7eS^68*f$0S zZO|~DE+cp>gH4YSJg#i~4N?Ft`UYwEw0wiqpE-$nDWDp;B)>AfC^3cM(*sBWRgwtm zLohH*o4irZ-Z9(&;=-jykeGOF1j(*e#t=7p7(ikmF(p^GDzkvW!~jwt!SzixloxkO zH-&^(xGBVkur{HL8Kf9WPb^Ibx#f=;#B|t{z(+HPEziv+cgf4uUw8niLwGGA!m!5U zKMRN>-djSl>OQEt%?}`@<^wB;^*+`RdW|)t)DyFTc#7KwVjh7GM|}fzdK~0-IO-W1 zaP>GGtRaa!!Wk04XRIL6u*V9*C*U*UJO*lg;qOb4>oeRQgLS12Su!xxgJ$&7ycxkY z-gR$A@RYabhgcXG{6PJe$qU`h83iUsde}31O`hpt z&sa72riVS}ZdL{c7Y2p~w#g4Y%$fePPLA@lV|1Q8)6<@@b@EM5d&cvVCB5t!nI}hj z*)tYSp6O-Jai5)mA&r5dVS3|xW`oHWJUJL$Crf(UGd50+^tR_b#=*c~!obkL1hSBm zos)sViGiVkadM)&Ifo}F1A`5U&eqA1KK7hjIT;uNz>a+AVb03R#lYYKay*kK*JP?ho0t~mw6!mX9elvRN!S`uwr0nV4tj*YR(unSu(($ zaoXg_0DGnnypv}I*m0`xL7c)0@(*LuWXV8##x0X01MN9k`571-z&=&HYccs|pgrTP z$&x|#j5jAo2H7+6Or9BJ&*(JyW{^E&$7IQ1d(Hy_5Q~{6CwiH)iV89?cukJ=v1W=F zoO~~`e!Vt$WPJS3< z&N)e#fx(P{p@DhwLqBuQ6L7giA9GGN5lGmufc(tpF*!2Ko^jFSnPK*vVxpin6DWcd z{mePDL>U-7z-EASoe+hX&jNBHCz}|A$3FRCh&e~F7z2YFC@K}Zm<%RgxWmaJ#=zhN ziZ#v`VhjuxU_(FwY$eXXU<6AK963I3mpE5 z?&ho)6c`xXCeQV>W>lPfGr^uSNRfd-51dXDJTq)ecoVSS*+z@P`pIGld!3=CmlkAZZaQHSJt zCUBkyO^!g4MvKWa)9o1pC*MrB=bWzz320Vu(B9RA1RWz-m%0`tH!y-yJZHWZ zB!U=05yZ4vYqC_P9qSJ*P^!P{Y0YRgd1j_PWA)^lnf9z}v>6y2Kw-}LMjK*0)8vH# z=A2qOko3(sSuxClT?Zls&kCGtbRY?W5nL9%fhq0C)h*qY_3xh1!br~285Sh=D zgR@5$Vi?%rtfzDt7_27Gb+_hZ(SsBUU`I1rO}?39&zLh=GS{ACo*n~(4#JH8oE&-( zLm{QfFE}qT*_=~LAEKCPGAPl6=|kMYI9V~+oTE=45@QH|oY05)BZyH9pxnvWGkIpAJ<~~}$+rsa7#Su@7TI%J8bb^O$0*Y>Glv)eDIGK{V6mF$Zq6A8=P7!bGtQfQv&^39mc?YLayw2wOPDVb z-OU;8CeJLl=R9i#2{=}8T`+C3WQ9HJCOZa(^vQFBtXU=P85okmtQva;hD0#yt~~=o zJeXzU0AtN|U|@&^i~Vq5V2B2>ID;J-7@{HJ5@gQ0&JpA{*$Qh`HYWy#kjWrcloJC( z(B!#Q_KX2w{vRihuR$_C&fqYqux6bFXT5M{VDJH}GjV~j8sMxmE}()_(6waM)5c3!& zCkB{ves^PFa0VBr4?WB|1Kc4+J|vY)a)+4C3`#Q`H{BtHBRJkc4I@@{4^Tz~wZjrU zAThx_IWg9pbD{^_9ZBY#hdm(C38`m)dN45fgIhbG8d=4QfguJocMUF*d%Pee5-XVZ z&j%lMETF1_v(%4) zA&7yY0a7b7`a{ASQntB5d8}YlI{hJyK{l|yoBoj8zzOzMWB|k;;Kn7#+5m|Er^DUD z8pyz44)Jx6Ij2n^T(z$`=Y&9r>mV_ABoLB^nL$3|R0@LV;|4c1QiC8WnLs5y=gc5T z{)U9lO{g41A8#-uR+*+Rv|_a22!@ymZcB4435GOS5UzU_3<-Bg*eZuWYyta>qc{W- zvvAcMyF(!M!bLdQLLuoA+?HW24`pD80yR-ME`~zV2w3HG0ar#&jxb2PLBh8t3{tCs zW0CWH7$hdZX^7P^9GnAFtvM%#Gcb5EFf?$1Q`75kh#pRGoYY4^+zP6F%sDqlK>P_# zKdc6kP4MMB~O+@$4v6v@Eg%fQgUJNe;V3yvsAA_H5>c_s=Hsmx%jIHDOC;vkj0 zpE>J_XiyO$+gHyDsrW%{$Q?0|BmwpgD@QB?gFmQtWetx77YnJ@tczn|-uN5~b1JBC zR*!=uG-&0N%*hc4Y2q-0;+ApQ^n4cE9 zn{(DBFfio7o%$w$fgxdXY@ZEFA_GGPs2JxwmIw(Na02BNN@8H>0xMtWZq7O<30xTX zS##DVLm~{45N;;Jk|`*|>!!fuK)lWr2GAmr2C&aLKc_${76{KXm4P7&Zn}FK14F{} zyXuTK9BIgU1k)K962PiJ<`t$Rn{XVN$10n_z>qX~?qnN|3`k|eGFdUxoas=;##EJ(b73r<$qY*=gC zC5M5b1nk;GFLRC^IS`*fW6zU=Qz;ix1VNHmOD+RL5ll7bw_FB>3>c3!E{}nsVzTT^ z81XFo!J+GUr%W00}&Zj(~@p?1hl#^8B>ap>w{Cp zka83p>5NR1XU?@}om~Q|QRmLJX8l*fz+f|Z?p$k5t5Qh4!3l1obe2L&ABM?_q2`=# zpgeH5h1IbPRCC7qSaY_QLCSA%^Pgj98N~09`b!{#lcfxl7eUtemxI#o+_~0_os%OM z*mK?j@xfL7Ll1LCmB}|3*mD+EK)l2N&PMwxAcYkZnD?gwlBq<&Jljf$9JnZEt*!)h zbwQQn!Agh&7$z%vTCh}stdvc)W(}@lU@(|0>u1f_JXvzFJ?rx-1_m=QUv~1$#rB*D z)sT<{H+~uCOqN_?&w9HWGy*a=$ePox22w_|fy#EKEj5#GEwN)Ys|Pn)mfEn?GcZI> zzPrSl^;JCsL+E7LWi~7gAUTlGtOf>#V6f!d22gVcB<9t~z>oyQ!lcdS1+=C(|VCjxzh`&wIKGX^&#ua>qFMJ3q_8pAK5;)epm=AE;i?E zngHuCKTJ1g+Ask$4#f0i!ept9cAR<>A^8VVkmpZ?n>R56qX9v0(VItikWd2-@B3&u&4Z*8(;=+FvM{cp_ESUmH=1h|l7nrjynF8vU$_7|-KAXb8pbO5aibdv( zT9YHU+Ox(^1!t&KYtCK}3*6WQHB0wSg%mXqM}D0OsY$_(WYwI;z+f~vHr9q^8Yub9 z^|axb25~mHW6yeZ8pv578~LY0q6FMC;|QG&@dCV-;Fvfaq7PDrUhw4LxHTP;Os0PX zH7o;iI5}oOLW={`Kww=u1Kc-AwdVXh15(65N>tOCkQNdvsKnzaoe6O~!lJcMdALQK zZ)ZXr12I=~7TC$D)||<+AWj0ek2z+}LN+Pj9Vf>uNJ3%)H%XOdL#jtca8$<3hLmLx zIr+Je`T@c#oeQg>AI6(=o}UY=*%MnWIOf3`Js_#hd60SrqV458NIeDNdC!Mw1F2j- zA6Xyk0$3Fbl8an`WI5~l1)#!PcAq`0Ar)`V8MzQy{n~|)R1X;mWnBdE2&5Eso;-8E zJ!j7%NJubGPAs+HfO5d`&G}~$1A{53c?W6wE`~$}Cn&-=YZpU;6Py+~_b!G6IwPn6 z=KQ%B61B{e6DM1+FM()-#~I_K$u|$$bG}^yF@OcsO5;>s3gaoxuwY*baVA^~=US); zBvHIx3UM;aSe7v`n1M%!B9}p|1-I!rx|czG4yow^CUbIt6oR`apjMLfa!3rb zfnzvyIV{mVY_Z^24si>32#@u~as~#w$#*@iImK2mFxZ2~wG<1@IYL)JvJO1uv39Ni zRdRFVt(k7Em@IY7jxlg@{i7p;Ogm}PQe zpgHH2Rgk6xc+8JeWi=$&zysQ>DXT%A1UX{XYKTk0;!Jl|Po8zcj#YRKDEG`gVa=Mj z2Gm>zvDQLZXKYv?j1$(Zu4`eE6W4;qqCv`TuVrBHm<(bmuY<9&!K}L{Y*@eykmPST z%XvLaSvQ<@8P1a40IH8bIuhZm<#5(pILmk=xP&=j%~}p;?FO@CPuj4686ZQPH$jzg zwr_%zIE<4Yrkk^#-2^J#?s`~r{@nzLEbveVr}1W3Zd~YY&e6LWA_q+ZS2!6rPrh~D zj`RCwNJv8l;oP^tN>xxlq6eZkc`APEN2U3t3$;stQC zj8S*82Qjpm$6yCB|T0FA!0ChlTju$>&cz?yT% zE{OGvlNWlJbAE>NKrK>Y`?4BHT-HvnW9!L=e9!Gmy&izY|ju;;wB7n0GKK~(@J-#!QrJRHI5y$_TxKqKFclOu21v+mvp zN}Ql}rpSIsGXXO4AGaT(3sTrj+7Brr!JS*qXZskNPaS&YhhFWt*9fSlZc+`$#7L*4`aTh!}IBy+b2he zZo_d5(s6=h6OH2#N3nx?{)}mpBk$WY&YV2+zCGu?X*7U>bMYBSAVFGOkIyhLc!S*s>VE2-g>*o` za*X+tXFj%Poqv{rA#Sql7Hdw?bC9S6+rb%s4pOzTO-{US&NyZA%qRA&htGk^@4J51 zoWIXOau6gcOwThgM1pNm3^wQNI}fpi735Y%*2y=Y+HgV#4~%=YZpPCIZ*j+db9<(BmnPqOZpZom5+v8KfZLKgE<(bSq>g?CF?H>US*Cg1vF$LaJIQYwI(YOGVK&xo7zWLvtb1%8je*CjI3Iq3qz6_|$;B%F8El`Q zHD|_WhzA+LRr?$$52EM7XNV)flgykZ7z;|!A*E;eV4`pUqN1R6MJ-SZXH>HTQj^|&Bb zffF)Q2G{giAklSP5Gz?gF~q^o4RIIJdzK+K1f zVs<`zO z0HZnQ7k-G{te_z^PAdTz59HAX0f=UZJ*NdAfdn3jVip!;oGk5U%jqx32%bq|n7)vQ z(VTOFAVdorsBy@7K@g$^!s8QyL=!j(u*L{6GT4Ep)EQ?@pDDv=&v8Qt63F1(KmCF) zBPWM2Ls(SJH}N5HB%KemK=) zx}*Z5J?mC6P&9#Br@zIf&r)Et<1`hASjspVG}Kxk&In#{#1ERt=lCVg2%a(qI~wdn z9|=YV(8?xo4rQGt0WwWC$eQzx1SFt^!1cSVBqV6SbpU6iBqY_bg3RQcED4DNaQfu9 z4CNtg5SC&DuU2CN*W<2I5WV0DUDkRjMh1h)bA7Ej*F#k?fl5oxhj1Qfk%jQ|nJSF- ztUc0EFP z`CATRE!f|jq4JF2^_Ji&hjXbsBr7paUns(8&U90L`Ya7bJ4XBIH#HdTIU5vUrh*ph z98iF`h8-N5-xL_Z>yRLYi<%;&aA5*X|1(xim(*gkXWgyH2%4YTY|Z&y5#m_J=?l#m zEm)Ko87wEy4YB6TQi2!>Dbp4x!K_ORFlT+B#K;gmeJ&@XHEXysBSR>Jc~_Z{!4}Nq zoTvgxF#_P;?hzG8IuMzzsK#i{$*Ky8Om^@(2Xj@3V_87~!k9iiQkT)5X}jw5S-OmN ztnXAA8N9(pGFz%KPM^)mXv;WpdZZqsJ?m99MutGJ6swv#BSR#Z$=ESnQlHVD^#({} z^4)Z6PD2ewhH!8+CwiE(E(P%*DtV_%8Zg>322PJOV6^9)stIuu6L=`-xF#g%!Ce~8 z--~?B39DQ2Q{0dui%Xvl%5}x2;c1E`8l17a7oZ;G#w9fz@hn=hq z$-R)NqSM+C%NQp=Y_;IfhS&v3Ec!Z(;JJEm#^S8eVPr@IdqvUDoawI4^jpS^cAUz( zj11Y}vJ{jM*6TvN3mPr9m_E~l(Vnq<`b`r?d)A|RjG&c4?$(S-(<4n8?O9v&85xWx z&s}WIxm_O;)l8rTtITipApy;qVZaDpk_cJexX=LNQ*gP$bl+h5Ei*2t*ytvORo zASOb_mDZa;Ok@KuF?nqQv6>k)F3n*Ii3*6qI#Wgl$jU{~r1uq5NW8-fB}UchH?0}% zIkL?l5e}{dz~$jmGe}~BBp*(5h?^nv65i$zH#379<(*I-B>x{bhq#OpG`7qkVF7Ur z#KM3!P7Vu5+5mf=wH+i4?h@{{U<9v(VgO}uP6hq+B4d7 z{;avvtF`cWbmIJ>&R%$s%Xo|;0s~qA(*=nOb$D^f>1k9 zUI%MiV8_Vd3DNcv!8Edmi&i6;N5D*3Cq^3<2ax<-R~QRy)O@fYnEAqik-;5es=gzf zS%zTlMKD>M7#Un4YCRFmJ_PeJoXIKS3@IB~K!ra?hBGvsz)OS;&an7Nyl>9>86-dX zZjd#j%XCQ(Mtjy87f^7?dN5kEo^}C+2AC<~3TLJwn41vH|E{3m0;~0M19=?GoQz=J zK`>R_;R^D=%)1_pHY{M)Tpvao77w_zCxSW20~AJJQ*R=e3Z8J$bOdvqCn&hUYCj{G z7G7}CS_JbDoXN@V4XHL6CMRw&=dALEgdAjT#CvZ@WeAzpviE_cV+K&xVD0n))n2gy z)|{Vw7{Q~7ETAqVr>!p}aY9<&^L!yDFoVW7Io|m~Oh9B)3qMHrgay>onm#jt(Vlgm zA0ueBe5f@igFhp9p&rC(mi~~u$S{2&3!^!wKmf#KC^sPh(xifN*9Ab#g>rwPa@_(U z?tscp2!whXV)BhZNLv^xD-#5B1!zfNXb>c~F@a02$w8370~ZIJa>0?FfxD#wiy_w^F}a=D}rP^K?DPM zOdHHX<}*&$jbIdKWSYLVic!8Eq&Wa;NFbCB0_y>fq=Q)?J}UzQsPO>iheOpxFff39 z9|fgjpyIJ$RSXQsG{~Mfs5pq`U;s}7)Psf6pcPw;KltI;Dqd_M!)a|}qGqT#hz7-D zE0m8+gVeP_&1r|qgJ_WYPAI<<wSPTS z8;Ax)`F5!MP6h@BP?FjQl?TzFgnkIh2hkw^9ftCWpzFao=@``F<4}#rv^)a?!!xM- zbErHiG{}Lk8NmDA8Gb^zK}iXu7NiiA zS=d0j85kI_(L4+c3_^^MqC*&}4n%`|C=TU=Xi&^cLir#X#FPRN3=9k)8pM=lWMBa4 ztCt7y7#J8pG$^jsp?rKaD5+^NLNcKa)F1;!1_n@CGJ`tMoDot;T0zy>K+Q#?r^m-K zswT=XFfc?hg2xsarZIxgBw$zr)j$aiGGZ;rLDOv;80Eo*>_!lmfq`KYNDfMan43Z3 z(`y?T#X$us!#0o@0|S@_h35{aH+F%PF)%RfhRTCzP`n+2@y@ATVh4SA+ z`5&O_KY*I}py>Sp6#&s7fBk~;K{P09|A+EHG?>Z6z`!_tZ6l+2Jt(=bF+s|7UXWf; zrouym+${jo&cMJR2&ILXAjwXQ36eS_p|lJWB=smk)hRPUQkN>!d{rifdT@Hxgi2^b z73x3@(1)DR%U}i70HQ%m8xX<3z<^A1GB7Z>LiK~rFa_m55Djv$CsaK$4HEKZntrH> zQE2*^CPof$_3Hx?Wnf@Hra=Mb3l#^^pa2D(Zv+atFvwx444@NpKpmYo5^i_r_P=i1;$Vbzm2F!-i^P%)&Xvi&t z8oV5;4@85^UjdDhbx?I1A*aML>|%mezk8q>Kr|?69btmh4kw`oo`UkvLk+sh#J~Vj zcNgk_htRb20?K~_RsRucE{Fzs;0sjzCzSpNIvoiVq)Z@LP}Rf?NldKFkWyZV8InjP znIUDR6jU9E24xxrsCs2)Xd;8kt3t&!p!zhS;vgCnB3e*>J%|Bvqz*GA)fz!1Kr~3) z1ZsdOls1FPW1~R^n=?alg*8+iG7U1%7Ag*+85tPr8SJ0}$TY|xduH&VA`GB&r9~MS z7?Ppts7u#V*I)?-28L>=Ly4k6B`Hw~Ni~>A^&tDPx)@ZAO^5mfM1z>KKm-E=12PTj zjI4o*gJ=+QJ&0gnU_hopQMv&tjzmLB!Y$C$x*e(jAI-(Uz;KWml0A<>)ssSl9C940 z?>IBq{|pQu0g%`!XevJq;xI5UfM`$=dj-lzra=Z>g^J^&LF%qS)q!Xb^CpO3U|_ge z&kR1jh~X7ffZlXHvV|a*zJ@vkM1u;Z_t2>M1TA2`K;@BXkkEIi{7+~I{(|!VfFv0h z7(g`0{J&87e-K)X;XhOXGR-tyHl0!26QrIA{_qCu=dpLG>p<^{28hNP)*A(x4iUX{PCayBWnDLFQ#brOBZgr=QJa6rX-4lTjcL zWL6Ffq>e6znn?-`(q97gLm5c_^xiB+@kmga(+CxAhSIGp;B%N5CW2Bl=u}sz_!N*f z1_lNY4ayPISs*p=Y!*n3z7Q%8qM4@q_ClNQ%b_8?3L0|jp~^rs$WSJN8hom)5kS+!W24ouKb1tYjG7Ykej}=nX2(UupTbvb= zf25%5K{SXd4$H| z2Z#pcl2%sm!Bq@Xq2kCiKLZ295~w&n8WeP^SRt**)liqMV+9?D&%nU24r%~04GN0& zAPv*k_A`ptgL;NLp~|q)AgO&IL!;s$4B!rFfhD;s(;C93<;lkhIGKrTN(){u2Nt69xtb5DhXw5X#3!gZwQ5l?TxvzBtqz38=UP8>F&h z011GK4+SLHQsW6oidXJ~kSpz6mN1qCx6gp?nYx;&(vp>xI}?&(H_;=|nb2g)kke zU=CD#K9s)%qJd#4l)nmUFo*_Oyc)^}(V+4Wbhi*Fgf_B4Dx9rQ{oA1QcCb113=Dgq z0(+qr9)KDIqPam;0#y7QG!0yU@-IX6U4g0x(IAIhg{r#_wt#`*4pbgQgM$1aRQwsp zVW9N)3Toh6DE$Gd0UHfUq(7kYAR5F6)lVRc89{|0X#5rn4U%VqiX+pSpdlHM0LZ7j zPzBg%rs=X%8Re(HDPrURR|-PxkSr<+)q{-&IZhTTkBtU7N{$_pvlO7}Kr|?nRH1wj z4N5l}P`(B`LlC$Lr3uxj4W)IV3Xo}#kO_!jU|>L|K^B`r#X&UF^t;8-$sQ}HFft8F zMmA9Y+OtENc3$j|k|GeQ9z=uO83N^Fqe0e&vP1G)6x7+E`=mhPvFr@>;35Acr~x1v zWMC>gq&=JqbwB}B9vclZsE{3!kIJFykZF*71=Qjys62=Ud9a3k`mYj3F7S|BEmRGt zS_LJxR;XGK4dQo0?U)D^N2WoMHw`KdqCs{}hw?!*C{fIZ>R-wZDc6@l>E)n606AtQ zR0B2|WZ){OJctIVUjsE@EtFmdmB&VdTCdxo9^464zY9w5X0L~o7W<(FfM}2f2ce;V z1S$@qK?a?L^0Cn%hn|DVgJ=-{Jd_WjLFQhBT6_sAen|x?a2YCqOoNKG>mZj;Ut0!k zC*OrC1JPojv#X)}&$OpOMHd4DH7o)J%onJGk!er>ePah7E6%_RN;jZ!a5xRIABzO2 zNMoSAcs<-Dge?SR3Ly?i(h`H}1JNKKN^n3*QfUrIW{}~4l!$Urb-3tyWC>6Z%5#9v zjAqb)YNQ4YN^&|-hZ{i61<_2P<@82S0c09fWSK(6K{UvR=1`wmKz(Wr^`Y(biIt4b zqbml$D+fR^IJ#nBbj1L81;OZw0fx~P1EVVjpmXb^D+a(l1JFtVP*Vd$gK7)V;muM_|!G7ukB03)pw00}c}V1}-p8eK7f zJaG>S8+!3aR}9c%;vN)(c+7>2#Nbf?(ofcs22d`;y;1;dEQ1ou=!yXba#jj}f)Au` zbj1K@cy4sX!03trnj0JKs7R8D~C(G>#>45KRsMpq1st{7k#T`@4aVt`?E z#QM2%(V=VAVd}iH9tpJ3}CDn*nV?1qmTOZ+QW?AjK$MW z9%c-me&R4A?{wWGjNXi;(<_fKhEK0J!pJ-QE=Zt!y5>>F@aY;y8F{Do9%b}qtek!m zBya;HV0(R^tC4$y%}4l{{#vA013pNV)SNg zpT6=GWBBwHrxyk z^qnAq9UuYOvy9%1{nIngGKNpjILpX8{VYge;&jP#jN#KI&N1>%uRX`;%{Y1bNszz^ zkbv%aMsLQc(<{$|!s9$BJU{}|r)ypSg~tU@cwAugW}G?wCP?50NWk_Yqc`L1>75rr z;c*cZ9w33a(=9K7!s8MsJT5VMGtQs>5+v{fB;b3Q(HnFK-DOaCTn2>)NMP}F&nuwt zxB?1~D~#TZOQ-(?3H$&F#9n3eW?Vjfg2Lk_C_HX5dNXdG zei9^b0wkb&i_x2L>-5T7pzyc_3J;LL_UW3pLE&*56dt!3y%~2-zX=k!0TQsi!|2Vp zdwS;`PYP zAb}Gg0o@Ob-i%+TSAGDcfDfP)02256V{CDd00G1$<`oX8O-C{ncm2u<0*ABEDZ3y%`y&&-?-kkT0MB z0SPcq_xuV9kguQs`O4_c$U6NeNZmES-C@(mOq-x<9bIj2W{2L;G? zP=J60xTkae00qboP=Nek^k(Fpz7r&{10*2(lhK=ze|qLmP=Ndd1qet$aJu9#P=Ndb z1;{T(Z${ziCqV)yKmxkI8NC@rr&s<41;}qufPe(Vr)&NJ1;`&zfc#{y80>1wly%`m!&-@Px zkN=?X00}5h^<)a4>cPZ2buE)Oqw3V3OyN_1F!4^0Wn}VZRG+?*ktuxo3PvX0>AXx# z-i(^lBbk`Or$;a`@lM|h640K`$;=c!or9T)cX}=}lQ*O8^qnAq9UuW&7A9{-{pp!3 zOyScrSeSUHp9KjRPM2h53ZE{)%EUXpmX*ny(RlhvkiZF$fG!)8H>2tFN;anO=@o2D zywmT31k9&vvNMHG*I;Mjo!-mNO+(SLd-KPWu-LE!-s2%Ih{016KQPD9}MM2>q3JMR9K=O1? zF;IAjfx<(K$(u2C`cII+50F5tIFmPH`t+6Jpzsg}g@*)_H)H1XNC{AQNPxlvB#=Fw zQxX&&lA!RAWb$UroxT$!umdC@E5+o^m_I#J3KSkvpzr_*6i%0v28D+-C_JQ@z^x0A zzzL9mt_%~nbs+-^4;fH+fCS2?Ys!McLlzVsvP|IC1xVlqNWfN(3EaAn1BHhiC_F#{ zwbL!-LE#|}3J-ZEaO(mj@B$>@tH15!a*VJGNXPhy; z5k$?LeiKB^nr^7c6b@=RfT%gsAA+d4(=D}_!WrjHp9rGnPk*V!6h8fh78CDuUu`CE zn?ai?oN>|gk05ICbWa_oaK}fWzz$7nZiL$1rW7jI-?#_IH;WfqE=1c z2%=U`=hSBkXIwKq5k#$>zEhtmeEJT3Cf@0?229`w>@B<_eYrzC=Ay|OYyag!DTQY%L2$rDuwgkmDNZ|BzPAgEFw*sYkD<*Hov(tBi z1a^P~WUZOJLG1)GYo<>e=)_XQpsaQ^6VJb!U** zU6{a41s9OlT|iz33A~=p=?e0?E6D4vOyH&hNMHv@K-P^3+*EJ_dEE`5}ds zue*c1?#={mDu4t|fCO|sn7~a150KYAKwbw4e4noA3G%up$m^a=;HCmd;08#*){6<; zRPX{N1usxi015n^Zs`q53f`ck;LYUC^q+D1D{rQ-=`TPczCKLgrh*SBE%<=a0!V;) zx~DHFE%<`cf-e)esQ?oA0TPJyV*)o7{6GQX2MQ2>CU8^19~2<|pa200a8Kt900l?@ zC_n<3z)gh!rf^2S>4Jew;h=UxASg5fL7@@Ix^p_w?VY*{DQ#hzS0HTzpe*{s=(>)`Y!WmVjF9cDl(|<-Vg-`zx0cs9JLYf1S zAn!(kyc-2+4n%>x8wK(%NI-i!XEeyW(ID?eLz)91fgKc>X;gJRkk2FYg03@&jBp{m( zX%3`=!Xq6N9w33h>5>_s@W=p#M+T%h01`L>641?rGzT(4;gJan50F6kbj>VKcw~XX zBMZ_T014ax3D{;sngiLO@W=**2S^}xx@8V1JaRzckppQCOZCQNtCWeNwi1wd5N z^p7AadAesFQ#fPF^o1ZQb^1>bl{P&vpD7&F1jq-4K|Ux93Ls5@0#FzffWiPIkUgEV z5EKT5pfD(eGyy;YJ3s=mMUW;y5hx6bKw$t9D4Z@?3<`r{P#6?LngAey6CeTI5=axE z1QZ4(pfCUlluy?z1%*K=C=5y=O#qO<4Um9s8KenN1`2~RP#Ay&YNuP4gTkO36b9vx zCICp_1xUcR0@4Ji0HuivP?`VP|8fT0=`9@U`m010$Y=d1yRM-3=EYM8(S3?P9WAOYE0Ch!15Ehs!{LE!-sm^fXs z4ip}Bpzx?;0uL~N1WteibnBVG0}S<`@Tdoc2S{N0bj=1(cr<{*qk#!LzyK1s0TQrn zWC9N`G=jpT5fmOEfw|Kyn?T{w1PYHPCh!0QNZ8lqKmv=Wd$xeW zqXiTmEll7629UrHkU(rJ6L^536%-z=pzvs80uL~>fx@E=6doXf)zdlKLE+I33XgUs z@BjlyU;n5FiK7a&%fCOSEK$;H|K;ba~6dn^H z&4-Dg@R$e+50Jp=>70{5;V}sm9+M!=2av!HkbvxDNb_MbC_E;E!UH65ak}IbP~^8qAq0wkb271Df|3JQ;@pzr_*T%WEv4HO>JK;bbB(tH33+yDvKPG|B44LnQ- zg~xPIcz^`%PPd!^3Xd6}@R-5m&3J$MOOU_|kbv(@Ch+jXOi*~t1ce7k;PG_NS)lNk z1qzQ@OyJ=MkiZX+K!P8}=p z+7uuW-zAVX#S&0}ECB@wNPu~|=TcCBECmI~Qb?NuB=7?y5W5W0rdS3FkY%6%Sq^Da zEC&V1a!`PP1h}Vjt^ftd3Q&NofV3$<0y{tgvMZUu!w)M#0kRSlARqz3>5{8J0kR4d zAgh?b!w(>V6CeTI)lA^wht;3}Sq%yhkbwAf%{8C^Spy1?HB8{)2av!Gkbo^{ut0ix z=UPyJtOW%KNI-VF9-Bbn0TR%j&bb*B9-Beov6%@x z1_2V-0TPhi0%>$?0fomFP6CqM$a+aQgOZJ_Yj1_}?5 zfcbRI?V#}34hoO$kVXec;08#*b_b-%wyJ3!$960n_axf2u~J3-;G6Vm7a3A_La z`0j!c)~c0(E+Ab}qsf!IBeM#mmdcKCDM$n46ev7S zfx-hMP&i%kG$=eygTmu9qyYjFH~|vSJp*ZgoB@T$8BlnD1j?sto&|-+Sx|VKg)~4w z0yjVcw&x%XkaM8$I0p(3kU;Hp%k!Y{I1dVs^NIX+o15c4GIsCz~bqicR=BB2NWK6APo?Zzz>i>>|IC$F0=7>e4Ui|G@OT0W z50Jp#>6TAH;qep{9#0_+5RkwNkbv(qNCV^7pzwGJX@I;0g~v-!cz^^>Pv?9E3XfNy@OTAjfPe&cfCOY;LmD8j zLE-Tl6doXfi_<0FfWqSqC_LUk8XzEn6CeTIw~z+NTTpns1%(Gl;QDmUccAci2MUjO zkOl}y;08#*_C2Hl@*Wf(??K@K61Y3v@&hP5K7hjG1Ec{05_ka;@cjsBfP4gn$45|j zfCL^-_xuD3k58cR_ylQyfCPSk1Y$o!8X%uR;qe(19$z30kT0O{_yP(KkihHdoL@oV z@f8#vUm*<;kiZU*fb2I&1LPYhJidX#10?Wqy5x6Iczg$i$9G5ricxfpG@J5Kc+W=sGrksf~a594Sz9(gXTOy)Su}OLDb*rmcN<88UIb6 z_?s!5=|A)ISHGFU7#XHJ{$UCSO?7}Mrs*F+6!Ub?zf9qbEYlZ)DAwseK@{8cz<*5P zpc#&TATR#|dHFx2iSZxg<^Lcrg9Nyzax#ZA@=Q%+4rk<@x|2D4>JDb!>9UN>;I;)L zb2y{G^n)NuaJnQDGkClLL5^K$16aT*z}7aN_@H|3p04U0z^qpzX_tG zrW>*{gU2gCl+5&pAWC++B^xt%yaGhYPk#xb6s9|}Glzr5D?pUe^p7A)dAcVDbNF-* z4rbozYdM&`8C9qM1PS~A3B+FGxUp zIwv=C_;e0#X5Q(!+|1zC14v*8H#6UKIUZ&&&ny1d8fMyGJ7-HPM;{q96sGbkePS-SCD}HbVniP@aZo=0!xLML9-Sg zK>{;`n0cp%3Nw2%I!|9H3p2vS+@JgGbgY!&YfQ9$y`5K!Bqq#D0$2sd=^iG5Cs|83^wvYGBXEb%63^h=6E*VDTlzvYBa1q#K0g4Qd13zFqZ8cuFM8Z zT<6b&5A$pIdVcynb7nU&_X`j{a%dm8IDMWw^EpQ2?YSPz%#4r->Sj84XZk-+<}TLz zObiTM(;u2MJ5Rsh#k_|xYw({Y?V%0$xTFhzYzVj0^%GYqx{sIR2P1GVp?~8`==Z903yH z%*!tTU6;V%GyPx^^K_=o52i;YGuJ^Qi;oGUW;!Ay`&mG#%w_wXEas9H5E;%05};w) z8#SJmIeRp82Xp9VPQR1IYzQWJ7(ZBn&Zc2txZuVzy)cATc=}-*7R`DFhJXJd0905m zh8*L|06L)?#s?ip1Hz!wl0afhp=v-IJwe-DL1N3G#|ndNaDpC8v=Vw`Flb?(GgNFf zR4*IoE*X#*XoVx_oN3U$H4qZs1|1{y4`eFnjs&O} z=osn$P_fNWF>a7SAe$H%7(g3LL3V(S-(-S{ZDnR)s0aBBbkN{gkkc6$7(i!LgB0?C zZdibd?SL8xI%zQmB+07}^|2rW14AD4x`RE;;Ccg8{4x|k)m?__ z6$TxcUJ4Zioka~|iZC!RRDu``3=CJH3PI5UK4*-9fdO>pG)Nj09aBLJ1_p-fP<5b# zkgtJ!&A`BL11biJqBGFjU_j?ogS1F8FfiN&tCMG7xCK=x#lXOD3aaonR7`sMM>`hb zdeG_Ns$lgD40oYYvJ4CiDp0X|P%$|M1_p0vY~6>7fi6ke#tu3A?EzFwfq{WxGgRF} zs2J!9j3rR9M^G^(1_p-3pd-#e_B@6PDuX-+Rrmxd269LjRO~4<7C;V`gGTjp=n3O$ z3=9m9p~>V8RIfS%1H%)j*juQW1_J}bQ>fTG(5d2}WCA++4|aO(2dF|V&}B=|!~H)( zqgtDRfnfp*0|O`tfzPXE0N>Ee06L-<MjB6*C6iFa;G8hKiYh zPR?b7q*W29m?;AT1L*dbdQf^1g$kN6FfhDgfSk%H26dr1C=-CZ#=yWJ0aa(g0KSDC zEGh{Vvt(dk$YEe$0Hqx%s9w-jRyWxh7(me~!veWr#hQVE0d%e*NV5^>fMHOg1>J2G z0F6&$sDZYitE-@5CeTo@14Ri`%p9r?bPtvnRLlY@<^Z~T11e?-6>|hR8Y%`VEz`$S)74(B@23_q=Al{1?3=+&p`nKx+ble zjRADsE<*v-bD%5J>Q6%Bt_T|ZppMl`HUMn(zPY$|M4RjPO$nHw0CD{xN46~tn ztDs__{6C8ge9=2YHB@gd0|Ubbs5;Pj^B|ApF)%QMvN3>e?X72MfGW%f)x2zwo8(%c zVg(Eg47;FW9Z*X^7rQaDGcbfQFfepN#fm^B98|0eDpt(E06u&glySXmhu zKxwBJtgfDc0dx}_C^3NIzYi?PzyP`p4s_E5$jALqv2q3m2GFH!ATdxK0E%u<6q&L! zFo2?AGE`k9D4N*7SJr_~dI$L!6unhYv8hmX)eH;_MW8c}L2)w;>O#_pYu^dI(eogM2a-R0gmyFn|OPLluH9@B_s$$N@*7V$-4OKw?LsVho@P z1XMjoO@HRWqBfnwlSM|cla+y?iE-T28Oxp3=H$w85pjzGca6ZXJ7!G{d$F+fdO=kF6e0V z->lP(yjYaPSV2c+gH9@EV_@K5V*nq#KaF*ImKTds{Q_17hJ~yQ42xJ97#6dF$B)2w zL20luFle$eFq~syU^vghzyP}6;0y}`1E`|_N(rEt-^Ief0J?b)l+-{;YZD6t11LFd zVPRm{%EG{~jfH^$l$1c_VJ!;-1E{3{Y8im8(Ev3=ELj+g7(nd|YZe9uP}4$_gMmSt zg8_UZsTKzV_~yAuj0_Bu85tO+FfuSiGcqv5OtmYGYV9&GFx&yPju{vjPB1VqTmf|}7#J8%Lc0oQL9Jv428IiuYi<}A7%nj|Fgyfx zQ9#u*=u*Uc3=9mn7#JAtGcYhb0u`$a3=9_;7#MDYP6TIQU|7z;z_5~mfnf#cf&)-J z554vjRM&%=+d802TtMwU1_lODlN{6%2DOkuEo@M23u;w^8oi*#E2ymqYVz-6U|<6vM==U`w^=3rn@;b34;$m!#!38hDWRn33RC_w{2Duiwtfz_5*#fnhT% z1H)EU28J!H3=ErC85owbGB7M>Wnfsw3c1^21uFx?N>=ayHbX5d1H%;-1_sbIA)wCH zH5LYj>nscmH&_@LZn7{iI59IYI5IOZfKD6P$HKq>Do8;E=OIvz0kwOf4W&7tZo*s^ z1_n??2ddsdy{)Az3=E*c6Vwg`HH<+GVNe6;7Xt&sUj_yS&=r(s91INl91IM491IL5 z91IL+85tNZGcqt-WMp8t!pOjIm63trBq*~mGBBKCWMDYW$iQ%hk%8e7BLl+;Mh1rK zj0_Cd7#SG$GuAUO9AIQ%ILOGrV8p_}0P2r`j^a^fVPH^YVPH^aVPF9D;y}GNMHWaK z2Gj@!wNXIbM9|ep%peDYPNZjHfZU|S!oUE!n&~Su1H)%#1_sbIPN074LPiFLxr_`9 zD;XIWmN7CgEMa6|Sf0Shz_5amfng~l1H)=Y28LCP3=Fdv85rg>GB7M)WMG)h$iT3e zk%3_mBLl-sMh1p?j0_BO7#YCVTFNjpFvv4AFvv19Fvu}8Fn}(k1Kj|5n-OvYS}ijJ zL)~=C02b-`cZ>`SpzGp5SIF5iGB9v3GBEHlGBEHmGB9v4GJtO~1zoLa%?P>EQ-YC! z0d(E!5on7Q)Vu}tSU~+RP%j14%LH|&K;0)$gEEVOfdSNT1T_jltq)LR1JuTo;9y{o zX(7~ zVSa3oz89#k1?pQ_u|c|1pzaf>y9DYUNw708NU<|8NU}39h=GprW@li~XJcS6V`E@2 zVq;(cU7}$CY7CmNF))a*F))a-F))Cx{NM#m7qKyb?>G6x%D@1+#^e+$0|Tf#w3C&A zVHYa{!){gvhCQqd40~A_7(f@atYu|jSOdCugq4BeKMMoHKTtywbRP*T1H*3?28KT@ z3=Drktw>e|h94{p4BuE77}Qu980z1#FfhDfVPJU6!oX0<%)k)F%)k)H%)k)9%)k)G z%)k)L%)pSq%)k)N%)k)A%)k)B%)k)J%)k)E%)k)C%)k)M%)k)K%)pSy%)pSu%)k)D z%)k)I%)k)O%)kI@tsG-vU^vdgzyN9_f*OUO`;+oxTVb1_n^4 z4%AZwT_6SO9OkkxFyyf?Fyyl^fV(h-EDQ{wUJIy;13HEqbSLIhMh1pwj0_CV85tPV znHU%}n4q_rGBYsfGBGf$WMW`g#l*m{hKYe8n2CWQgo%N{A9R%^=(>J_T*mZOI8dC&~ zA?{{oU;vE~?qz0R*v|~K;0!!R|s^Hx-16+1L*b^Ej9)QP(u>bVg()Qe}J8V0d$Ce{V8?^hU4rE3@6wb z7>=Qnt#|B81{iIXM=PeK^?;dYzz#b`%WgYF+eUr z`N+n=a1nGb2s;A<3p)b?52!u`Wf?XG@MSk2SQ!{Vw**~bWncguN(4Hp33QuH!A~!AS(j{sN?XNk%8e0BLl-XMh1rOj0_B*8*15^85lU385p=gV|$=W{g@dT z44D`hjF^NO7>t=17|fX%7%Z3=7#=Y(Fg%`~7|J4C54vr1FB1d9J|+f+{Y(rD2bdTb z4uX;g69Yp869YpO69Ypu69YpG69Ypm69YpW69Yp$69a<-69a=I69WV223lbz1_lu( z1_nNmTF^iR1Gopwu#=I20dxtd8Z!ffIx_>q3uXoe(5NeDH1;Jk1H&_BhUv^F#KU+VED_#!0?WVfnhTf1H%?3 z28L}+3=FrJ7#MCaF)&f&@(gfUbfz1>aN3zyRv1fqKZGJ|n0{ z1?ua8`i`Kk7-%Ra9aIN1F)*|-F)*|~J_&dk72!OXx=$;`k|#mvCq%)-C`8dm@f zSc0xQ1dYsqM&&?PAc98XKqGIUfvY9V3=9^`5C?1X1L$s@HZ}$Z&`29-WUYmb zf#DGw0|V$zrPpi>40qWW81Az%FdS!NU^v3Y!0?-mfdO=_5@>J@bluTRP;&z`S~i1? zf#EhA0|V%eq%~{|44^xc7O^ofOlD(Xn83!s(8b2U0J=}<6Q~2j#sI!A3v}<&PBzHk z*ltkMA9Pa+=vo#~{{qzC0C|KJG5`h|@M2+QU;qt%f-XFq&A`9_4q4D}9EbrDILyqz z0GdJq1tn-e1T>@r8vX$dZh@}Fs$gSa0F6a}#+N_?B*knD45!%`7|yUUFq{P?cs2%x za5l(T6KHG+bYm6h+AMUvpc|;dpla(u15+Typo_j@*&rh-pb-?%EmZvM3=E*Vm#(og zFkA=q-B}qJKn^|6%m5x90uB9uhIK6185ltKbtSVgFo5pm0=1!F4g?JYp_>g;TLdc5 zK)%4HD4UIeA%l&90c0p>L>4rGHy1SE$-uxc12ihjj<5{fhakNmeK5!1lK;yrgK#;_ zRUV+m4`}$m8a$N43o13;SQr>U^9C-{Q)5_^Z9!uSAmQ~)3=G{&3=EA-3=E)(9#r8s zFflM>L#rK7aRln&gT~T8r9G$-P`dqW42v>TJ*ead@j?1P<8GkX24xnI7-%dNCJxF( zpaDNnc?wDmpfVMdIzV=T#@9f@njkR{A5=zy)PeXQH6VFV*$EN@6`de)5WAg$A&UVt zIta21gh9hdvlti{7J+Wcgbq=FS~K$)7#KjK4@Vgo7(gA2_0Z7;Py{RmT`kPOz_1D$ zDbql=YC;DRVIvXC7#J8PPrn<_B3=)w13+~FDA9nlf)WzwZV6BWXfbG*9%}tU1_lP0 z)u8wWSv3dE3eb=qs5=63@=OK>22kAsQU_{Kff`^S{V+Q~U6&=GQ528@&?pJauj`-| zfy6)-f&8|Xfq`K)1ElW*(g+$&Sp&N95jw&GliLU#YTE>w`(|KZ*b5pshYrJmhU4~t zPGSNLoI}N>8L}7{c7W!;85kHqV|XA1prI|07>EXq>4C&{K@9;7y&QmRW?0~1VGkn%gC(?S z1!{}G1n%fKv3~v}9ZFW%GU5$x>0n|Bs&A`B*%EZ9H3%bjmiGcw$ za>UI9Y3gu6o9pqQ&MN3;cW7H)4HW2%pea63h0Vyo@SBl=;Ugmh1E`1lh7mHp1)AFj zHL+hYGBCVkWMKFJ8meYwU;qsv)G{(K)G#tI6f-g~6frU|6f!a}fQIEjsTef>pUcR= zkOMN0fq~%}bQlaYGzJ%yiyl7WsP6=ou(Of#!uCgXWl^ z!){L*7#Kid0rES{zo1#z7Yqyx&lwmPUP7y4P(lSc8RR^$e?bF=j0_C!j0_B*#t*2; z2Wt9(nt)PJ?}#%pFtCH#zM$~<#=yYvg@J+LBXkl9R9%An45B|l#bIm^{S|bF76T+) zKztTP1_m}p$neT<21q#lfU5Zkr9tXIVt*JI7(nVle2^YS&=3mft~!wGK@AL0MFWxq z@j(h%85tOuK_lUy#TASQ&7j7r0CWffG#mkQFb~u*+|Z#3P~!z;7C&^z0;CSa2H63k zg+Mc%f}mu=$iM&+0F7&a31P3X^9A6xX1UBO68r29SD7Mg|7Z zXptEx{#Bs{gNBemKC^%t2C@XC5u_MoAczm6L1G|2$S@EMv&5N^fx(H9fdOQZBO?QY z1CoXIj0_BRNOpnk0mVPa0FXg2!$F$y@j;G4mPcm0GBPlLLJ@?685tOSpxMv^DTG1y zqJyFUq^2Ge+}?}~3|@>344~i!xe^rApp*(q10Y49gcQWczyP|fI)IUZ!Jm2TD7U zj0_ABj0_Cnj0_B+j0_ARj0_AQAA%eXG7qE%nIFc;z<>~|N9I5Z5||{&LXaV#tO7D9 z3hDrm7-(7q6e^%X3zR!zp;;2d28Adnr+~(LYUNMdAQ0EwqU`5-pPoJ>Xrh78aE3?l$iM(vF$P*8R>8=?P{qi= z09w8Wnjiu#JF8=4U;wSW0adX&Y@n$l3x?^7GFiMB>!-iXWQo@V%_4zT(twuiY-40# z*Z>~7W?HFVIz|SDb&L!QYo`}xv3S>mq}PMEj0_Anp`+a(ZJ?3xt&9u|#~C5R zU!W24{frC@`xqG*_A)Yn$18R)B8I-!GBPlLZYA2p$iM*757G-776Z|sIv>Oa_2fb7 zc0=`V0i{RK5If8gkYkQ9GB6xvWMDV~b<|--$f!HWAkaA6K}H4!kb^-6g5*HM`JhS? zHf#?X&Ib+agNFD)qtKxBG@zmU3(z6{bI_rG(2)KOMiB-E&>A$*vauJ8F!uCI*(_%D zpwV$q$b+KrEp(_Gl#N0B?+lP(@ek0^q+g5-44qObiTqObiU54lzh988rFE#K2&{#J~VzgTz3~8bFD~mWhGEh6$3SK*Lj@ zegUZ23~EkhF@fp_$UqDzX}U8pFgP}akpojwD5+(+QDkcVoLM8@=d?p5lTqXvF3h1Cx9uosY4if_d z$QvMWP(K93hS4CsWlRhVph2i2s2K%F=798qhVkk^!2}wa0$Bpm1kwQN=zt6ZiNQ31 z_#gvI(F_CeL2@8RfE-r|b!auza*)G8>sD)-7#M1p7#Lt?)G;wIK?bx2lf6ybC94Bu2v=nh889UhGr)4J`o1cQcjRMkT_`63pDx#8U^cs%7gSw zV1l%XLG9pPCI*HckOM&rRzQUdNT44&TsDJ=fngmJ1H*JC28PK@3=ET)7#Jpk*o+Xz zpp;tm%uEanpp-w2iGg7%69dB(XsQQ^gD^;LEfWI+$W%~!7&J~lkBNa{HB=o)9yERr z8l+pu#K5qGiGg7ebX%lsP_Wuih&9&(9LO}9uBB01)BW;^^!on z9Z;8z2b2du)ef|~1?q-@x^$o>3#fYs>iK|rL!d4ms2j)0#J~W$e+$$z0!_V~26c0w z6*kCm^`KG|w9J~wJ_`eSmj%=Z0*w=ZLI^ZI0O~t~`qrQhH>e;3b?iZf8mRva>ZpV2 zThJsesAKU8bR!XHWCJv)4q9Cdnuh_6dx1tt4uTf_GBYr2XJTLgjh29hs<(prkIW1V z|3Q67=y3KE(3}7h1H)w|28LsxPAwAyLnw4;dp8pU!!9NUhMi0d3_F+@7>+VAFdSiG zU^on&I5-4~f7mPnX!Za!ivXHU0L>~OW6-$xMJ5J@Q%npDCz%)+PB1Yr9ETR&pmFo_ zObiU?m>3w&GBGfmW@2DC19c2&M(ZJT;^I0J1H(1Y5H=G711Qw4FflN^0j=@@DYyq6 zga3iGkrcXrc|&xdmCx#K7JP;H?uJV z1IPjV(CHvhGU8)qU~mJCiZe4Xv@kO;G()G)K~v?R>2$&A4@+2t>&2NF7=%Ida?A`2 zBA|rw|Nnn6W(EdPW(I~DX2|S%J~IPD9y0?&E;9o|4l@HoHZuc57Bd5bH8TT41~UUg zCNl#=I@I_yW(Ed(W(I~-@EAE{+7vYH>I|J$1x>Mn7EFMqTO&cK88inAntugN4ua-d zLG!eJ%nS^^%nS@(%nS^k%nS?;%nS^6%#bxNpcx{N#h_&X3eZVK(9!_V1S4oL9W>df z#|)Xx1j(yFr=&oWFreuvC1wT&n7A@%LI%bG&0lFi6@zGyMqMaho0)+DbR`{#)?tRs zb(ugz&WM?TK_AIbLuLjB17-#Wm_^FW3=GE1kVOfg= zK1e-i9v{R9VGtig!^{GuC(wL8$TCn=!t4Th4kV@kihr15kk3JyVLkvQD$qg!kQm6| zWaxqb(82(aW)KaM1Epxt0s)X3kcFVcisVCZVuP6pO3)xrfpQHY%w0 zl)*vfgVxJ{*u9_`2WAEa&?1&LW(I~AA?U<3 zNDQ<#0JKH`BnMhAun06=2I^8ULDmo~U}j*L!_2@ipP7MS9>`MY6e?(q0W1taE8{^c z;X&ae2#Pt-{23^rgIe4mgFzO8%0tkST@W8+@p3fBfW%=ASjWu30NTj~Dwjd)6+n&z zmA^2Dg7kydFo5)c?g#`ejM&P|zyKOD-vkP7(3YQd>Z^FEazfHYkP} z1hNP;YznFbK$akjgDMA*1t2ky9B8!#NIl45pj8(jF_0Wc4M-eRfq=y7VS_6cSN2GErIQDz2)W6Y2>05BTl%Qv8! znVEqBG)o1Vs0Qf=?RWz1;sQAUlOC_9!#n2b*Q!~<_&zc-Fo2e@fgCrP zak^CvOOz*QVi`0i3z|Fx&Ch}s$be?8L443sIM6O9(6Tttygq1$258O}v@{O3L=H5M z3!2Z>oqo55MY-OPg@FOIbQZK>1~jn_S}_aagOZ{xXe}Ugc`b+!!XPow zpoSi(kq4R?gRx;WNUQ?1AAx~^;YT3IK@1FBHql0Av85Jv3P#iGYgt6M&!}YyVw~<1 z!YaimHC?`*MbZ@1vgTu8Xpjohp1Yxf$w!INM9)wUwCM`e4Hsl!Xt3bxnPFH_cwLFn zRL@Wkw9U$GdTu?7xU8WisN*WYz|i2MQqALDxAC|VW1NAWiJmb7L(=qx^(>N%_0xBQ zsF~BR*0UHhuAR==z>?0mV|rl&izMUe>D?ge%JlsWEH4=~rt2YkS}Z4VrSd-EX@NOYoKSqzyK=iKr#mT=Vwk7 zuQg?2j57rJ(|}>h^tB+fLFEw0k21zW7OEFi<}xwHnd%vVv~HUI5afoV(>FG=h)ox4 zW|3tyny%l>V$5hbJ-M01mk})E3w5hBXb~J}=ehRP#YGphH^qQ#(lgRCWMJ@^-uRP6 zgbnPTnCZSPEWV5@rq6C+k(36ls^DT^XlUM$dS1)Ye)=^27-sGXkO%HnIv!2@0%-VmDb=Krq= ziQm8qj6n+Oc_3PCKOfk5O29OOi80O`qV?$Xx2-Ia(&D@jty=mXe||)ZfFj0R5A5O# z(-qrTBpDw}w+2y3(?i=>j3Ln^Hhq2@i@EedK5&n`;Vh5um8h-nHJKPet^%!^yfFP^ z8;c~+(uO`nQD&OT@r zh{?%mVVnbwKSNNId=LTek!+9@63Pit=Dz~f3R)mO-MfoLQhJjpL~B4@&Yn9PH?IN5 z2-w4Wr`LC}_%gaoKikD3$vAWR^DY)w<-6hxplQ#B@8S?AeK=BEFz5Q2%OD#K!0C1E zbpLJ^Nk*pWf9+W%rTZiqz~>;$TQ%vmnCPWeCdN1mNS2vBeQr0XV32}%^=}U2h5{v* zTi|pL_M4X!#OXhNRc9QEn6i|K(O3$+@3J9kdSNe%q;#bec<*RKO61`~^Y|CAGBKt| zF@UyYH?&We?_rTNT_Ods+>qpjzV_2Uv`F&QVG$qvopa8O!N#581kn(_OVDZZk`_9$0Et}QgM1& zAB&L;XhafpT*iaTZrY-6M7DyhGBnmRG+(DQJ)xgPV)~sv7AdA(O4EPzv1r+yQGz5A zP`4UX+EzB4WRbgO|U|?tnG5W9|N-(n< z-7F)RF);ly@~RLY9Emje&egLGWV@lB38++t+Rmsk-FG63G1DdG=}i+^j2QW*Z=J}Z z&8Ry4;Y1cmrX}jz|4d|wU}Vgnes(&GBxA+&{K+hm(oGtWM5J@->YKF}gk6~!4fTu+ zK($Zr^w_B^l8iH^ub;*u$+TEwdfrSH37K_J^@_Lk<&}~+Y7}rzFa&T!79MT*9)l3>>3@` zr-#2k1i8l03>3m&G^Y1WVUdt#)P$rk?y~gytM~tDGcg)~3T-3sK`T>OBpGF=-=4xE zDXpssDLnmdmHo;q*rx?D3G6KfyXpK>StO-#djuLlz1w4_vdDtMt9lxXBqP?~V7j9* z{mC?zG)DgE2dA(|PEVQ6BE`61di``3UsyOp^ufY!yVML8IYy?R2Gc*xWRXA%ToW8Y zXUf3fV+aYW|3su!yl3GB7}lgx1(bj7ih`XR{bf z<2C@Ie)_lBEK-aRHdL1*e(NFtf5 zGlxYI?Ahreb6KRAmYGdAn9Cx;7yxpn^*yx_v?@oH~8}d=^QWrB)0K{0s~Yd(UijyFG)jxuK+5EYPvGV7Ouf3A_gfMgO(j z$auoSXrO0otY^x=@YDv z?_bU$X=-K*Nk|3D>~=I&zn+g!;B5;&DWakJP0|OR=9P;OGKtf9SFlJ*m)k;0mX*5` zUM+4)D?=#go9?)RMUrvZ^yn2Vl1v9|r~g^WBEfXWcKU=BEE3W`Y{AD1A{yRLxc0S-*+$WnO}@hS1?@=q;A4=Z6pdJ zD2-be#8^g%B{H~O0d*(L-HbxhMOU#H<7u7=xIs$$U91b2u$)}J5u5-lK?&fu%=Efd zED|y?ZjemLE)p+N{nBYYxb*`r=GM7Q-?WOQfzfLE?A0ui(|uO6NSQjjLo(i*|I?(t zEVZ))n`a0z4|c?y>%^4ZmBr>PU>R^>4%R=L(PR2VE>=m#py`2YSR@%^re}kwjOq75 zf~C{vgLse(z}P(f{$mz#7DEPDYMwkjk(*VLamjSWwJefM+dQY+tYwj4I_Wum12?M# z(;d(01#4L(q(6B=O2o}-;-WpXlR=GsP)F7fbh6rCkp710A3^$Irb4+_yr!Q!ja$0` z=)5zqKBz)Qh(1P+>598pB%wTb#%q{<=nXxH?jCKc1~ZonMG1&YA~e0jurIXqdIZhYJ{Dz=z=I@ zgaj~D8)NwN-J4k?8Iz}9-OOSP6P!9-c?+D!^gCpF(H0gXm?R{WO>x`j5(?=IvOJz~ zNX4-Q)Cq+4qT;6WZe=lsh8&cV(G7#dr;JjS;fCK6tFQ$H$kQ^%!XV|{-QtP^>ox5_ z8N?XUJG&J&{oYo1lrTZl87x-d^sVse3ENnVV0@?prXSnJBE<-aIY!gzzqheSGI~zG zc!ouiF?zcGb{0uk!jQ%tX}QyDx3d^a|BrygdsH@~ijh%M0>Ufe(@%p;f<-Pg>FZCI z+`(eZ=r-MV2aBY1Vicqrl;ocp$CK5i&jcEM0;h@W>5V&BBw>kQIw;9O9nY9HopC>l zBxBw5>b)$IjFYDy+>M}?Ob^_Nl$Ba`BBfNQ3m`t6{$?kO2`oP*PM>&^1yojmG*8dl z#Ucfhfy6x1#rWy_cCi>SeT<)OaD+vIk##yZ$Wp%Pi6AG~Pqzp0qNo2oh3*nYXwHPX z66$oQK8PUHa0%%xiQsiR4Z1R|aWnc4xFdoRs_}t5 zILaac3mBp4x*%6+Om95OBFPA~3mRHbH+oK2JkBBsi-qK5Nb2RX%2HN$6TXLTF(V{Y zryJ~Jkz$0J4sjAx1{MhrbucAR9@Nhe9?b1#i&G)Brk|IiR)gQ^SqM81q(bW9M63Vq zw%6~SMacYy_|x<{RE65BHks`TY}^PH?^40%NHpxs(&BGmXnKf{fw}_fdamj62UsMf zwbLNVmlUQr@z!5lfl!VTPSQjM5G(>v!iEXzYSJYk;SF^-ikVo=lHQpC=^(fkg~%_9 zux?_4HAI&_B&V-A zjGj3dv!?$(%pxgMkp*e zWd3GP_dCiWAuX4~z@Wy!(6H#}59L`!PM|`^2vVp*vkWAuf`cD#>_JmMVTE87uxtSh z1!xvTiC2g^i1pAsh2{WQo`+^#Mrb;PCK5=g3e^d99V4`GlbU|;1dAl2<@DPpSR|zb z@*ydoi!E)f|I0rI5TTSao&O|@q;x|*BpCS`>f+YlkK2P#07(eYWHJ5TNfs%X6__&8 z{soY<#yRz?ko8ROONg`vbry;q>;|nng<%EM+mHl3-QYBfiS*t=$OxXTPWjQre|IC< z1PvUBVi~g{NR`^Ra8u~t+Vi1^Rt~fdmBG;_G+L3P6zb}Eb%9Jx7vhn`pG6RiM zn1fpT3=k90EM_`iI(@=<79;7qr4W66pVAEvYPRrzTXV)BjYiY&o@W6KL4zrXHBjfE z8wP3bh_VAG2@KsvX@zAGrg>t zzUwlJ5!1Jt>F+MHNJtCTLUP#F|8G8VNu5$rPj^!XnA&Gu`?Mi==c$ zEdyxjWCL5trIeg=pP3Nq+NS4UVUaXjS_|nnT70PX=M!kZh){5(7QDc?p}YU@obAej zuMjfNYNzkJ!XhEfSqCxvnWHMlS7(tnKY|?LJ)Qe1i==dR9r$R@hDnVwk#%KX zH4y6hr`um;ku+Od2N@r-XAev(>NuH#P;jgcQc%cN`7=JPx!Qn`d0aQW?<$Lg^xry2 zNbo|5Lf;-k1pRtHce}9#QRc1#UBzvA<518)uBKHue7Y<2=XWFI< zTw{?ieFRk@@#~ji&?&Q2go!4Yq4v3+Xt=}kT_0H-*D6sB;7<%yO#1+Eg?%xqIzS9d|u!yjM zGk4V@lYKMQ$!dgCP0cL%u&QR zLp?)~sSZ#*rzI_Z?i};ZJ9W|=QfKG(}{`G58P&PVY)PN z`h{sRd2;8 zGyU{EmX|Oa&fRBeVmdy3de8$FBk8CakOtm0Key$t`yZMhD%0fY^B=HCn&OzkG-hDf z3!U8D7nFIJ>EGoE;KCI=29rDe?E@A`>Bzf<695v-tfy5d6?NybUj ztsk=ZGD=SGd;5~e8bQ+5Fzt@_Vm6-EE3W}b0Bfu z#P@l{-A9*pAynv0Klq46lF@tm?MEz<(wTD@7!(;88uUZ%T3)>EP z6sy&X=6Y3x-$YVyat@@>l$PGpyilWL2SV%fIn(1Fvq&(qOfP?o7+H}vTnq`jK$YW@ zeA9}hnHb|NAq`6Ks1$q%1~dw#_k_jAbn{|JYFqTWO1mWHb31h0%anm3dkG}$4(}4U ztM&SoI8?@ffuVBx`X}&!pZ@a+i#cQDbi=1Cl8hD2cESi)q>3iO^q`gTrr)GnN^I%gyGzZ=`zn)Byg>r zFaV9%`#)oml+j-ase7IUR5AO8&fE@;WFu2OOOO#gOso=&o2Sox#v&>GvIgQTyEvvj zSKf2n2ipqn;xC(i@fojjs;l1$&)ruTppo@s;BNz;7%}bHGJV2J76~&f z^Xlf{wF(SJw?N94gF@C{<9#Nb1{V-UpaS6Bmg)CivPhV=OF>kGUVfuel`jy9Naa}8 z5ST$`*VU)5eFdAQ2Zf>m1H+E#@vm4UrGvLZ>aCFV^DpWMJOGUbLfgvV8Gfi@sD8*& z1UyM;%JknLdpM?xzGl&844Urvn#G!N#&kwrR#1=UEDx)s^tPRl#zEYYi8342PV5JF zXiPxuG4RB-#cfToXcL1i2@Y|DamkEcRqj2IY# zru)8Okz{0;p8f_r!w%w+KEp0OZx49%qKr=qR6Imps zS3}jA9ojE*oBdZ4r~z&UEI> z`Ijpf_JLMUfL4MTGBEtwJ-y%^i-alL9!NPST$OfI(?}gufIwEdFbM5|xZO_ck?@-p zzvRGy3wD(J^u6y`B&GHCKqh?-F~3 zAFA>1uZjRCL(s$;L)~=y_bkTJulGPA==59G2uHR3ps6?LD1*cF-uEo&i~-Xd-C0H0 zjX@!@PGh>j2NnrNr|Fs>Sd1B&r^kL^k(9yh4X8&MJEpJxz#=Kla+rZZfq|jn*EA1n z!6VBKgH{`W%S#58>GwadNSb;dhKxc4uQ7W1ok1o6R8xQ(Knw+kAr0y|g;P7_9jl)q zWTs5l{m3F|whO92dw0ntvHqjC5DM-=W%hVviTwNI#*L7HPNGep_>n~xw9aC~M-~aw zW5*$NNk;Ly|G)TGXM$T&;9~#6aY$Wq!Biw9^3E4_(4;D;MlfP%p8oeEi=@ol6Ob~z zY~uw9A*(A1pq`qc9%wV@{u9&fzOqO#-8?Z};R}ld)6)~vW4^ISFnv5Rz2Os!1S8XQ z{U0on(h?^jd8+GPO!fUeTULP#Fb1vOV9=d@_7jUSTpwhOh!M!q7v8WKF+v=`$T2%SR@%OreFNbBFO}`TPFMzqz0Flp0VW1{^wUghC@Oh%~gzG%Rm`0_X~@$ z4EE+LC|aNZ7}V>>$sE@Ai$eq;gZM@!4DQqa|6q|c zO@Q8QWIQRk>fqc3wM>k`7a-+D&IL%B<9;A+dbOx_5jeXW>zOk!lu!5l$pT$=3RYMN(!nl)GKx=$#7}{yhPgH3oWy77Pb2PG|YWVgy+rDkf*Z zzyP~;DSyU!{<;pI=>m*emmt-g)%5INERwKE^6B$_u}Ia|SV0OvDN$9yM&;l$0*ro_ zA+5;n%aA2{9lMuZk|@8ZBfyw@8PbX@N=-}#9gH*K`Hg#$6OK#~V4Qs!(qqP43zVaAin3r>U{%;mZQ<1BX@y*kl<-P2)Jev_s zGpnnRVO2E+F?0Ev(7Onkr0IKqgWFiwf3s+_HeO|5keaT4iA8j}%paBv>;oR>R!rCX z$0EUWaK-dBe_14?L#{!JZk|c5A%ZP8+!5}|ntuN;i= zK*Ci__?eGJhsQy%yTENks3m5&RUBLaiF|%%x7+--Z$V3LKnrON7#KcZpI-BiMS_uY zx;!JR`1CdZSdwgAZ$MOIH4oIuWWZ`3SSDz?_kR{i#)Rqp%&d}(`BN{lf+nHfGqQ@y z8Zh+TfW(T|*8dOg#XJBFE1H9Qtqk+0pZ(7wX}0kOq^x8}+jr#cgu*-ER0%4T7>?b5 zq@l>FC40Y$-dhLuJ=n&lH>S$48ZmtrpBlg_!3fSxqVgts1`Js@Asy^vGQ$7nzT}sH zXaTjpYo^X+HHJFQY3gfMNom|Ib#TB)N@EWTkYQjyPS0UvHDNlpVmhc*4~p$QjI0u{ zP^g>!o{?436qoOf7;Nr9veSzdUHsRsv4JKVOdx$D@QQL!);3^Z(4QX8#A=LTiSBeq zP*8){Xo}03GT?S8qz5A*jol$2zaX21%g>+|3nY4(&=SurW>y)d4fnVIU}m*rW`wMr zhm{SCkR>p9*7QKu&_fsCNXXz`VFO*pV|v~ik|CyT^Ipthe&jp2v1x3eXK3;aD&zC* zW8R(qvcupK6P#6`t8>5$j3l9}grv1?AnD!w^|ehO%CCaT0?>*@0|o~0IwMKw`XR{L zB1uNb@+H{R44!pPEz?13d!TE8@GN(NEMt=1Z4GJd|2HZ0^H}{#0PJdTWe#321Zw_4 zmk-4*Vv(HA$Hm$-;A=m&O6O}p((aZOkE;01*L?wJS#VfeP6ziXdNm-`*Gc z-U2G8^}wxFNZ$jr?ox&qwA@5vx*0F45z`^d=~*Cp^MmR0cv&SF!5cdyW%fOQWalr_ zPKLdgUvve$t;0ai$cW*>gXwR0StVp1J%H3N>NU#7YnDdd0__?x0+$}29!yu@W0hcB zJKd6xwULp1`fff}W2Qq7r+?sMm5@385K`AXxKzaZSx3SKF=X`O;dB*#RwJg552r`) zvo@Fo?}3z0zux@I`?mVvNw87?Qg0NPcd+XrTEP)Pn&h z28M*k5Ucj|Z@1Zf`S2Ey3@B4FFyv0Z3o^UvF(jlG8{Vo=jx*j5QUG=eL&9`HK~`gF zo+l8q{TCVfXJ)oeWMVYd1C0POFi1>~7i0w$--5WP=??^1{g}Q#oo*n+Dq+g>43cJ( zXRUeRke>qDYha`Yp2!e;265%8ZGZgN+iCx0VFZmcg1VB*(`$uTjTud*ZxmvcWOSN- zT8LFrI^a1(`BT4lD=*D^$N*k&3|=7?yZyfqYakDeNz>6zWHAYR}o ze>|@(oyAE6z5!ztNaf`OV`FJhm)8)~6*pqo@p^iJ zD60`;;`GI$tj5yDZy{Z;{H;r_Ec1Ev6`Gce85laIe-veX$+Yv`^gCj#5;BM1L9E{L zQqJc?#b!`-Zm4Gnn)^8WZn}UttAy$GcaW~hO^4IqY}TyM84CB#Mn)GRgw_c<_EDc^lReTg{hA~P&QW6(-y z_eV(FEZX>=>vz>Pu;(Gw(}|DMYb01DnAT}bpC-X-B#mW|1GI6=fPuke`eO-Jp&cV>gOE2FfD_pn)`okKd-BlVp{U7XJ{W?VUat`w^;)6ehI-$=1aFxpRNm1Z?& z^qX!e&FX9R`X?k@`e(Xle3D)Tnr?>%{+FMSRM5AJ_xY^F3k1Pl06XKv$LV{dS&bMQ zroWeFl{Cd%OAgs*WyEmx7sLpWiaKeP1rO#x^OgYv!{X_-GOUt}Yo>?Gu%EDoq$0F(QcE!Bussf7-zKnx3P(0R8e<;Ta8j=4k$0{ki^gpB<)?$A}+Uvpzcd$BeDDMByFx^m|Rh;?G ze}?Ja@~qy{dJK#Vp#3M0Iu_|ZFHSB2s|6QDV3$cUnomD1&nhYHz`)1=+6MQ2m-MoG z*Nk|X80$cBW)5mL{Fet6;ZOx@W=`nrYFq@e6x8ZAWMGJ6U}OOG2B(L7U9Hm@{|~Iy z0+c~Br~4|fN=lbN6`ZKhs7-eh&I2m|HEJ2^r#C9FN-}m$pAAwsjRA6>EMM26BF*cc zOuzwT1gd@)O+T-|DrvTkff2l;N@MMn{R#a_XPFr5O!dq`Htl9$1l^_A&=#IeD#`SeVR{Zo;THx*27U&H z2I*}T|5q;9B>_!fmJAHc)8{L)N}38WLKL_w>`fQkzHK>Jfw`U~1A`(|M)=6o34fMx zTm#!-338vo^tXzvlG2m@L#Dd!+cIq4mpV%k8XIN|3=Y#3l~_Sj#23|BMW+WSv9d6& zW0;ds#RGfna;9K@6lwHV9cD(2=Woa6>^M=r~g%Dm6V>s z0|FMWoPu6?x@8o35^8F>2pDD1BaZ*^!2)|tdP)x$&0d>Ffa&B z57cATo^GJQY6I0hy-kDF1j=R%nf_6URfHYf?14n21Y^l`PEA&0h*_XMW&R&XRX5?= z(gnL@nVZ1Hv>B+KkvY9k6DhDDz69;SIiSg!#)#@Lki!{sr}G=KN=`4)Vl~lQ3@ro2 zTFp2XsxW6UF&Zl9DuDK5V8-Ha?&;UGSQQwjO#iOM>I-!|G#Dfp!G4sPK2@7loY7+X zT5VR)c41I}Pk*4zs>8@MomYp|8tNYw0|tmcMOn=m7+|T{jDZ0h5|WHU(>Lm%rbDQ0 zG9mnsf?(Tuj)_cMkN<*$0aOk^O_7}LtIO((=Ie{SDN&@U*V_YT}GB7|B4k*XsnXZ7UQcz}PfqC+P z0HoOLt0@rPQLF@7iDC+#F^75*G>l=b4-O!3ghGt~Sp3(h;_3b-tdi1e#UV+NCvJ|yGo3JbL{e0rKHr*El4+;-^m!(%5@zx?klNig{X$Aj zdlqN|5U2sHXUK3=9Fn-!XRf|_MtGkX)CfZchAZOJ-&wOt$UGHi1n=FIc(`K!v;C`) zEZMwex`HXI1k5#9X5>KgZU&&WPvA|v5JzEex`M)q0Wz`12-)L1{hcYRlxcu8Bq1(* zSeiYcqBZC+NL&K%H zzcXLW=;niH1x>_&S|Y_}tcKF)?JoiN8dXTjoqo-XRfg%%@9AI6SdFBMWFaB(>|lmS z(Kkm8aIIyaXU4!_Fx}CdRg$rNdbByKF(b?Leh?2LIQ@`0tCTS2xKr2k_vWmM(r@G- z;V)(2S+wn-D`bZrY(UsEmxMg{=}hK6Tz_a)`0<>y!=dcA)L_31ycrw*FUF! zvSBrXn*|9KEY0+Kbx2DDTVP5`VKn>Wp#9CD>9=jcVf59O)mIw5KPCWbu7ek?bWD%6 zW0ho-n$GCRD#8ZNDP_|qf`lxlueM{AltzyR0nj=rusVp7W&UU|f=*a$;8^MI7qOIK zKe(l9pl58t01budI`*s?(s!VTAILL3iVJ-A4$?ISHz2g9ueWEFG&R$Lq}-#YUu~_6 z_bEiA&$SYezC`5ycdT>ny#-|?(2jd^1_mbZ=>&|v)5RTF(-|$M*E>Lx-v=jFiRpfh ztWwj@IIv1dqjyxn-Um0@!TttK-eKr8Mep|_G+_x6V^B?Gz+f?bt|P0Yw3G@XcvYn8 z+XT*KJEpAzM?1I$-#7iDBdaeX+jMy+c&LMxMi?-lX9RFKgO@Oz{yjaxflHp)^5YlZ1T|oWl!E`%kRwG7_>4na$l8oWgyPa8IGESRb z>cYB}ap`nzS5`^s*G7=e$gh*lk6!#`1uYMNHY%*9$Gfs_Wz3%rZr?)Ya3vVSr+d1w z8Z$1PUhBr1j;CG;pZ?#CRnjcol#xN4fuW&)dA&)CQ8i?_1h~;FV+Kjxo~!i&$~M(1 zAR_(sp6Pz>tVWO-anSNvebBKf8{Jt&Ij@^RQVKX%idh&kFg!PdwC8zaziE`DTucHR z13rD?qZy<^SiXxfc`n-;&}KhSfoaIVuy?ww2dg9`Pm9SJGcf!yg9O42-lheUyOTj{ zutCYp2v%O}V)X{N1jSsL!aRMW2dkp=KMP2CJ*(kD!{o`wguo61*8#lK-+Hi08Zz&P zj9&>{){xIt2?r?vZQ(OwV0do{=_%-46?w5w_S0Vh#`~6x3tQ<0XtRUf# zDeGmn`NnT2a0LU-)n}}x7kIKtm_D$A1U%pJGfM-f-vxyWXtA0p1A~J#q&5)c^NdQ) zxNZgRhk(ZieWvgAWHn}7GyS6{t0W`$bZ#$JNog?~NB}>1vrFoL!rzPFA${=JrpI)9 zFIGuYYzv?aE%b~G7_hD6gvgXkH}qu{Q2?vLwk8Uq3cMytlIdUj^gCXx5{%%*Pr@7! zxgBlO1-x0YFM)!n055?OW`}UVYoJ7|z!qX#0tHcpZKW$jMt%BfZ&pc0@CqoH6TY=g zf8fn3VTx@X6hs%cb-NH5@X{z~0AO1g1yKcF870XWF}>P{)s@rQ1(IXH>(7Lh3@!Bx zjTk(jOK>xH+N>~P%Y6n~gawg#(?0#5537VU)>r`R1;+v?qP=~=qqqmXSVh>uGXL7A zH~7MX9BLJ|CC(759<@zB2T~3TaX)8F{9N-%;0QDnNLKdU^W%k+i*tdi2c-jFPyue~wV z_kA7cOdHS~m7W1ZNz4VaS^okA2b+d%D`~ld-?}|Rv)ILKGW?2SS8G^`#`dh{j!&TjO6mZf^#hRl&pt7 zkXn>i&&28BSC>F=egvIRz;NAXdQSkWgmk4ZL`9L;&UZRDbV2(?!2^5@3|-Ur2Y@@T zU~ip-?tstuS<}E`zttUdeiHa_D~8<4BVgg#Vz|b?@ zF_2Y~al!QHKvqeat^SY(v3}Wu37ppy*CN!N_Mbi>kX6F$p+BT}DOX-3aKEP}2chDJ zKO^{vmeogQXaAgSnTL?M5Hvj@h*d)7W)Q>`{)=ry?#NscLCmMW4w|k5Qt>Z{5xjs& z+r4j!jJMfGa7Pwg+(OJSlBo}d6z<T@b4Tqs;W(>H{$1}K6Ke+3OJPXA}@l(WHG z2z~9y{ppIKtn&5e1tC*Nw?nI!gs)bRyd?a6sU)Q&o_Wl*c7anF1-Ex35$|M&6cYM|Y>W zJIdr_7MG;vF)#$EAI-hYw~lFZ!t{fotnz{h6Cv%UWlO6Xt{;2AJufkBgjp+V)Fh-k9elXqK>LA*2Z_Rd){b2>%J za*WE-85kJ!_DQ>}4lm|>^$#*U_5T~YzDlyni?SS}f|N7{hVa-=3shr|wtoHxasEW5 zw|CsGJTnplDacD_U^uw+!gD!8v(^ulDV(8jVHqhgQ^+5x*lT{|9Uu}?o3 z#wwpUgAI~jUxjQEH81%%dkGt)BxK$u%C34WFlQ|rr2e+d(ufzG^I_sHsQR~RCT9(~ zE=@be2B|I!UJAb4klyqsxwy2ojv&u83O;3bSjUXy~`a%#@ zGW{TgdI+HyBfu&ZK~(s3#|T#W`Zrt<=lQmI8{}303;`KmQe4JxwVL1g>K%EJA6$^c zdfQ%vb?$=(mz3f%qm<$@hAl}io^xE=cOIKO$ay+ewuu34lkCyW2gw;F7nj8^&pak| zsGDgi^Yn)x=P*xajAWH(WS*`V$tquuZfXhC(_dFuKXvHcRD*76dTKs6@cp*`e!05Q zw9%6n;_9EiGaRNby)z|*7vjs)Jdb7^nVFWKzzYe~m$}jlq;@=IEZ~KdaNZ9UBmO;g zj1H~hg*0O%gbH68T|E7z18Sgi`PTTC#;-R`=7qG7cCl>vQ_XmtZ4oadR;>AOl&`QJs_N`Uw%Y)W$u*Av diff --git a/packages/atproto/domain/get-moderation-queue.ts b/packages/atproto/domain/get-moderation-queue.ts index 509373b..177f2dd 100644 --- a/packages/atproto/domain/get-moderation-queue.ts +++ b/packages/atproto/domain/get-moderation-queue.ts @@ -13,5 +13,5 @@ export async function getModerationPosts(ctx: AtContext) { .leftJoin(postScores, eq(postTable.id, postScores.postId)) .orderBy(desc(postTable.created)) .where(isNull(postScores.tagId)) - .limit(50); + .limit(25); } diff --git a/packages/atproto/domain/get-public-posts.ts b/packages/atproto/domain/get-public-posts.ts new file mode 100644 index 0000000..3067522 --- /dev/null +++ b/packages/atproto/domain/get-public-posts.ts @@ -0,0 +1,24 @@ +import AtpAgent from "@atproto/api"; + +export const GET_POSTS_LIMIT = 25; + +export async function getPublicPosts(wantedUris: Array) { + let remaining = [...wantedUris]; + const atpAgent = new AtpAgent({ + service: "https://public.api.bsky.app", + }); + let posts: Awaited< + ReturnType + >["data"]["posts"] = []; + + while (remaining.length > 0) { + const limit = + remaining.length < GET_POSTS_LIMIT ? remaining.length : GET_POSTS_LIMIT; + const slice = remaining.splice(0, limit); + const res = await atpAgent.api.getPosts({ uris: slice }); + if (res.success) { + posts = [...posts, ...res.data.posts]; + } + } + return posts; +} diff --git a/packages/atproto/index.ts b/packages/atproto/index.ts index bd194ce..252edaa 100644 --- a/packages/atproto/index.ts +++ b/packages/atproto/index.ts @@ -3,6 +3,7 @@ export * from "./context"; export * from "./domain/classify-manually"; export * from "./domain/get-moderation-queue"; export * from "./domain/get-or-update-follows"; +export * from "./domain/get-public-posts"; export * from "./domain/get-tech-following-feed"; export * from "./domain/jetstream"; export * from "./domain/jetstream-subscription"; -- 2.51.2