From 6e7764043d2173690d85905e255014565579662d Mon Sep 17 00:00:00 2001 From: nzlov Date: Wed, 15 Jul 2026 10:38:34 +0800 Subject: [PATCH] daily-wallpaper (#8) Co-authored-by: nzlov --- daily-wallpaper/README.md | 10 + daily-wallpaper/daily_wallpaper.luau | 278 +++++++++++++++++++++++++++ daily-wallpaper/plugin.toml | 31 +++ daily-wallpaper/thumbnail.webp | Bin 0 -> 42680 bytes daily-wallpaper/translations/en.json | 9 + 5 files changed, 328 insertions(+) create mode 100644 daily-wallpaper/README.md create mode 100644 daily-wallpaper/daily_wallpaper.luau create mode 100644 daily-wallpaper/plugin.toml create mode 100644 daily-wallpaper/thumbnail.webp create mode 100644 daily-wallpaper/translations/en.json diff --git a/daily-wallpaper/README.md b/daily-wallpaper/README.md new file mode 100644 index 0000000..fbbe67f --- /dev/null +++ b/daily-wallpaper/README.md @@ -0,0 +1,10 @@ +# Daily Wallpaper + +Fetches a daily wallpaper from Bing or NASA and applies it through the Noctalia 5 wallpaper API. + +The service checks on startup and then every 10 minutes. It downloads at most one image per source and Bing locale per day, stores its files in a dedicated `daily-wallpaper` directory, and removes cached images older than 5 days. Repeated failures are logged, but error notifications are limited to once per day. + +Settings: + +- Source: Bing or NASA. +- Locale: Bing market locale such as `en-US`, `de-DE`, or `fr-FR`. NASA ignores this setting. diff --git a/daily-wallpaper/daily_wallpaper.luau b/daily-wallpaper/daily_wallpaper.luau new file mode 100644 index 0000000..dce80ed --- /dev/null +++ b/daily-wallpaper/daily_wallpaper.luau @@ -0,0 +1,278 @@ +--!nonstrict +-- Daily Wallpaper service for Noctalia 5. +-- Fetches one Bing or NASA image per day, caches it locally, and applies it via +-- the native Noctalia wallpaper API. + +local CHECK_INTERVAL_MS = 10 * 60 * 1000 +local RETENTION_SECONDS = 5 * 24 * 60 * 60 +local PLUGIN_CACHE_DIR = "daily-wallpaper" + +local checking = false +local lastAppliedPath = "" +local lastCheckedKey = "" +local lastErrorNotificationDate = "" + +noctalia.setUpdateInterval(CHECK_INTERVAL_MS) + +local function todayString() + return os.date("%Y-%m-%d") +end + +local function normalizeLocale(value) + if type(value) ~= "string" then + return "en-us" + end + + local locale = noctalia.string.trim(value):lower():gsub("_", "-") + if locale == "" or locale:find("[^%w%-]") then + return "en-us" + end + return locale +end + +local function source() + local configured = noctalia.getConfig("source") + if configured == "nasa" then + return "nasa" + end + return "bing" +end + +local function downloadDir() + return noctalia.expandPath(`{noctalia.wallpaperDirectory()}/{PLUGIN_CACHE_DIR}`) +end + +local function cachePath(prefix, date) + return `{downloadDir()}/{prefix}-{date}.jpg` +end + +local function decodeHtml(value) + local decoded = value:gsub("&", "&") + decoded = decoded:gsub(""", '"') + decoded = decoded:gsub("'", "'") + return decoded +end + +local function absoluteNasaUrl(url) + if url == nil or url == "" then + return "" + end + url = decodeHtml(url) + if url:match("^https?://") then + return url + end + if url:match("^//") then + return `https:{url}` + end + if url:sub(1, 1) == "/" then + return `https://www.nasa.gov{url}` + end + return `https://www.nasa.gov/{url}` +end + +local function applyWallpaper(path, downloaded) + noctalia.setWallpaper(path) + lastAppliedPath = path + lastCheckedKey = `{source()}:{todayString()}` + noctalia.state.set("status", { + state = "applied", + path = path, + downloaded = downloaded, + }) + noctalia.log(`Daily Wallpaper applied: {path}`) +end + +local function cleanupOldWallpapers(dir) + local entries = noctalia.listDir(dir) + if type(entries) ~= "table" then + return + end + + local cutoff = os.time() - RETENTION_SECONDS + for _, name in ipairs(entries) do + if name:match("^bing%-.+%-%d%d%d%d%-%d%d%-%d%d%.jpg$") or name:match("^nasa%-%d%d%d%d%-%d%d%-%d%d%.jpg$") then + local path = `{dir}/{name}` + local info = noctalia.fileInfo(path) + if type(info) == "table" and type(info.mtime) == "number" and info.mtime < cutoff then + noctalia.removeFile(path) + end + end + end +end + +local function fail(message) + checking = false + noctalia.state.set("status", { + state = "error", + message = message, + }) + local date = todayString() + if lastErrorNotificationDate ~= date then + lastErrorNotificationDate = date + noctalia.notifyError(noctalia.tr("notify.failed"), message) + end + noctalia.log(`Daily Wallpaper failed: {message}`) +end + +local function downloadAndApply(primaryUrl, fallbackUrl, dest) + local function tryDownload(url, fallback) + if type(url) ~= "string" or url == "" then + if fallback ~= "" then + tryDownload(fallback, "") + else + fail("No wallpaper URL found") + end + return + end + + local started = noctalia.download(url, dest, function(ok) + if ok then + checking = false + cleanupOldWallpapers(downloadDir()) + applyWallpaper(dest, true) + noctalia.notify(noctalia.tr("notify.applied"), dest) + return + end + + if fallback ~= "" then + tryDownload(fallback, "") + else + fail("Download failed") + end + end) + + if not started then + fail("Could not start wallpaper download") + end + end + + tryDownload(primaryUrl, fallbackUrl or "") +end + +local function resolveBing(locale, done) + local url = `https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt={noctalia.string.urlEncode(locale)}` + local started = noctalia.http({ url = url }, function(res) + if not res.ok or res.status < 200 or res.status >= 300 then + fail(`Bing request failed: HTTP {res.status}`) + return + end + + local parsed, err = noctalia.json.decode(res.body) + if parsed == nil then + fail(`Bing response parse failed: {err or "invalid JSON"}`) + return + end + + local first = parsed.images and parsed.images[1] + local urlBase = first and first.urlbase + if type(urlBase) ~= "string" or urlBase == "" then + fail("Bing response did not include an image URL") + return + end + + done(`bing-{locale}`, `https://www.bing.com{urlBase}_UHD.jpg`, `https://www.bing.com{urlBase}_1920x1080.jpg`) + end) + + if not started then + fail("Could not start Bing request") + end +end + +local function resolveNasa(done) + local started = noctalia.http({ url = "https://www.nasa.gov/image-of-the-day/" }, function(res) + if not res.ok or res.status < 200 or res.status >= 300 then + fail(`NASA request failed: HTTP {res.status}`) + return + end + + local page = res.body + local primary = page:match('class="[^"]-hds%-gallery%-image[^"]-"[^>]->.-]-src="([^"]+)"') + or page:match(']-class="[^"]-hds%-gallery%-image[^"]-"[^>]-src="([^"]+)"') + local fallback = page:match('z(QfkG6seKd#1UJS_hbAnCv*28XX!f7#IYmO}pc5ygw~i z)TJUr=4oMk`+7gAzkB+7uITO*xiux7D@10s@$oEsmfZ#m_wM-_v15s>|HJ>&e{?>4 zto*0?XZ`elkLR>MJb$z%`|s)h>NnCqRr~!q|NCC;os<8L|K9)J{OA4I@n7s8{%`#L z{jc>O^FRL!^sn9jcK_l2;=SMgKl$JA!~FN^pRymge_sDS|Cjx<`l^5F`)}62{P+9a z``_t5?0?5U`hTmYvEJ+7%m3!LmH(x0Qvb33$N#^75B{HB-}b-rt?Ym2|LMQ?|ESm5 zf3yC^|Cj$0|6Bjxe&PKa{Xh9<`tSeW!2h>yf&9-}2V2EI%m3$pmp?lHhW*NT*?*IN z**|{%IsR+?qkrOmieJeu{-^Ul>3`}!_Yd}``p)$m?boS2^Uv_>^w;$l?L+Oi|3ClV z^LzTc=^uB0YyQW+_y3IA$NvKVxz@JSiU0Bc#sBsEyZW2;YwNH5cYR&?v^jtOi(f5O zr$5=h{C~Ut)c?i*cKQb$-nx4`@huxUG=~IF#e1De){$PH{bus7oETA z|KtB`CF77uI~q?j*UpnVv3c{o&pQgN(n2jZ2uo(tZn1B%MVR=Xm8rY%W=hSeu9hN4AD>vVW!KOeG3wAeUV5p|>W7wrPfItXW*rX7ZQ1itDE#kX6^6Hg{vTwycBXSq_SJ6lmaqKo(3dxV zMaI|Xr*sX(4Zg&;eJ@Z8JAZw~#dU8!on(4<_HpQ0_WscG^Iuth4lr|Nj^?Ncdf3z| zRrmO{d0@hvmYLVP71_EMD^4=gI=-kP!y_qaw#*dikVlp?pDfLDvX8vG=3sr2flniY z_UgK~OpChPj;J4Ro}4lFY^cdDiI;DK=a&S_t+i!;y;Gun=K{f#j?Eq!H$sb>p7Jhu z)HMB^bVt_9TIZNa52kO`PxPw_^SNY?&j8s~#Ls4q|-$dbeKY^4=@F(c+d5Y#+=JE(G??1GPTJs}6cTnk?sQJD>aN^9texi% z9&SlKcJ{}i%a*FM*RL=QRzB;NnCO4IzSP2JcdfDFHvUC_8LqDTmCVAdtI=feyU6bU zx7RYeZ@+mYP&@nPr#(^Izj6P(^zFA}@ctvwd)KO^lpFe{uKg)26?@8p;qdu1b-{08 zCp|lUWxpt0*<2rQKlS97I&Q8xZddfSO@5cf`NV6B z84qj^;FcDJ0>;l#XAnCt*Lz)mD78lTO{9k8TKsINW<+>ZDj2C zsB=nUl{dI1MX(4YTIYS<-p;izbl1Y}l@l8dU7XxI&2_J~l)m>N!P&Vi>C4*^o7S$D zs-D34XsdaJ*!Lqc?%IjvDaY1deWLVdlWX$X$4yV~oX(xDi;b?f=?ki<+|Z z*)%CDbsB@;1TroZpfiohLL;g58y)XMSLU)z=P|6qlvW%AxGXCOP|X?khcR zUi#I2$HUXN1FL1;3obSZ$om$rdqZW`_7lnlFYC66p5d~{_<7>(+JKViIu{?eC-46U z3MN$YJW*+r>)7|u{IAC{n~jeuQtsaf6kQ&??eaRulYZ+9mjp2F>Gu!)$s75cMF%#g)>}m%op|cPb<^kV?tec8{nMY+xj*aijSH7;<-#w>D;webwU1-#?^RNd@UiP^BnYJ_kwyj|?=TfXM#;bG5PgHoI zcAR}V<3?ADUo3NuHMJ-TbZRVp{{Gi>B~6*NtuXC3Vs9Rr!_>w25n`bnO&XAh=FZ;~0(gmLb&$)SKMu`c8vE03XPT#yaswc~iS3Jcf?&NjF z%|8>|rgIcb|I6j z(1Ywv%jeC%B*`xJq49=y=jG8CTaw z);}&kvktFvJNf6$p*?q2#zdYs*|JH$y(3Gksp7ausq5OZD_5doyT3m?`TTm`gbPS< z{qpQ}^M)Nu&lp~GyKALr%Vhj9^Ov2;x(;u3Bjd9S=Y0kDTHmyL%;pmuq4Dvemyp9; zhhqK3_1mADdVGI;GgwwzG5b}D?F-=(*->6apezq6G;;Kwmfw>0Ja#VWSBeY5Jk(~Sbpg(5817*wn|7dEdmv+h^vi4ZY^Moqa@ zVz-Wz-S*+${pHK`^eYNZ^2J#jTa;zx+$OHie;?j`l*_%(-mU@cRJ|G7^)sY}Cce4F z!F2Yww!PyFr@Bslc^kH~?7~d3@=hZ5EccIJeX?&wW5dZ8OC$DuRN%;&C+WWOx1)5l zeo?rbqhj8UnCnk%UU@Wc=G^jQ@;?y;W1IKv(=C_B-`%Aj^6J#y#b@H%?cT7tvZaNr z%XJNOwBH%OEXJJWfV+TYMswKOiSi3Bay-LQL$QBI1SW&gh8XWE|Vc;4?{w{mIO1CANX9?W#>c8%TS zVfxC3fBMr8Qt}&~yvuNWJ#VhdSuK-;XIXze2w73Nv#;6aoORD-Mi>0Ga@ypWZX$hs-Y1QBPZu8!_?TC~{b|FWvcl~LkAE;J z3f2nAW$1age7e7$#InvKNhg$j-UfziAKUPiEAnfagL+}5@^3G3k=t8--RL?b!x;7U z<_G5tt_kMNo62s_un<+a_NdQC%{sV!vijT0%>TCkf9UtQ^>eie z&y%n6r?~G{AK-d#u!AAK-N%As&Ee>|T~CEQzVx zU(SlUBIjtYG{abp_xAejDqD=DH#7TeXZk9dICJeI-!B*X&1!F~d)iQPcK5e3#>mWz z{?|Mf$U5_FS%3N2!xks2A}OA;?sdfrI(Pc#U%$6#{_3N}UQCOZZul*FHJ^E_ zy3+CRP2GvQ+Ztn??eFMCcrZH3Ezem|ZS%|iDzDYN9}@qbv9vlD8sGE`xKsZl*DJJX zjbUB5`vw20^6ZuC`HqK0uj8;@b1m(pSasy@K(F($Rr43~bFa(GzoC?|Y}Fi&cWYwQ z_uts_+dxuRmBWu)J?+(zH?jquXO9U93S3ps+8K7p!s1(OqyDcO{xWom30-;Z>$j_=hkxXW(H zhPl6+_-8ij)(v)ZL`<3{@#kzyi_m^Ef74{yvX&=lSKQmChWXUJ-W6Y>_p<3)!NnioXDg3%)%z>=m+4%Cz^VAH3q-B-IM47e&ED%j>&CAf-*ZaFC(a%G6E*X< z?^NrF6O6qbcX(F0sWpnd@)SI{H8lR*m&_?&Og|+$*=<}JU}KfxrT*l+e#X{&4poho zMKv;eZcdRkh}to8vVU5j`|HbZcXfO*=8T>&ML)9qF-P?kh3HKWZ-dZ-`hGpVjgO=^ z%jL3~uAB8#dXwv&vsae7M}FeUb)0ZeSVU4yG}J11qOHuQ(><~W9Jn`eZ)Y<3nsMfH zIlF?%rq9Y^M-r3Va_#58cyHn}D^OE1Y zJI!qyp04|o-f}gW%eUiv+P;?@2l@<^KE7Y~W7a7X(}LiA+1Fp*c{L$3_s{Cv$2|6i zedhe_zVEds(=G15`#Z1xX||7jJ%htO=au|%t*+_Q7DxPI`SUgUgfeq#M(g4nC7V2s ztakZxFP>+}+0OZUb5c+ZTdQKn-#VTBE8=q}GM;8i`52KB^GD}|c3ftU&U|ZzL#h9R z3!VMfUMcLH(Jk(l5k6c0{g&S1v%e2JKlnLcKP@0K<}91*+LR;e#*1u z>I)qcuQhi3ZCm+!mN#GfR%XV~bKPvStG5jE0j~YQcVn+zS@dw?;+N+D7MYw)bLDQa&kbHs6S*^H%Zx>q25;@Bgpi%xFQ>Ky*3y*QY{|P=_+mC*uUo33 z`Lg=@vz4>{tC|@U9TaDuInyimO>ms1uVdxL<=(f$MGyQ|h^SKBI(=b9|K^nv_Wxpf zFR6Wdp4IZN((I&FqzgkxMx*v6`=ZO&G8>MTUs!To?^c-irG;lC9;6C}WrZzWCEvjR zFY4_SiHlNiy|g#{aXY;%@_m^m}#vdVt)p^|UlxBzH_y?J$sZpuPittY2r#Z;onJqZSw>P` z@7Pu4H|Y-+IDF~|<4N*Od$p;@C{`jMW$)89R-2qAp4hLwH)?Ius%j?5&lRDn%rUQROj!Cm5he`CzuFCRa&`7~$V_T=SEsYSGyf>U(!~pDoc+W+Xz zZ&xl$d4JfCn^WH9Ov8~)7ulcQ-)OKsfmcdtONTk9zmi3ULzS4pEuG7&ug1Bp5GgvY z?77^3-uF<&p9k1a*Dq@IWH_$d%NAS|tNK%cOQt2?WLhboX+g`1yMKN&?LO9jexpoJ zan9x|E&Q9FCr+PuF7Tku_wRz*Iqj=rcKclmu|6o9dBM7 zZk~Q>V|!Li&LX43pS=v3Jzw*5BrJIMF+oU{t-k!#+iUqNL|wg=OHR*>vsp+ zuA)rvFO}f9q&n*xt5t$*)B`WhJGXQDuNQV@6J@8Ax?GYu)$^d@{Dkjw5;lkL3D;-! zOA_83_C>#Fedy|-pSMmu%ZY0XePg)&pnY!B?s;J=Uf1oN8l?VTV(H^W5vx76l$wWn zSaCLewOsnvG5l=cgggg5b3MbU3-5?oA1q{4)p%U^-)956c}-xwx#V8&Spk(S22+lu zeqVgAsF645h_7)?eD?odw#1o#!fY`+AESh*>B!0rk|f>&p4iE zJ=Cr7a8;MN$j3*vH@Qz0#pkswh+B34;HHA7eVKpE&Yn4N_xk2H&(pM4e>^v-U1#sl zmnPGfd))eW(#Ju3W#PHmvFlqtyz9)Y1lK)}ubMCxANqf`@!suQo9kB1^*t4{sMhk#_MVrQ?#2iI+iTS`N2UJc zL!a*z+>h1fKkZuZ=-G#_mTSD*&Y!z+H9t3e?YE-`uQ1G>@P$2(<(2P?a;+Y9@f9nS zmK1K$-N+3_@BE#3WH=YQKJ#3jJ7OPwNc&E>bHIHMW*47n!_snaU<^R{wvF^i7 zCW~mPwQpW0er>e8E$Y^LecPeeZ>L>8VaZUpZr#o;Q?`HIx;!yaYpnHr zoA*-Z3jqhuM~8U!trGEh$MZb@{u#I9Hddc`Z(lcgB|FunJwBYPsg%;`1bvrT9eI6_J2Q@OzSci(sO_Rz`Z}B-*k)qqP<%scO5h@ z@GxZA_xH`>1*NZB)UO|xbYJ)9=!Pg3J8m+0A5#RSHxkfX~eZkN8g3Be2v;LX2e~+@#Yl^wlXTAUTYSD9Ss_ci4?^0Va zTS+CqDO+lq@tUNWj}F@$l-@jr>yMFBoYnoR`;i*_5zblWcNa3duTECy3hdqW=e(Dn zZkYnR)crihquDnuo(qxtHS>(jhc)Sop61@FKOW%zdd(AahvWUB4`1odIr%m~l~dpb zyHD(F{^vJ$znWjAW@xq|%=Mw;gd3ZscKn{6^Xs42S0m#vqrW{`=*7 zHOuWr!F$;zJj=YUajG)8PUMG5ws}vl@WM68Ywa6YZ*e*sss4Fvmz7sC=hLyd6`zbH{jp2NRrt*o=+UZ`Onlmh;KL2>=#hM$Jkj8OXC;^bdf@_YWJTN0f?fp60-H zbF1lMnXVT+8>hJJKf@7_SZ$Rk-*!GY`}u?2J<+-yEHBkH`A&b6!uR-Z8j_!a-o10v%-mIT z=uxj}X!n`}4O?AvlWUeVnf%waw%BomCs<7B=dr2ZCUq6eayGJ?oRB>ud(8=vpRC)K zWl6pJ`TKcb=PqF$p9lWyeAe5UO%OiP@4dL{vCU<+Z)_QSv4Jv(jsm}!#pv6;zpCGxzvk^=v5JXEdq^k5XXRC?6P{dHN!&y`=B zrU$q%pxnd{f|V{yp9=FMU~5_*#7X1f}p^^M3;M zc}8D?dgJH*khNN0AFq2YuwMDC-34BYuk-YeSUi+8Q1u{1ZuA?e+3-Z{Ue%RR_D09cL~Lo-=971uH)} z&lK(BvdSHLlfSY5S~%s!Fj3V*EjEc5W+GgP~N9#J=O^-{VmCNs{EMxrKmF0g{%-w%sQPJiZ7nXNR z-FCj2YBGcAOy8Y1E8L4z4@}!T=`W-1`{l{Izf09@n$&T-bz$7?xAQJo=60Tcm*m>K zu{YxWkI>h?vD(JWPjct^gs)ZDd?I$nlc>q7CKgBEh<(HR|G($F6NW~%TO*}S8l}aH zdp?-RFZ*@Y^C9=6pPeU~ztwmzja!{IvZYyg2UN*4Y6*t$U8? zf6q9~kk}FC^PF>!$^*W*+Y5F)c&B*5XVa>A2WvJ8FTSR;a=C_#*PDpfTCZ+<8Qq`o zAd2f_tkta@N8`hf`%6ub*f;GRr@^)-f*m@_7uUolloUSGoJ}{DEs|OeT{~cUT|7P z!+f`L#t^$dyYmfuj5A`EcTNcWyqJG)qF!2?p;xy=&zG~Me?1eH$?g^qp085Nx`xB& z+1i8C)labPUuC~(-n|8l4{Ef-yS7D{z7Th52ub>}-oVLnYuajtr?WOp(-A2w>O48~ z*ToY>JlB=ur~TF0wROj&9Xa`3SARL4F|64BVEu{LE!Axo0*sh6O&qw>zTcU}a`(af ziHBCjdaJJw`7*7`_1lHD5o;}9@h|%M>e}jv^cgyDlX;7zj%aIZ>clZm%=yrAs^V{M zwVtEOjOlOgy>IhA8@}Ii?YDO?*Tgi~{pRHe-fXcqZsG6MH4m=-?+cz+(fOFQ3Pc2#_L+pQqYqwa;| z;{6JY`<}DNxTxz*GBtPnY;F5dXx_7IKYr`pvKOWHFQ>5YIqs%&W_}sh zl@HDQ2c(#{|KF3=a!j(i;>e^Ui6+Z`>WJU`J!h6Q*M-nnc7=+C48rWrqH>##2PpLF z9LbZ|SGS%mg{_?HY21w(Hij>;fy`-*<=1+%SeO0~i2Crwa?&(WivS(=GnLjamq$7( z?z-oE_43PzbNSy7zx>md;dAEl+^>^P)Okftl^DW$Hn*yP;N z)2nj-oqxrk`TpNat*rScc!W>p%-ZBY^5l?rOEr9Ym*G=F>F8_$h#7bACsn4Z0NPiUgUe2*DSYmX|J7tLI7w{+%>#;D`h zkNxV9z563dVeX7cC#>pUUfj&_@Z{}>2F`DLzW!%q`Dc=Qsqem^>EV6B2g)X}y}ew! zk$XYhRqfjiQpIl9q#||)Pv5WqE$CRzQC`l+=Oq90{JgNlE2-U>tN3WJHS_a0pTBFu zWH;~LvqkLcm0OP8$`ei|ObbjsXW4&p*LMB<+s9KD810-V z6c+6*eCX&3-D+#)1Cj3wMLdiH@}5O3db0TW_ZgigUg?PjKeccFvY&R{c_)MM&B#ZS zCLP*#{rOY=4g4251&eao>eULmFU<{pm&1N;S<>XW9RC96+O3+l`juzot?KDncdiAqol_~ePYvZ`#&x$}JvD>ghab2jDdGd*&NSF|FdIiKlY*WoFR))}>2DN{w-p9`1d zybzq($z?53;-I5;>MGaAx4*bf7Jo_af3?N)xPnewV8WUvNxo}m3)VN+=-n$VN>kZ0 z*L%(NfTRCRvz&wVnj04B=kXY7p4OHPkDGpM(#^ECFBhNOYr5aG?8=oBxvTbwxxU=X zamPE?%k;zHrw@7RyjsE%uII~WmSnEV$}isGQt+|O{qkeGx6dt?2miXz5&3xC(~qGI zOzxTt48_9#+P3N(HMs6J<*qz)>I*B)Zh2upafV}+?CDdl6}H@0ttpbbt*m|Sb|JI$ z@2N=_F69fqIwSl$q>9}`{_?Yv`3zU$%&rKwRY}c|U|A}raet}T*5H)eYa=(Q)aPvP zpSdk|eZ@H(-y0lM!Lx-+y>%1j4 zxlgU{9g>urm&GmhDL;6-w0VmZyN&4FjqzEB_iz+{VobR7dCT6y+nY~tZrJ13%ULe& z_QyG8A6rt7+V1F^DYfaxK6^)V*siJ$3d~8WoGm_YYGHO6=j1Ef+qtHc?D5*m&n$7s zSi(VSuR)4)#ac@V4=pj<^7tH<$oIPf8uTMKU6QJ)*nXbrKy!b#Pv`h#Dg z_R~&SH?Mx4pRZ`kEU(i)E-hQq_;7=Wpp~5Ni+@QkA6GA5ZgKPab=Bvy*4gK}i=5@y zCCkQhnx*Y^RFJ~fZZp-Gyp@k1Y+rKYMn{(=>!#OJTdEZnw?^oGD||U2BhW~-V173D zzRsA&wHJM(KgMOXxfGf{_Frw;8ix9*(x_;e1(Awi$d6?+VRKB!OF zE&cU+iK39Q53=YmdDOw#*TJBdAfJ6n!ab2?^WB$MS8WQJ@cwU?@>J%7m0Lb{oR+Rxvb&?A zKVfpMb!BQpP{hUjX%;W%NIBPTXo}K#sXJkX8{Ir^sIRn4@XAE(?U_0CtfZHVAL zY`3BJ*_EB*96NLv&A$sWooO{`GVwkYur>I;!A3{*pNpQZ$=8$#eeSZwBu(?sUd?1Z z0a4pa4X=~F*4ExW^e6b_dd<5N7uVcV({J_UpTJ-E;bX%Oq3YySPM>tAO=>X=nZM*f zRMV3O-kzV!UiZJRe7ekE_rxZbNw?3w3g}vxY3rx2ezGso`n{94Ru_{Sdn2Gm#H zJIBJu`A*;Di_MJ_PHD4esxzuBKHj+cyp_Sj@W9AVY5n_W%FOhUskzGiqj}G|m)@t8 zV_tI>TPW$=YstzgSvA$U&SjNT_2ca5@6)%-Z;Jj9yZ6Y$%Hr+@!vn^WY~Po-gm|9g z`?IR?>#Q?J-aYzp!8ETop^|B4-sCw?7ybRgSb5(f_-f0vWo;GT_`R|{}bGf3IPn*vDNlN(qHIE~g9%jt{Br0@@ zz3sx{)&+|1rmYKSR#>pQ?6<&)TDiY>KR$N6BT}B}4vC(~whPm1bwkdCVPaKffS?k(enCk5@?efc}+HawSi$a;IgahF6_!WxoBnR%R^!Jx!*>nZO=J-O3PQ7S!ENu_sZY0(jR%1T!l|MZQF6^ z^a193DZ*C-zU5ubiD%yTxlu3t7{?`1vwM1*W&iSUJWLDQ!gHszL$Yb3k@T{yYaMwe zWk#K!qqsBKUg&ab+_pJ?AFOHj@7rbP8$RRbOW9{y{EXkecV98wcUPKW?WrXd-)D#{ z6$wn8bN{oQDWAy)1r32lpZN!agB)6?)LL9kh*`gG;UQO@HwQ{Jah?y) z>9*uy_Q#Lboeys~67WXGt01$Y(tVNXMD5EOR`;(kczrNdFs}@oxpGbNZaok7#zp$N z`$Y_2uDH4T)cXbRdtUK77dZAUI`fK2K<4z4)BP$3X1xera`KC%>D+?IPnG}lmQIoF zD4KJzK+pBX0$ro-7zU|-8yFx!vnk*kS~j%TS3 zaY=gR^5EIEkEXX+eiUZ73+61Bn9x~YHKp_z+vDj?IsXLw?u*wx^xiTvu*9f%gQQhk zLYj;`dwr47kNYLe4l`a$YI_T7Y@H=m)^??PmP#B~#DyO+tH0-j$u^k`9D&8wizh6XXWklP_#*U@*wdM+9hVJT zuhlzCbeB22vhwX=zjy02tE17RES`f`C)}zKXs@%@k-V$pFIK0Z`B3ZZ^SHPZy?qKd z*WVV^`E9Fng!87SC)0}$t2kCyYx{^SxC6We_6 zgKPHXUbQcl-9LZw|7n3K9&V2<4lLV~#N(rJy5}W}?yYNyg#d+lq_3=A0Z*6ZfzevfT3RNB~P zdrr9HY2N{Fz>7QGDQpFX zcij^EEj#jWX@u*^=@7*W=?JXAV@?+K8^J_`ytxpnV zfg3lzdba$PiO)@M^XY3RN3C92@kj7K2fN(l#y2Vkp@zKi4GAKAIh9 z`Ytqgb^yl((`@lN9){1x9&(T72%ITxVLs9uvF}5)diG`3rsr&)j3!Zs5*@v66-M89 zdUA@{j+9eAN1P8n*Ude7Z&TTe9k!dD&4eoM=9^jG>R$2d+_U=($)9GqOqK0ExAy+* zCqEAH8Xc?k-e6noe@{J;=lAL8;Pr|pLJm(};i$#6@2jrXvL_OW znK|E>f4KHx z)Kk;qYOBJ=B;lL}Cie}J2?DpW_L+r*oY8qmB_x}e!D7+C|$9!Ue^Xo3I#H5e8hNma2h&g&B z&Bu)%lLW$izn35N-pwH|zR@c(AiV9eh@wapdg1Nj@$6tGCJge)_vjgwNe6w9lrr zo#n&O}po@Uhd&myS+xYH|g+MUuXYf$};JeME1SM(sRQrHREOpC$;|b z)tBRTnLD#_%ktPWe+sV^2z-3B-E5}i+U2F~U)cA3vYvY-{Ay#?#e0%dyji}Azta8X z8zL^}WA8_3Tx1 z|0;?bG+u7cOWk;k@6?r-E`O5h`P3FT#|g6|gU!s-pUyOy zSkK-1;{_$9(o;uvy}&!syAsze2xLE(ZF|k;T;ILN|6&8C3a9aZm3x==cyVLx zIf3n(=T;`=78LNG@LXlx!)oc7=JF_ZYv`A^`eNIRcmKM4()#GOjdT6qc`Ydqj1|bg z?~^9pEX+{tzU#Hgq6yD0`CW@$m)rYa+JE+K$E1aS9KUt8wEf@yXWxg_Z+W-s9FVc* z4f^`GL?dXw-qx%ojlKUKHq3go@@DETGqtt9gdHAmTKH&ks(b90Stm1fX+-2*^Pf*o z@S61eQs-rz$~n(&>c{I+&iY@^c&+{Uq*x{Rgy*j%DQg3mcKyDVcsnRx)NrxGO}-$n zlLr$HhO9fSYUkrQ`Q4gDA2<$ZY1Qm3HL$ceys3ZE8bv>o>(M?pa%bO9Vw$%nxXLJ2 zTYX2`2Kk;9v*We9nQnwx>rdUpd0Q?6rkZJ_7@TRa#kU(Poj%+pm5_sU6wGl4i^3{lV~H!G+9)%^o63 zW(=22eYqI&5(V}(%KqJ;q;PFw=QmkP1$`!2p9OC>989>N+MMyM;74IMgS4%{`*W2$ zjq5|W`W9wRVKA8Dy=K;2uG^`WS=z#Kd-KE=b8W3JU3kEnz3;^e$NlfpCwi>xC}KaI zu;a?9-}lNajEc`L-Y4*+I({mf{?z+rOjC?M-_=ew&wUr8uc>)U`2!E_!i$h>3p_Q}asdbdN(L5c4PukF6334DuU{pP%X zZT{MaQ=;hf|2b=~opkBn&v(~FD4DHq?0_&5Yu2)Us%#w^Oy7dTOnH~xo*OoSg!Xjh41XoeX(37 zwa75*fBKKg{yR)@3N^3qM=jmbv0$3ux;eMxSjrBc_hyKB_xHv_uT!rrWG!41lz%^Y8C@=7z6m~-vlFJ7OeEO2q|wW9v3Wh!&FNcX*L z=ZMV@6}%H$cI$)AwyJp{UmwrUv^@Cy=ZD8r8qU~%{#l+pvp4pt=?Y1UKDmq2m3J4M zI&(qvxE1&(G|Rz3y25oul>P zi|kMX!%h17uet;+mS#Tib-mL&XZzead8eFj+&Q@J;g2Tqjek2GCPeTlM$3CVX=S~A ze(4bvDW}zvYI{?4FTHi0$r_cCv4CGnuw|Lh|7BBN%rI*^)|s@-w@|b2=m+(mPSK0_ zzHFY@$MAKAVEMXV$Cv}pe)+k#e~a(tqym>(0g26voe#XI(dw}8UMkSJ6!OG&%~PhBGUlb>2iAHPaMy18 zveC3iMKwN;QI5OXLW$SfHO_19%+w!dKVI^m5l`B4?$+d&g-cXco;ndBv`4=uFn;gx zI~VW&Fck_+{_TVb8g47+nKSS)m93+TfD!&d5X@&w?U`&FXhsB zB(zg6rhT`=%qFu<7v-+sQZDn#;HUl4gae&>X$x2hZ9C-ubQfAZp^2 z&gzEOf%7*8_9}<=ce#mX|N0*+{rj)FRFKcS8Tt1aXLj7>X+0;IzA{5=`_|5I;kA1d zKX`A9P<{4LYU#?_9M53X*2iF-Bh`*|2@;p&8M{=r@!4?7(9vLP|gpVd9S9f z^y}wyS%0@}aUMg&q8EF$mrYoD_dHLG$o_+6)p7yTO{P4_`QCf}@iq2dU&(vZCa`8{ zRUepF>-b0a*?rr}Cmx~PuL`_Dx$7g`YU5^Qo{+Jg4*I`%2VIvKR;u=Ygv;0ui}Lld{fybeCM!x;JhdIZQJ_r zS%w$RZ{mJwyT|qE!rupjAE&N(dE&UnTb{bZ2I4y>xGlf>PF(HkmU9KIoGWTN{3abW z?AY{YXNsi$gt@Z}EjCV7uzr31VsMyd#$^ZH9mxS%FE-BGXD++znIwCuw9dv?>o;@A z^e2* z4u^d%Uw`P)jOzTStG`#q>z(a7eRJj!p}P)8H>9wCx7{#sQrg_JP}*;E>h%_%p?fie`_ipkCH2*H&;9Ke|_h#Y27v~RNNIuW;{OThKv;XHbZ~Y9F_5aIsz5CPT z2aK8P6175_-n}zry!}l!oMo=HLeiwJob&TCuWWZ*xKLx}O`D*Ksm`~QSBZc7cE`_^ zw>oS6A@wJ#noQSO->ctQqkqWzLUovdVeAx@@~ac2?tIzoo3iPDe~rqD1$%{~q_UaT z>fc#o9xHQ&>Cd9lueAwBeAPs}4-{mQWtPjuMFKWo$DnXkTI zo6~cvm+|e2DeS=)XYe#H``38==gew_fJ;KN_3fCBC2YJ9dq;55|Km5F{D1a+5d#C0 zfqlTFPf^)r>7TC7+_R*`>}lfuCF!A>&QFS4Suag0X}fJX|AL(@Ys;_y9eES?Unz~d zxkaq3Fg3}IbH7%Y(bcGuUY}19PxKBJ`)`<>==YNI(OS6~CS}+21zk3~NVeMcYk4lz z5qN5Sr*v|@48-%J1B$G9YTPu}r*tI|Wwl!l(Kk{v2BY(H1T zoR}W*S4YZc&JKmy-F2H@OmW&awbK3PrSq1&?Ky!DGy6W&v2j?)L|-dj|JGAecB}4} zWo{d)I65`F45n}Pw3dkHY|-5*a9y-|j@^3&v4cG+=OR%F5+pMDd4<+w#uTojSzEJW(i}e9N&49^Uiksdy-;mgqx#4ie{+x@C z%URYdThtu&d}dke`_e+lbkbV>6sZ~ZJgb_&T3ndVd&@MtxUO~nkLkzLdgQMhZoJ7g z|8IQe?tnvwXHPrxnXy;3kCCDHeAsrCjTij2wBKt7nCxv@vuan-XNSxFB~BK?kJsF- zxzw>x{qN=NdJhHJ9l4jv-#za8-*!t=^DM>RK_4D%tD02DF(F{Duw;tzmHU^hKImV{ z-`BCWA_>c1EY??EbWyqfd;Sb*hbhjFui9{Bw{MO1 zZhjLq=Xm;^qkj!T#m?MmYvt4L*~%Xq@8+O1Wx5CdJLj&3Wf_hJ>{nt>|NSY=Q1kEd zY3Yd0V28~1nJc811!TJ@8f_InWG;L~E2&s5Y{JWeQ}e$~t@IS1Vs%kW&$E5j zHb3J!791bE@L`zo6^;pqI!h zztw*6#;@wIKJ~Tx8}B`qXV)L@__#kqt2se(YG7#CfsMCQwH%yU&D;E@)Xy+WwfJtkUx|EYIqJWoRZrC@ihs;Om}`*LR9?cH8-zPwFp z;jbO9vo^h(TD0+Rc(JvJILp403%fX3vv}uemCKlG%x154`1`^&b6v*F^^A=3l|=4t zIhN1$|w}oqAK2P@!4IA5B$FVkL!g~i?V@A-G000eYdCN-rl%k z^Q1JrB~#P=Z?B!w@_v8C?CIBY#BMw~w)$NnKbOh8k8k&KH?5F#x*jB}2_<`@mLJzN-6K-)C{pnrG3io8`^%utIDZ%fys*~8T&L{e{`<-cHNuf=85_j4;bKpv5h&i z!trrp7IJkWtO6boJlzJ>UWo=BUV6u(w zv5lLi?u~NXljO3pb=$%g+t<-A3T3o;7epAW?%~#Xzlh1oYK!TUpk?xxew_6@*uO(i zZQ8DXY;*qXiBc#$a+~w9`<5v&7h;>X)?E@6O*DD4W6iFKYyMX2hKIabw(_si4cnva zL8q9t*H=4TU@Kp@K+>3Xeom78>HE7QY#TEcI(>`XRin%KHvLTzo0)L-91gEe8Q%|O zz49&2^7~gEuFu%jcw*;8uo|o#_YhxidKbxIMdAaYXpm(yLRyzHXW% zuD@d-;q!z@20n&M7N&C-oDP!|*m-3(*R?bAJ))<}e0AO6 zB)qjznPY?dm8;oBr_)3=S#50_s}g#HnLD56e!1{|OP6aybf42woo&MXoq2h9x`e=G3j!+jMu< z1d9hhCbJ*f5ML^gy8Zt95;>!XiId#lUth3o`>cP=H=kHsNNs=wm)5eY0?HpUqRh-9 zTz`F5u?}Lc-@AJO`?}&7^-QtbPdT$21-@K!F^O7taB^CbZsHHQdbKsr4t!k1v1Gba zmFH(ec46)7%Zer%|C2g@#mf3+=KPT0-^KNsdBSeu=X;G)Dvp-r-QD%)kKrbJxoEeA z9|M#k&1ZPXF3LWAV9!+6o%K}}PR;L%UkOzjU*8*FDEsSNj#|lGE%Tk`o-1^9e*SO$ z80Nfk$?}DlR|=GKsekudo_y70qUf0|F8^yoqP?B3EsT4XyJP*^s8N z`S|Rgy_urkI#+;KgqGxZBd6$>EBu<3WX1%***0JI#JTzeeMQ~vcf9X&w4AW-dl0?A{p76s z)iKU%w%tf#TkcY^E#e`cUA)k$DY9BKT6$-$zs~6}X^Z9E{vN&u+t_$tSTBAMdcZ8- zv3C;l{^pH!2j=szz0g{_``nB-##L^jt8dFY%~=z0jBCQB>r0PbiDoU3Vg0buLOHal zjNd?TS;qpAdxu$>zHPb6=C(g{ZTSMp$OS?-|2GIQ=-pLj2@4ncESPS!+=k=jfn9Tr*wPn0*R^@P**`N|xOa=d&l(%sPkNV%KCN755vS$H z#c=;v=wihO-q${IO!{&{@!6coqf@RwZv2UgV!E-}SnTF~wyc%s+ zOFW?*^nYs_fKl7YJ*oh=ZkA?fr2j% zGVErU_kULAik+Q2afwM83DS?>PChqPS3JJrPJS}q-fJ)7|If)WzY)c^eA~go%*D@~ zx7WSBrp!A1P<7tqe9int?|8S1J>~9`oyaAA@}PHh@{@NnoF9BT?W#Zfh6eT{wZ*1c0^)oouC?sVvf$4S0B?QLfTKI%4B2<7PC$@^a1m!JB3 zt;!71zE+0F*o&Wv#r+~U4%s~oTC##+!=77CbJky*r}(l**m*tk$>p!NPhDAai}lvi zZ&RgZ)_j;u!TvRy`FsfANT#>s*o2hB5^#2`tqJJ*#8!9KKtzH>GuE5 z2fsNmeR?(j?Ee6VmayXr%fxs;Y+S%9y0d12k~EuW$Qyw3N1KtWZu_2n?go{gHdYJAv3qyEe6nQquf>*c`J0@A8UxebNLl-z zJsI$uZ*f|V$+ZVZQrlV=?5_83QfHJZ3E(V>xtnkQ!M*J1Hj#^==7CCuUsA7KOo-p$ z8B*lzvOV@5pN{DqXD?&fSK8@MT~$g}N*`74DR^b%zsB-z#=mzgT`U~o3hNtE-pzB< zPx@&$cVX=oc6Ofsm-Jhk-mbVi@l#Ou){O6h-*#oZOI^F+OpZ^22TKI|)|Adyhi})b zZ4bZduRJr++oJvVCYyIwn-A{P6k=y-c{{ar9=ENdc82D@g}3=4FD;PIo!(^a_Tr@2 zNB^BVI(^E|Z#Vvz|B|hir}Q`_nDsbg^V-GE`IZ6Go@5m)uM29l`|)x2CDwqPaHam{av znijQrG4DqP=7>4#W7W1_O>$vXYMh;2xAfG0mSL@2)a@}qTk zsH-UJ#plN#f5>c)Oq~9~=4sH3u6D(&!!MSt>a6*|Xd~>!)CE5h}2 zpPvi5n9Ds?COEYA)z|uq6^r$Ji~ReW1SLLStShaaVCi;$j@gpmUf)G|M2t5WZ7cDr zetITFsaD&lKgc#+;q%^v`Kx9a8nORA^!HJGZS|~GT6xEwIIz~;J0Ov_L-1|U^)-eNl4ds;WcPmghd*+4P?8hz4hvNPFFc zq+98+byAT_FS{2<%O$97|M}Q&P2bipd?~Y(`ehP-zMP)(aJkC*15P;~b}!${e`Rlf z!Mwlw3uCKi>H4g>u>Ic(!HVne&tJKkGWqQffsj2n9^JpovY)qQV|d=0g?iIkKXqB3 zZ+NWY>i2NstZ3yoqQ5j^g%;eZX7Jr^biUJM`Oa568rK>i#{$r;}wi`Jeb=tQ*5+80w_HBmU7^Q&rg;Ov}{k9h8b13@*J&ZQ#1=DEmmv zZU@hjv+S=ISsmH1mFM&1IrHCWr>J*JEZVu|(Ti)dYgb>rx@YP?Tb&bAr#-mDb;-|i z)iFlPAF+SFZhoU__Aj-lPTBg~$}jC&#dnfE)qhttTBUh)n~(hbe>e43{4!H~WVTe< z#~~{8nswA?w~a@hFFIsy{YbHXc5DZW!#zF+C2omNTaMqK9M@yzot-k3-7rY>gn1v& z6JGmuL2g2OULIc|;U&)(q4TMecZU4`CdQUEY&Rq4&gT*5KIYQO!gAO2=FK&ICws1h z-MVz^WAT&-RgIrNj%?X`^U&!Zy%X0~SI>Q`b+|Bln##3{@0Klhx_@zE&VOcByZJ%l zv!pk2UB3E!Z&;n=sRt^hQ8zaqcIq-w*w@r^?lrs9xxM$cu8em5Z@=Z}o5&gVVm<=w zFU<>Tcgd2WSo<}GeM z|Ln;9lWUj7T|e+4q&DHyn?0s8jxsuKdwinATuQa`*4x&spB|3MZ!K$zQ~c%F>Pq(Y z%%5~pMeR#n>%95PeqXY?6)8BQtoZrsbJYy|Gdj#wvR(&9EZ=n_ev?tE8fW39)i%sb z!tZL1M4vqP)J}R%<8R$Axt6ZY+veL<+t?h}moQykdU>wWKgk&{GI+ME5`C>B-lopV z(ywo{MpFI1iz+uq{|uA)jNRuyNiVryc=vEF3 z7N+voCra3C_t~rBRn6Bt6)Z&RYHD{O6x0r-pNL{s}DTiP}IwMd0AA5>W}wZ zeoYWIi`$kpyIkjD%`4s~D-LY-IyN_9w`==<=Up6Eo|S*xa@6z5KlO7bM5U7LRntE+ z)hT%|xTC-E!|z{LGMulhdN}LXt6&Aa`ATj&ACwto6Ii6S30$*qkNUe}%Z3Rob5H-# z-(-_x{@!Nmb?^C$)T6^gT(+O(j+2f^|qG%?E2fir1tdVBV9*7~g*tQI&sPTr^z6`%RVt*>75aLD5P9j{aEuYQ#{$9DN& zT8{mPd2B_O{mmQl+jdCtt*)OD)EM0_y*zq{=;XS96mg5a&v*VRHflSt(Bk*Gb1ZWY zFRgf|=)7!g&gK8TI)9^%yNjIDI<@ZXp1{eU+P+se7R%~%onkAiSeo{_^zV^J(|@iP z$;d61uWnrP?!=5q>vGE&)cR+dOfB#Uz9`8q6;iiq!XL-E2|8*!GvW?vhieMWx%GqR z!m(MCQsg%p&%a_Wbs%Qh+Sek*WyjO>U9&gXb+4VH;xl3Kt7wrR{?n~I7R#zbxzGQ9 zdVKlW6Y{qb&juF8<-eT%OTIrlX=!k4j)zZO$eO6G9a~Py&zn+sl_l2CS4Fpo|F!Od z%1=M{@@Bm|ENuORKXI$p-v$4te{)$^up?-(28%?c0Mj=voh|P>eyS$_^)8LG{&RYk z4PS+NRAq*(^-*4Zr!18!cW)jJls1)=M&@78N%~}?7GC2LvG9WIPY`jIq#TwR>toU&kXI@tImgC zi|cIPBd)d#RNF9c&0D@#KIiSvo%2(4n`DkSzxlbD#k@SPcK!78Y`)sf zzBaKr?N_4bFT1}w?$i?SJ7|8XYQE30C#&0yUw`q`@h%X#S21tT zmMJybGdG+UKYrEV<=$wu;`Wo_p^X3PIA`p67kzB^rCCqscRUK;pd8w?So7tNOOAFi zKjxg=@Xz|Fe2$^+-ncv3FABf9E5=Tnbi;)2jEw1|%d6UFzL7g$+xNUtmD%O%zmr$k z8744^{yF$kFy$b3y2gTqTNlKx4)160y0@1z_Qcg}h7ZNfQVZ`|hTPT4&3tEG>RWS0 zQ}ML;LT|+){f!gO2~P~zb9OQp@1F~+?6>{r_vbt&scd#?b@bf5Ip@Dv^Y~KrClTO*1hJ5lX zx<20_a7wxVZ^wm-_x{aaoww-zz3q#S?0vFN{MdTdilxWY*kt&-%6|qk^c_Cln;6>n z@NU=2*+QNT{I$n_h25FsGwIK!V^^MKSHN{;6@rdPHdFkiEF#_ddjd2=LZW*iWD-*)I8`;K30mHVnQidf`X+0`-` z1&YPO9&^r!nj9PRGiSr%P6gq@9o@4hnjOw<_B_yN*r0#s-8Yq3g~NLo>noc+=z0{1 z{fV*P?Z)2{k$dEM+>FD^d@>5m?C0*>DO^mm@;dczw|znA{ISC;PG1Lt?#bq%vbK*$9KAjNv5PU?f5^BS0Tc7vp9A+J^#^P zJ?rv}E!Gb^R%)Efe8AAfzkdoicQ7!>|Cr_~+h?#=x$F|Rc(Bj117RubnI2rXw`^ey zc_4SaUfp8P>z`cSb&6aq=a>CZyj75N)=Tcg`q#FRJW6VD^&dYTbkJTydz2ATQByX)ktk&mGvP%U&&EBxfrRb>djb;76)ZTM%;W)F?bh9oa z`|a-sB%UfYRq8A|d)diQ@7Oh|@DFYOn7@bo-ZXK0y5nW5nj8Or9y$4Tt<8IrLyYxz z^$xC9VT<7N>^61%p=55cpmN2st51Hcx^8_hth?SXbsj&vqITZgR-K&md2{OiUtV7= zcjRE}!~W+b=F+iS)?G67Tf2b!Q~vj_GhG^b3l0I-|p>3Map{GM*E2 z^fRWPnjKd0S=PYqbBo};HD9O4&fNRWZPtecP9-g;Eq~+D$vk&wb|e^z zvu!(jqyEQxjuS^eNbhV>>J=LJ@uv{ITeyUEidYt77Z6T_uEixi`~-J+K4 zbUkz9t68bN{hO#2UvD3JZhw3C`OfGTpIj}jS#OO~d$(K_t5{Z)bzfStIBdb4ZF1L4 z1-V=*_aEVltLG}n{$0H~YM+u&K+*KTIb!;GMu8LR?o2hGJkhmJXC77 z1f71rdy9uxnWmf=bE%tBv@ol0u1kWPz&Re}Ow)5O4#%I%>l3y6e3#vi{dU3P!1?-J z791%}tBvm*TWiAablQE2Opd*5@slZU+M1QR4y@cSmUA=ZhurZl#~acThM&X~>I>t8 zA}$3dt@~m=S9`hB>Ngo`$Anin9{Z5`{X|5eyjbP2E#HH~ZuS2(w$r`HFzw|cGsEUp zwZRLI2z=NrdoV&_S5ucujhv+f(~sKSvloOHh#!7?i!tpS78f&8&-9)&F)hkq#?1{uB5b9P-w?Ay0pe!jui)zf8F#RJcmR|;mV+psMm^NQ`tMKK}&s}5UXDTMDy6Z>5ill0+pO`*zTp>6!TPGw3tRC#*7emdPx zlAqr+G)l@@%K!cKZ<|#XZ_jl#k;{#(-d8tXTW+U4%Yb>N&a#eM?G4VIoHw=4x+i}-pnS|w`@LMKit#U2 zyGaLb{F(DY`fT!k1=FZE&U%t&OahVW$Dh<)Sp0v*x)1MK-_4n8e7`cX^YHUW2M-Cy zc)ux+_E`0`<^CnLRUcw3*f&f+vZJ@c^#3jn?Pqd~zeVF;yMO4o^rGQFt=TO0pS>;* zyW{@)Cp=PIFyGj`VcnAH#S$DJF3b;nX|(XQo6w=B+9%`t?N81ZadH#4D?GCAYC`J$ z9jC9iP1HO3$91PBDhi%yzLOZBu+!>R*4%(!7oP6#R{VNq_lFE! zP3`$!r+xcFt^b`n6MQQp*~;IpI>0knyWZ^%v)rrg?_IKA?&w;wQfF!8RnDIQ9RmMW zB*q-(`Tu`S@J&_U{=#{D66-GHdP`mXe2ckQCtD=;&!#S~ivF1{``mTE1!!gSIGvrj zeY$H%T>3d}mj%+j%?mGwwazox@SeT!+40X`PpSxY|7TK-S5%hQv3|ZvPvQ^9mRW~R zIH*bH&p#%tTNKj2OVS4zwl;#{yTFknFllO z)cpvX;dJ^Clkd#1s{%1k>^IN+7AhmjKWF|*7cqPNoJAWdTmo0Lur$?a`F%C7_Ry#~ zd8EIn@7qU0d+Hb#d z_rb@z8x{xz1YP#gb<=*adeQvMBV|q@t`1Dw<})7Psg($Mx=q-vEY3f($8f8!#5zd{ zmo8hQD8*$9EI1xCZCbPX>s<3I4T`swMYr_kzTCaNMD|_BEuR@>b+`RWbCc{ZwQn?f zyjUS$Y5&B|XXc&SJJq=ZIUrVm=%bj&41 zQm;lX|J;+jEOxT7`~KpD^#Na0uUXGG+108awe#p-%jdo))voUAo&3J$Zr-)y{J(0L zXD#xdwIwI&ewCT|mw)1M3tc;#k2qZUmUUUXb!DjQYop#f)u9Yub44p7cFXKwFuv3H z=GtN>>9$Yv_ncO2*MH{Aa9lpQsWwS<&4nBN8(UX6+N-W`)7^PrtF*dm)yiAE?`J)< zxTZVb{O0_Yn@v#~aWa$VXdTh{P%e}k=bN-A?wRD#1EB>jx;htL#O_@5A?nYiM|o@; zcNGS%E-(s_a=dW%fQMS}@mUU8lEo`m{%!iGHS6zk?p5>SUZ_pj6Em+Qck-!6GY+g@ z|EJ1UlPe|Nd-H-@_b&Gu%5Q4*yz#)JygTE*j&wx9p50eC*@8J-99M6AqqnK=Z;n#M zL1{zjx?gQQ0s1{>+Ah0Fo;??MO7?NsmD;t*Uk`Mtrt;pX>B&qO5T()zCYSyvvY)tcsP-|@D+dEadlrXa&5Q%g&m z@0iZmQueu4q3H0o4QD6be&)^mCr@C*&5-X_PhKd_le+(hPf;ZI!Rif?R~>a4pS_Lx z!~J8)g1JJ!5>Dk#pP3hsd1jJP$h_H4&UvjiP5z+jUY>bPnsJuJZG}RKse*y;e)0Tz zY{WXTR^xIxUzx3N!NYil_}&ziq`p7vR_t^+@FR^Bb7K(Ki7SA8FC0{Ul>6*W6)~40Z*kAu=QY>;wIvF0gBjDtp%!BO0XLb3$`P|wP z_v4)Q6t{JGD;GU(-qj?OY^I(owRro=XI_ivZ`Aww_T$$@MzxF=7(~^}RXwatZVS9k zx0uV*#Iki?+^^~SQ~ z=*AM%9NA#S1Lmt!94ObwG7r{6i_T`CnhG;CaQyxi!14 zu_E`ueldOSfZ7#%F7-}|d=;bc zRq;0ac;&3vhx?`(yy2dDdw%-#+b>RH4Uq1B;|GHQ4_jfJYr&WLB=*sXkos{Vvd!MKE&J5N3_5S}mtEa_U8TBdJf-y%O zN)2?2JLV@&y7uGx!H?@+ynE}A=Hk+~rP@W%HqPITb7e$IqtW-iXd?%&C7Nv_8F#jQ zPnACNZ=TnOi8mH?cbnxotXjy_Q@r@lv;HS`%PSw4Nq-Xio6f#`#mP3u%o1(myYV}RCp4_JGp*Ukx6)AjG46N_rt%w-aKP^S7!(3*YiOu6yDBjX+Fy} z@y{9S=2*jj_hx>)x5{U-M%TF&cT05T918Lubg!*2-XXeRg`wBO{K%yWR|A!jS$UZC zBKOY`j)`fAFW;T@zT(dH7deZpIMN^N`}juU*5%6+@1zKX1?>;Aj*t*nYf5xx~7rzcWewnmz)j@rZJxpPf znC46rxLPU8`1`T>-e320*6Bx=)RmdVs&6|M>UvboeXsV_pD{n}7UoU1?mzE4Z-1fd z55IY0tC<(w_OHs0K5O}^OY`St*|;rPe20zwzmLVXf`WZKW&A+Z7uhPMMwgrf*e8k>%E{!e`rxq8E7B zOgnL?b+0(XzOH={vv1!$R~aSiwp-O$E%E2omhZ3Gx~A1i8&|*5ZuxP=%B(z%{nd$W z?(^GUM7-OT=zQ=5t9w!W|M=Ln?QTZDH@w?<(P3?g>za$&2Peh(-&nc6YnezK`@E%$ z{s(tW@>RMhHt~lYOI}Wq48ul&s^+Vo?WQ$9F29i$EGqZmjL!W}Ydo9e_oP`IYPOu1 zX(8{|F~MAKZC=E~kY53-mwA8Dn)Q6gvT5_IifaGQxpC1k`9YnqRXT&U@SDFY^iDLc zRCw%n!EdKGr{d;CkQ?mx!mTY}yolQ+sd}Crw?G=x33*0$(c1?1;PXdGGhs5?Gk$;MR zJvQ9jRF-8G`Tf=MWb0X*MW$BC@+w?ElAY_?$EvqEve4(*9_3xZDjwIve)qo&V*d44 z;W*=-6^a}G{yHdq(&gzIwf!Gdzib!0w>EHo&<)p5oA&HumZ@^Ay`Mkfmq<`|qohgq zERi!h-(wU#|4yH1a$L`N-4tVsf_Da7p<2=A>sPKn$Q8Jjtq04u4)U?|bcx7s+lDKQ52CT%2cE zcfar0wXOTMxmI0ByCyGKxbp0o)QuDS1D{+WJi5Dp%Y-J|{AB<~?hjg73`fyG(fA6CuMSCK;6_1?Dv6#sqy5hGGFH5-Fy=JLpeli_u9xE*t z%Eo!G%JyCKEAhv?V$T4#)(oZ#-@F!^71u0QR=qxD>*{0;sjHJDvTpc3F!{MW&)Kt` z(Pa{EAA@Pl+kcEF&PkuF-&1jB=c(UXW!uaZ);|B{qTBuM8;h-W&`p0s?ZuzJh*{cs zCq0$l(|exf^O=^df1@|eXehRf-O{RBdzbIU7M-<$k?dIuC+y4IR_}a6F2~~G71#CU z?7oj}nm9cwr@qWp){qsMmnZ+WTPZE=&`R5Di2;EEPh~@nF<8eUh|`=Z=XCo^6d1A zAJ4CRR%eGqCuoYM8Du&DEt)}k(jITg*c=WC872Dwk$c-# z%sseis`s0Q`qx&wJi5LuOFdz$RpI&hT2j@$)kr!QfD>=7e~!pf$hTw<(1)g?;6+yma^6{e#=`n!TkbpFHx`d9t+CbnE-#yGk|n zFL}&UI=v&;|e>{-a8?;}#h{?}v?<%Dl_ z6ZW;IIy-*|RaiT*?C?$A4|lZYiLgd4^4uLUC1S;fdNC%y1>fSFH(mN?`~UU)4IPg& zHd#;Lm|wqiyH}ez^BML8)9f2o!huTjURp^p%}Jju;&QDlL6zl#@%-`y#qH~s?T#qy zHD`#6*|_M+Wx3PR*R-25W9s_S_eq=8emcq>f4gAS##-)}^1W#@nHIm~ERf8;rFZh( z&Z#+%a=iLVtDd&%e`}8awQIx01&#+YHruBkIP#5Iel^>l_12;jGc`+O-&|ii{qD`* z{@oU7XH8RLBr^G*GbeW&zj1vmp4uNdV}^*Txi@!p?f$AC*Sb$CTQxW~{?z!a=lcEO zw@8)4+nRWtywu8F*u?Ois5^p#z7dVBoPGZ}2-%{|0 zPVaih?YUP1KS(P@o{Lyh-dm8o;q4@yot38FSey2{SOpg4@wVsGxiHN>sQ7Hd8r%E# z5_TssY)V?u?Jc!Ef7zM&$E_bMmYaJ-w`ykHRqjh6sSi9NKdG>1uGdPs*5A|~yWr7N zJ}aRIMQfHAEZOmv=jNky8zK3rn>S~z*cZG0bz_gOfK? ze#L!~d~%1sk@>c!&8|5r)AOuPKb~CjIJ)duxofFb-DCC7bJSNm>ZvUdeVSBTcs{Px z>fEL7`>oT$zfRAv`MopjN$Rvi78lt6?o`O^_PlDdLaR98_4$>10uMEP_}Rz7em>4K zbnE^d$C&fi%~+NzwkG<<#4ptcA9vj;eig6Rx61W|ch-xbHTSJoai&N8atTtK^<&NM zo2`>7+GXbZyU)=L+x>$#O}9L_Ff2J`nlyP$E3Lp2Igy?e7a@# zwX#9Z`IdNEPu4Bz%-PQ`Oy6sfaYgmgP2udHYkrm3o`2S+=HxNI`^vFb`#_<26-RJ3(xteC*GY zy-ZKdb|ua;y#I8H*baj|7D`H7wZDI^tQ7p8WwGr2<@+yVW*6Lu{4?7sct`A-2R){D z`kD@|_P%kdn&ChH8)*Rz`B|TqmlY=;^g5Rim4a+T7Qzhd4tR|HbrU$XU`e|Imd?C8fc@1A=;if8$I|Kg^FN@xD+z3Q%6SS~K! zKlR|8&l}flcJmQSop!%%Tbst}h}?PWyBvdRS)|^Iso$EjLGa_W@4L4>@ymQ=&~nAR zYGy`R@U9ad3^)!|ywMWxR-5l!t7_;PUu!2Yv9e@&BX2>T{O*XCCUV;zrTSKH7YeCi zYJ4j(SMA-*_|LOGXPs@7@92N6Eb(hY#7vRaq!YKhIaa;a{gE+IMt72x&7&3NpM zUElBgaqm$Uy7BJO&K7Ow$2}K+PoI)L=^@jPvN}^~n_CW#;u>c#8D9Ov-hXqiZ7$zd zv*|~7^Hyfezj9~R{=T^<6QZux$9BxI7L$G;eD*Qd^Ctc);jE2b*LtV>-ZyH~&ROr% z{Pq?P=Rs{lwir2W&dtw~cy8^SGyBKltbo#a)z&*>YA+>mL0pQ_HRwa`ORRaT7|5xx>T2oj z{#W<5cAv|f%y2p4OX<66i#eY*1+4L6GZU!4bnA@Ftl5v*L@f4Zy*K*7)y}DEq$6*C z_iT#O)7cgqgEsmX-`RCNv~SCao4sN$Ek2bWv5daY!4l@ORPXMBuKngSxApDawN~ie zf&KftGY%hGnK-?Ao#FiTs$EuJxYBlu3nZP~+WofUjdVcb1!lcVZ~v63l(I!me*fyS zshv!kqITcqOUsv;{`(>E@sI6653eUhwnB#j6jwYpIQzli5@Su|DM^L1HGeh<1z)&T z^7>u5p_ty|SXLeZpKn11QcovwExdM+?`_5r_L(!7SIArYu6Y<9Tah%grbJibPO!zC zwrRFsqc#;y)p9DoCtu|K?{lXt&$`&k@-4hYX>s?CbzEgGJG;lF?o*6=ddBaj`*X~t ze}7$(Z+2sq{H(yKB}zUMHs0zz7sYX{^2FoKZ$w^e3-0rp8j>FQ`t!cPlIBb7Nyj$| zUFBh~Drx$$Vcu^3!yK_IraYc;WR_W7U&Dh!hP?T4=cJ_5PI&p~{AP^(Z~Hj>x|1)@ z6n&LNng`GI>XaVe^HkP8P%Te0+; zsdr;p{~OJ`VcTGuanIxB>i#Irt9zg1b?ja#C;G20Xa59C8E=bU8p4n3xL#*3$g(;# z=U`)yc%;1fk&sL4xlZe?y3V`sfd9mGFONQ26qyyUIH4@=_JJS%*W-2>=*{YVkhuTx z?h{iIEliGl-Td+VgH;tl+BZ_>f9pT1;>-E)t&2)}u;{L!X0Il@*a+dfPL)s2onPV3 z9sS1fI?Ep6Ce^YzS{mPZXC{8iXFerZC-&#>imZLiIX0D-E__&+B_jOCBIl;zZO^IC z=9?x-K6uNsk8kQ!fu+%>wC^lzn7?d!;Aej9+JJdGvT~@|Gf{lJ;c_|d!Y3v zHdAIpgI|NKCD*K?s#7w*4bgq8 z=6K!ud++Ji3%^$fafS3c8#yOVT6^01*$=1uzFSB7cU^tGz_g2DO}@{;lvYQ-kUU6IFme$T5o zra%7%Z?*H@Rn ziUF3J&mMZStKgvcjr>zKcg|OMPxyZK>e}Q}eXO;Tf2tGK38p7*xp7+R_?NW6dyB%Q zIXBL?QJeJk@dVS#;~N869lK1gUy_+|{8Qh=*14bBQx@Fp)4nkyW}eBOp0!t}e>!+M zaLS>|d7SH4KKSMASUa^{(6h&2&Mv>oAdS|$^LqQ#H450S{N{-kz1_boSz*JWqd#}4 zGnanhh?^x>?pHMJoWx2e#ftP~A(zXUUFNx;yJk*HaSS=~+bvbsI&NF`?hmJmYCo)v zc1oRkbV=>sDAUs3s%5)v?=C(N+i|6Ihs0^QCt8{+5i5?ocm99W^3_G{-pQxmbo8)T zW|;5yd=sd*{*2o^{?FfKW;JB-na&VqD>*7(Jms3tJ(KM8dHcfiG@n)N)9pR4dXtZ_ zK&kXH)AdD#ZC4-cKQpiS^RJt0R6Un}6nfl*e7ZhsljjqqmicPmW-D`VGCg@TuU9e0v7z2zqh;CEYg~&& z?w=ENdF1jtFU!?%>aHsP9X7SG<^o64o^u$?`r1)DdDDuUPrlXV&gI_O&KV=+-+ZFh zWtHvR!<-(HB{RGqdy36y=#f1AX8rAH+k}r8Ol$mIC4N)oh`RIf1CbiljhdY9?Jk}> zjchIamA^#n*I2LBDKxK^E}xE77% zO|#OyCwz9&T$526m0H3gsXSroR1-cUVY82CzMU_P_FcNm-&gfr+l5!w%Z^MoyxBJ6 zf{0Dy`>T(p$w-SgxBTUhe>g?>Xv}1erDtLpwZwMFDx2$XnEa^drpyw_wMLEy_`frC z{5{0~zt!B&p;_(2H(SjeJl9swu8(XeIR0kg{Z%XF)9h9liADuDyLV;dbeT z18)?f6D7_*Vc4+x#-0C6yI-20^WNx}8<3%}^*8&P_nV{YuIH?ozHR02J#Rirf63hz zW%|qf?fj)7Z6&_DbF1o_eD0*4JTdJuvzU?1>rO6ipP=7653FrfbpO#lwe#NA6X~At8Y{>_WT_*CW?wDzAaGWLffUm;ZeAoE} zGo}?g&3T#Q&=@EwnQJJdzU$h=Wyg4y)_$3M|BdsHOM*I=y_)8))Z}!Vf9jLd9EsY~ z@ciDZAv@c{ z>t{3_c*A^pitjUjJH_57;Vayw{w?X$Qucj1`~UfiqJM6x-#&aPXwHs1_p%sj#J`+T zf7i)=rZwm5g;`H-fBdyp$0p}tIJcXzkmKUKKvUJUYkQ8m6`90!|4S(!jr|S-~3YiYH)qW%H)9E z|>&)Yu>HgVG`+?C+U5Tm70 zawFQ}U5xA}lliQzTfU!D)GG4YqGI^j!RLbH1iizatKP)uUb{4lVf(2$7cL*0wc&EK z;}b~-uD|m>FtNn=MlrShzGx7BlyQ!Zq}*4@C0q$#e_i3vU0P!rsKO>Ssl{!ElH9_b z8&G=ZjQiQTmZQIy7R;*o@s5q@?61zo z_(Z<#)8=sN&E$US;Bo)Nl0!4D)Iaf0`?!&J`_xRQ^lbUykR6ly=Jj$o9pqLR}!Z(LDx!O9m;1a_Z$(rk>G+9bxW8&TVDS2J=)+NcTQaC>bZ?JHC3ffCC;~9BzdaSJ$D3h&t;N7b!Rc7r&SbZ zT)oVLdu>~|J*O@F?sfduY6ganGuE$I{qkDJ)?Za`qFS1n_dR@cmo?TrOz>QV1n)(| zWZ~yl7REuprp>s#MZ$l5Oa5El-kEyst?xL$%=rJ!Esizo5r^ZWPtP}nJ?KfAHcRht z>;FfSwzk}g{X0wTg`MK8&9fC3G)nHOoH!%vU?=lxJ0r`p`I35jFU*s>af5kL?Z3LX z3x;2l9zOh?-E&TM@!H+9I)(sxxVThC(e|w zo2JEO{AJitvY@5$;OPp1=DAn?$J#R_Xn*UgMvKgl$VZr zEk`##P+_qDUp+B1Q&UdNri0^8mx}t9`5k}X2&}7%n$>tp%Aqov^btnvV8f{LyOVfL{RDZ^r@?@WjPDHohz=K5OFKYSy-$ZC1>#C zgXfXu4L2Y8SACi(!Xg*!9{xAL`b2%AS=4e-@13`T1-7ko5pD0~P-8f>{Qq@ZtL&La z_xo4h3ou!ttG@1uLt$;0(8Koox^D`nU)0*^UL$pW*^Z#&51T*pEKii#6me^=^)Ib( z%h1C8?UOSZzWID}-tHh#CRJd}tZSmi zw&?Qn)UW^7*!VQRe3ayFRd$Sj!Gfd0>E|84w!2uL*b=A8W5aXFE_`cOaVP(VvUdU# zW-oDx`tNdJiLhwFJdW>8#U5Qd6n`&fTJFinaCwigr0D{d(xoq}Dkq+_a0__oP&(1Y zxF)S++Kr7B0yhJ~KIAuAODt%wTE~7Q;XIdQ_2PNcZmTo@oAB|>mh0CReLDK&^)I*E zzvWkG$j+PcQs&{i&_zz6GMp1XvL;?*zm>wYL@Idp!rOeEvB^DIAE(N1uB&!Cwd+eo z-ps~?lIxXQ(_Nh7d`06MEA96@*WRQ3W7eYg7v4@)GC1gcSwimQnyG6zH@vxe@_I*d zzQHt?m4b&|7^|MLD{3xkTC>2e*sOW}xmo26lBb>Z4(~JScbdbz)M%!9f^62uty{!r z8noT7x>oRw=SfNv|5yGC2}k~~eD!e3;*zd8ZB~oFZvVD-W9_mHHX7%?Sjs=Ih-jGR z@H=-?$CeAb-fxmr({J^#oNlRcHm&8g9#>U~%5#S)lYHtuvup48_ljTYP%jU0a|^hs zIjK|HZt-;!!MHn)4@})kW3wmOIatPf^}hKaa6FPfU(v}o%KE{~uzjbGlm<#4$`<~S zG$qFL0P}MjwN2^<6#^wIW9_PrCB{ixUNj8h=}@rwYOUK4ZTR7T!GukWw*-zmrs&P( z&)y%@z$_VKwYPc8%SElT4yNpC-STIb!{Vaay0)Eymzj3{KV#0bx4Yn){iB;tXKq>e z$8v4Y@_j$k+JF7tGJlK5ig3la1he+n$_{h=?tHvwu&FLDqxkKaL)}WZH?6LE_xobP z_Sp=d=9yJ4Db5k;P{=wWswnrTZk^uM^3xwP_U!b%XzI7F;KST<8QJ$=ruzuTa|#^E zDw{2wcGWSWa`B?VixqYg<5q2m`1|nVAG!Ux7q`slxo}LNzKZj?S!=g(YtoJV5ljbV zw@jI#{QhX;q*&k04}4xs+4b?_tBkWJ*V>sZFtaEqNyu7uW8vhl7Fi3^=bTQzsQ#2q zOMX(Aotw95fWL{}U!gPRrCGYKEq=d?l@jthd9{FV&Cc>@=Op#Dak^J>m`aOe(ydQf|C z%w0CId&~SKZXVYaezqiq(AT8shd^azA5`WYkozjXSH{_vh&~lzn<>)$hqsbHD649 z<=&M#n#OB+RsYZ5$jnoFPHz6E%YfuHoCcasBy;dbbam3Ix1N*eVqqsIn}l z_t^!HRqLiMR|(QHxYqH_tmo%p4io0UqSSi=QU~UQ?G6`VJI{3g@0p52)_*tA3!rS7{hYct!8G)vte+a+#pA{XQ51tor2xr{^n(%VmlpW1u4cHQ(1Wma{R)>@?G zGI=xO_2PA+;z_Cp&n7z=n8uc8i{~f5oqykTXW^|_yL~5ip5C@? zQT*P^6Pg#t_e&e>WM237b69qcdM4NJ&0H6MrSv{-x!l{ar(p8aNUvE*EERFLi+29> zUc#9s<@DtCp8aOwj|?{NbK+Y-ak=a2?C@esatT zyG)y$=e?HK{`g49#7+HOt)0)c|Cu=<{dWpi-94B7nvFB~;`MK0$`yzEUv+=8*eY7q zFYO_8Ofcb%grH+ryJ6J41FvNg6cxGVe+_wdijPw{|90fUrw3jnF7!Dn`OV?MuEV+y z7Nt9U&P&+lQhMgq^Dei$RYJQ~rr9<$EzWN^X`W`Aas1b|9V&CY_pUp8v!TgDd(GGH z-;=Lro-+C;Kl5=?K>5jhNsC3(75v%E!sOUa{J2xHSTmhx8}=yf&XeZ^M6yZvDdL z3pXFo*m`ntMzON3RNMS2zleYXZ7U~w`LX1m{p*)y)x+C0{MCvb8xGJ(vvHo21b*J+;%e_-B*Dsw_WSJq*@35aCVBRW*A4z80I(*jr zow%`CN-Qg2_0rcSpSc&uWS!B!7W#DUDxa@S@6?ix@kn{)=@>>;WbKdYTYOCT{2rq- zzMU&)ty~k_Cmy>m%QPYSpIySzs1Lz9%1tgEpBJ?)-0oM#!!Odc)IDa!aSuxd_3s70 z8ki*KWM_7Kw_NIUckLtftE_IHj{3gY$C&TBlUd&R>gC`^wp^0WCW|ItE7@4M$3*PT zPrYYR?p^1Oy%(+XW7YmTyF+%_)Q1sogL?LUd!?tgwxz>KHD|pJlkq}*#o(e#YHK`B zU1+^N!)3{m{pD7zCzGXY_^+khc>MmxyU@J2FAb~Nd&8C*?Rh)``x~ar{^8mv&l!LFsRI}*6x+A;Jjt-Mx6|Y0~9yT?v6NWzdGq+#I(zc zYdctPI^Z;sn{{^CZ@!eJx|J5K=ew3ZD*g9d*3?$+HoLrXLfnIy^QI{Co7wq! zd#D^*btZmAoLjwQSbDh&wiJoJ9*R+$dj`HCt$9 zY3OGcy&4|RKZ&QsPdz=nAe+l5X2qlYQ&W%bz1Ya@UZq&ce>>}Xc<^5C4WAeqR5tbs z2pyJ;o1ep+|Bq3Db$0wl4tbkT3%>GZnn)A98sB}&K zn=f$gkbvRx(>dzvp6ga8ZeXfj(EB-ff;g|hw{2I_f-ZiZ++bavKG9?O!hp7p55SpTK@5pM7$I4k&Mm#~Ea$lR-?bWGmU1M{1 z=bi1F_D{(_&H0L9|HP0VuUfW-sI4mBx0ZALod^G2mahF3FIjiMnJ+?p_FUB+QIk7G z;*>)r^+J}#o~=t@?2Ef$)A!f$zvJE=o#$t!#lMT4*O1QXH>b!uHrp8s-Rc;?$v5#CMjR`|@_xA&^`k|X=FKcyC3*R|WjXqpvU&wcR)2pY{GOf@mH}PX+dI~6UAfjZ z#cR#~Ynn`+)4%pKa`WHn5zlz^SLWIwsbvOvxhJ+Sy?2J0|H8RdN&TB5I|`p}=asMD zBWc3Xc*dOd(W=mCCC|N50%ok*-xIOUvz_k}_lw%|Ehig~{>EU`~V-1M51l7^V^0-dJ| zg#WKIdL=!>^t9lql1Im@BbN!j60X}VU3XwZnDdFW_uOxFU+w(c6Ls$A{3Gw5O+KG^ ztira$W_!=Izl$q=eHGVMW3gbJ^qsLZTCTi8(va(}sdI|{^j*7t|Me>pe9W`|fA+f{ z)-sWLcJi(lWkO<88~ZMqW{dG;FTDNGVzc%8lQZk;nU%%QzN??M@AYdxo|xrt3_aPo zADt?;%uZ+%3VRpzSp8XKO}Diw`|;z){#k#d2+OX+VFnj7yX_RJH!S#?8oi+}Uc+#YYx1laDqdet&E2Xi z@a}A1YSQnun_Pru9RDN}FYRhFe|PHi>6z>HK4!mD+>vvC$sb2{XUiW)j@;R}@riiB zjqLl;sZMNb%ie9aVvts{y;*-Q{fVx|&W-gKZW}Q&PV)-=!^EY2Rr*i-W}C#Fzg^DB zz06h<-SZ>3uXMrW49#%)Y!8O&iyY<_=QwZKFKuwl>6hWDwVqdX+k5L8&m~KqRmV3x z>bT$AJ?C6_+_UXMNA0~CdVEb^NER$<^Im@WfMDds=u8Lo_M^8xrEKEW$oZ5%uW0^P zr~IhfTe)lI)~!44cqWF+?9wI$%SXAtroZFJZVmhQH0pDoxk*R)R{cHJzt2{m(m8bG zx%l2+`(jf3UcWuK|NFf5V>_7Y=5F3J`Aafq7x(GgCb!rQT|Q!wpf%Te+B=EE-ygn7 z3OD?mmat6o!uF|LSCyA#rnz*iw)j8&l^K(jy;?Q9?s@08lZ9Tp&X26$;na6!!HF21 zgv9J62{+p&#caJ1C+&4dAm&!vor{)Y8(a4I;O+MNe(0CLtM-e=_mrMk@bU*1adO#PG(V9q`eq_#+Iro+K!{H% zr^;YgMMI-iEpNMc*#E}odbbXx&yKtGZRP3O?$3J5yjkN}7OyFa`*wg&^>ka*HC{+snoF=;oTc+E#oVpBi#jepo18XR+tc z^3O#J65VI2b^T6~ULf$m+UIqx5gU6xanIfyF#NW-89v_a`UU@1R{*LK>pj6RuHP+0)9l@d#UDcON^!;>Zrn?N& z`S8Df|0f&1(ihse;6y{hgO&6CE=;>F{y5V9f}Ya3KnF+78tt!w%Xpn%KMtrq+!tVa zkL8cki)Y{WiG{m%R@a?Ab@TFiBfj*Ciz{2qO%4kuh0PS>VsiL==-uMSQ=k1essFpq zy6@xq{Xx>^5Bjp0EhC(nlDc{~)G_y}O%!HGFY!NUefe*9@QvF!^$#1jFIAs+Q_# zm}dV-jweY+s`yejf7N4G@3bt2)jpY#T&)Yc;t%W#QVrPrAnJZwu=kU?KioIs)!iLV zbd=TPRk`kZ_iWOIjb9(HoZeuvN9pIPe0H5P`V)_SiuFEsXIJ96h9yj`S3?iJ5twzL z>{dsA^?|v9QH38gIA9wb(^6@!BS7%0g{aq|&5qrX$J1*wP z^gmm8?t3%tQsLoJ^?ZFRpW&hDd(IO*v!f39EQ)wA_3{Iu^S{<)n|O<|b1hW!nBH)| z^oI&t@(K52$|Z7bpX7vlI41MDRGvzW+RX41 z!KZM|3JOw+coW~A~$?|Z+F=4TF{~8KFO}_!R5b~Cr?p&B=z$A0-I<0 z7X4MJg|6Q}YEA7@qGy^X!_iHRb$<2t>ReOa>}eKi3AW`taZ*Bf#pY~orl>X7Cd^lBKC`G( zs7)m=w0x_?N5-c4NjIcrC#pEzm-?P6eKp)*;`yb0T9-UmCvzXp@b~?4_gB+K&qBi& z8!Rd}l}z2sd12i$?ukC%Uvul2&f-4yJ!eGd^il_5OBSvBN?PG>CT{urCA!>{H`?UI z^dG-3CaymqXAwUs?$^UNb)MC)+c!FDcU%g#irW6;XR(X!dw0A1%WU4-hj%xKc<#0- ze!6OdJMTZAb?2w0F8gtAbM4yKw@<`qZqW|5uhb4YE+W~kF4FL2-m|6rPrjAtGd{Wz z_~M2*$A&J+hnJIN);LcJnAh*6cv9_cw)%JJEt?b@CT)Ls|Ifs}*}se!<8S|bl3}9Q|GJto%RQjn$c-k`^A&mCt?Q=cFs^EcEWCo4vrNodxp0d>v;MA2+#n zn)|~9rDgu%i6_7Fx4gW-r6ug}a(DMOg~B~|*QWerwAuN@Gj~qAd@4tx|HN){@$jT4 ztc@YR8?U#x=Zmv-y;2llcV4nKHFtw&xZ3B7O8azvJXOlQwl(ULV_&CVeNFKHtO${xzerP}32CNEL8&#Sgvyxj7-V|8O% zG20;T8pg14X`#29j(yX=ahcQZ_r}a7+n+2c3fWU*t^1hx=KsIGXFk)xg$uT5nk`QI zn{2dI=d1vKwS~)6wioM)oF-ngJG)O~Z%t^k=*{dFrYxqq8w+j;esN#0IQW$7Nwa${ z6P;4d7%gU2lH!%?vTwD)WW2c%F=F`l-V{^KPZiYJB%n zY>C)`&C!=t((IzW->ILID9h6GJSGryWLC0DGV>n+=7z1@FZ-^(HgBK(LD=tt?A0cv zcUz^u?qw-j#9#4!PGaisx8KA+IFx=#xyG}u{E_J6++@z9|M=V{sBT-gJMQi($!wp) zU&FtdJXrFire^P}RbEpaKN=Uae`vay^h zQNpVHZNKw*!`C;KTnut?6c)M5n^9Z&#oW{^T>id<>4xOR-a)MTJSe5vAUYO?RCt$`w=oT71pm($au!#bi}#z z4Aay*9~uP?@_27^&UEDI*l&A(>k@_it5kk53ip)MzI-qEWTw63(~+-HE^?tCW3#3)oowXVKCzGC5XVQ$h=b7z-(%`N z?$}bYN%nBE>Fx936CQra3@N;Peop;Djaw;4a+E~sx)T!iZ?5}vFG@_k%h_D?m&5v2 z<+jRWW}JJrr#%r^uG<^J6nAOfiDiG8|2|}{i9da1lFK6g9HYFelHB)Kz3mG6q9U<& z_r$e6yVu$X#%JPgdS7 zsnE3dJH&qN-qwnr$NxB$Uy7f9s^D?4_1DEM{f_sHZvV^8(C=t(D!9_zR}sGD&@TZd zB_-noiI~s-zTVV+Rh8G5A$a1^u1NvQtHSfWxv#!TJUrFfSKr)s^|8Ih+8qx>9$eiv zyF~N&*5^7~E=t7->TfTx6PtGY`Nm@_4<1xmcFFMZ!Tf7#WxP!LoIUpm@ydm(9WW`` z{C@il?y@T%Q{VobdE)E?liD};PV07Lon#CPzAY{hFmbP3WAFTxJDzmqBs+<_@~waL zaC?IC*Fy)6+_w(hy39xA(Z?~4Z;9ZGk2zH;bmP5q~tlDtECf$!%( z9}L7oDzCronH9@z_pxo+M*i&^{!L$gtaRd}nq~T~d$vqldp7ok!t$1X3a7becF*`c zUH0Y7#|$4PbgN}7W4Oi4>9;*he%tfHxM}@`bTbLcxW(i!dJ5ryf{o!RzzPRqWV*=e$?OeL2ZFv^Ympo(E zT=B)bd5_ZWIBtbl1Ep_Y#H&NYYJ9^>_nTOCaEsI}@6YTj{ES7vdCh+**~flNWcrRk z6}A=4Kcd5@DiP8dp~G> z-6+BJ#qWn_=J})|`P<%%qISu*aiFJcU61y4 zcqbK{uvSrtU7?Z?BlTXxT1bxVVqbZg>f3|p#{o$&_o`=(Z^nR=z9oe(@8$++HO7 zTz*X?M~eIMZu8sAZnA0i%@*gp@upbprT(PL;#Q@e^=*7Jb-P<<+TG-E6#3kImzQ%5PCgy#b<5S6}5-FS-jr=miB!%EmeziYhHm};Ij?# z{%>3hn>;el?8>+5miqQEz%I~jIg8}3b=DyhTpG{*pLpxZ&Nu3gOC7ektiE0UY_a=e zuiiy(e|6uy-YDDN%2;*rt#+o&)a!>54BGvxD}FHTc*ky0?PlBCeQAZjW6ncN5~p$w zKka=cI%!WGm*mRq&1$cH-d?r1Z4F=6W`TcqGXJ&mP5alNx!|$V{C#byZ_-NACbsUq zH*dE6(h7ZvfYQ>7ZBaQ}-#p!;fBNKw*@jb!cP(T%@i$fOU(;@#EzYw;HwTvA-FW?4 z`gLplW_yR8ilD5`y+<^^N_bD!Z{8SETY2M+*n8IaCh4ZN@e3bBcRCvM#64a#d55t4 z&p!28^ZHuDehSXI_gVATu`k69>oxb~q?SE0o&8-fDspx1(ujM3D{8JCdQ}i0+fZ;^ zxaYXy)-3Nz<12_i zq4oL2nyt%XTF&f`x#Fv`Eqd+ST(fT0+Ete$_w7?RNc{e{n>8QwdhxmG?v{9UpxC@+#a~&GZC{m^uUOl2UhVb6edi|lb)D!fOMGSQ zA-C$u;}>lcH8M-TupMAr{9&!N)ylW>kE@(ciyL!Yo3>HokAz_6b_Ng5EL*wED5)7& z`Clk(@!ROkRMD_-y5dKh7sq%r9r@K-!yYPFpFzI^|na*e1<)41w!kFOHK;b}V)0=Q6po zCVS?jV~+*=EvE2k9N6)=PpBx%aOMHSnv6rsJcvkGxMNH#)EkU>3TCX z#l9K7NZi!$__Vw9);SfY^G%~aR&Y*hF^llKy)KDow)*O>@=umqRTr3)N^RlSn>eZW zc5`GsC--fo8_ZdzrM%wtYs}8Q^OE3o__ZsX{dG)3lJd7T|Jv2~ri;j~ns|KAsmps5 zniB;$blrAt(hr9ujTc_bp1ZWsB0ysy2uIvo*+ylY%l%;oxvEOHu{fu4o;d8#WILBTPvD~B z9e4IOWuGN|u77pdTGhbpUbo*WG{NtT$|Ajg%T}wUF0M?tUXZ=l`JTJBvr^rg!*N$P zlui1+^TNE$e<%M9Lr@U-EBay}8B01N)CTJ(fC|Zgl*SLCEWax<8(Oo-ONA zX;hT7M3=el)$gkl^StgoXj!t(K>BA(ChyL@enEWqFCV>R&3-gmvF~}vkBAx1R|_55 z_a=+|nVQb+(jzt3>op%m?62cx^nR1@{^k-hq1H3HzfTGIWSCp#OrIUoXrp&S{F|ND z;ZLTw*Ss|AE9s2%eKXnTZb6H$_qD%lH9e9pTf4nInXa6S$$b~x{BOoJO*0+YcGlPH z#lB7XQTSx><;`2%zwWy>>%X7Y-2Q+26ApyEUG}YQnZl$i;^DjY%ASur@a5R~tfkWf z+ByS07!I$CJ6iCjZ2GM9t9_1MNrz^xy1%d4bgNWAh(X=8!~l-+oo_P*YYMgp-ag?O zxNOZFkC5V%GZp)1{Qk0JZDM6r{}P^}8_D1F+-_{SZ*Zf0f#>@Tf`6*30`l*1ezLqC zlDpCMGpC2W@?pIRf%@N)w{KkgJ>O^Ds)~y*eW&(zcG>^c-QWLVs@IEphqB32zR$4R z^leGo>kuyXIbKJ@mULMDbxGG&oT8&y9ripTuiI~D);g|C36qX}+ER@BDvi&^w0q9B z`n7D!%7sl0Q$C$|y>J!FO^&Obkssr0`*L&D<}5!Gl|FH6wq#Q!|8J!$_pDA|(b;@_ z<0Ah_37ty$dSSvB&t<0{{(JEBhS-U-j%D0+eVJ%(_aibnKVD(ZGMSs3JglEjtG@s5 z9VuD+RD$_Kl7B`gSbp1evQhlXXWo44^X}oewM}XaJR7Hg^k-%6aJ`d zS*z&uSI@8Xve6IAcf5Q&>vWHXP5SgQvZEnI?~m5btoZ!ueOE;y{Y<_IR2DCI)Ohsh z@7GE~XOC}8t;xtQQ`_P#Ifvi##Jb5#ZnVrSn4{M5idW&cuKCAn9<$eJUh;}BNpqKT zD2Wkzc(Cno%KZ(uszoMmiO{p2z9d=i%D<&Y*X;aq=YezFzEEBrje{C*yZ1VH``=~J zyd@iL7u=F?{QsvdHy>C2iT!xzkjDSh4$gs0_m%Jb^$x$j_Szd>*5Y;P-_B|IzfApn zcmKxYrY@_trhR3fU4Q%V8YHE@vA2-1%pf$~E5oJ8vG^__57OSFAZqDESD;=<@2P3z8|5>%{RV_Fc)5Fx>TO^N@T;dCN}dK va(@hem<5-5FWv1~xo~dWXI+uck7Ab2(&f*Wp1n8o-zm$hi$4neWncgREI}N@ literal 0 HcmV?d00001 diff --git a/daily-wallpaper/translations/en.json b/daily-wallpaper/translations/en.json new file mode 100644 index 0000000..8d1260b --- /dev/null +++ b/daily-wallpaper/translations/en.json @@ -0,0 +1,9 @@ +{ + "notify.applied": "Wallpaper applied", + "notify.failed": "Daily wallpaper failed", + "settings.locale.description": "Bing market locale such as en-US, de-DE, or fr-FR. Empty uses en-US.", + "settings.locale.label": "Locale", + "settings.source.label": "Source", + "settings.source.options.bing": "Bing", + "settings.source.options.nasa": "NASA" +}