diff --git a/docker-compose.yml b/docker-compose.yml index 0a27e0fc..6cd6af6e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,9 +4,9 @@ services: container_name: multi-scrobbler environment: - TZ=Etc/GMT # Specify timezone from TZ Database name found here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - #- SPOTIFY_CLIENT_ID= - #- SPOTIFY_CLIENT_SECRET= - #- SPOTIFY_REDIRECT_URI=http://multi-scrobbler-host-IP:9078/callback ## Need to be whitelisted in Spotify dashboard and is used for creating the connection first time + #- JELLYFIN_APIKEY= + #- JELLYFIN_URL= + #- JELLYFIN_USER= #- MALOJA_URL=http://maloja:42010 #- MALOJA_API_KEY= #- PUID=1000 # required if running docker on linux host, see main README Docker setup instructions diff --git a/docsite/docs/configuration/configuration.mdx b/docsite/docs/configuration/configuration.mdx index e09759df..18bf579a 100644 --- a/docsite/docs/configuration/configuration.mdx +++ b/docsite/docs/configuration/configuration.mdx @@ -1806,16 +1806,92 @@ The Plex Webhook Source will be removed in an upcoming release. You should migra ### [Spotify](https://www.spotify.com) -To access your Spotify history you must [register an application](https://developer.spotify.com/dashboard) to get a -Client ID/Secret. Make sure to also whitelist your redirect URI in the application settings. +
-:::note +Spotify and Automix If your Spotify player has [Automix](https://community.spotify.com/t5/FAQs/What-is-Automix/ta-p/5257278) enabled and Spotify uses it for your playlist/queue then MS cannot accurately determine when a track will end. This is because the track is "mixed" in your queue with a shorter play time than its actual length and [Spotify does not report this modified play time in its API.](https://community.spotify.com/t5/Spotify-for-Developers/Wrong-duration-ms-of-track-with-Automix/m-p/5429147) This **does not affect MS's ability to scrobble** from Spotify but it will affect the accuracy of the duration MS reports was played. -::: +
-#### Configuration +#### Authenticate Spotify with Multi-Scrobbler + +To access your Spotify history you must [create a Spotify App](https://developer.spotify.com/dashboard) to get a +Client ID/Secret. + +1. **Login to https://developer.spotify.com** with your existing Spotify account and accept Developer Terms + +2. Navigate to your Spotify Developer [Dashboard](https://developer.spotify.com/dashboard) and start the **Create App** process + +3. Determine the correct **Redirect URI** to use and set it in your App settings + +
+ +Redirect URI Instructions + +A Redirect URI is the URL that Spotify will navigate your **browser** to after you complete authorization. The URL will contain the code necessary for multi-scrobbler to get a Spotify access token. + +Spotify [**no longer allows insecure URIs**](https://developer.spotify.com/documentation/web-api/tutorials/migration-insecure-redirect-uri) (start with `http://`) unless the address is `127.0.0.1` -- so `localhost` and internal IPs (`192.168.0.xxx`) no longer work. + +Use **one** of the following methods to specify a valid Redirect URI and complete Spotify authentication with multi-scrobbler: + + + + **Use a domain you control, with SSL certificates/HTTPS enabled, to create a valid redirect URI.** + + For example, if you are already running multi-scrobbler behind a reverse proxy (nginx/traefik/caddy) at `https://scrobbler.mydomain.com` then set the Spotify Redirect URI for your Spotify App, and multi-scrobbler `SPOTIFY_REDIRECT_URI` ENV, to `https://scrobbler.mydomain.com/callback` + + Alternatively, if multi-scrobbler is not accessible behind your domain, then use the [**Echo**](./?spotifyRedirect=echo#spotify) method with your own domain instead of 127.0.0.1. + + + **Run multi-scrobbler, configured for a Spotify Source, from the same machine as your browser in order to get credentials.** + + In this scenario you can use `http://127.0.0.1:9078/callback` as the Spotify Redirect URI and multi-scrobbler `SPOTIFY_REDIRECT_URI` ENV. + + After completing authentication, copy the contents of local multi-scrobbler's [configuration folder](../installation/installation.mdx#storage) to the final location of where multi-scrobbler will be run. + + + **Use a docker container on the same machine your browser is on to "intercept" the callback URL from Spotify authentication, then manually finish the process by changing the domain to your multi-scrobbler instance.** + + + 1. Create a container on the same machine as your browser using the [`mendhak/http-https-echo:36`](https://github.com/mendhak/docker-http-https-echo) image. This container runs a simple HTTP server that echos back any request it recieves. + + ```shell + docker run --rm -p 127.0.0.1:5079:8080 mendhak/http-https-echo:36 + ``` + + 2. Set the Spotify Redirect URI and multi-scrobbler `SPOTIFY_REDIRECT_URI` ENV as `http://127.0.0.1:5079/callback` + + 3. In [Authenticate Spotify with Multi-Scrobbler](#authenticate-spotify-with-multi-scrobbler) (outside these Redirect Instructions) go to **Step 4** and continue the instructions + + Eventually, Spotify will redirect you to a web page with a URL like `http://127.0.0.1:5079/callback?code=xxxxxx...` + + ![echo](echo.png) + + 4. In the URL, replace `127.0.0.1:5079` with the address/IP for your multi-scrobbler instance so the URL is similar to `http://192.168.0.101:9078/callback?code=xxxxxx...`. Then navigate to this URL to complete authentication. + + + + + For your convenience, I run the [`mendhak/http-https-echo:36`](https://github.com/mendhak/docker-http-https-echo) container from the [**Echo**](./?spotifyRedirect=echo#spotify) approach on a domain I, the multi-scrobbler developer [FoxxMD](https://github.com/FoxxMD), control and self-host. Please be aware: + + * I **do not collect personal data** or any querystrings/data sent in requests to this site + * It's **not possible** for me to use the code sent by Spotify to this URL without also having your Client ID/Secret + * However, there is **always** risk involved with trusting a service you do not control. Evaluate the risk of using this site for yourself. + + Use the [**Echo**](./?spotifyRedirect=echo#spotify) approach, starting from **Step 2**, with **https://echo.multi-scrobbler.app/callback** as Spotify Redirect URI and multi-scrobbler `SPOTIFY_REDIRECT_URI` ENV. + + + +
+ +4. Save your new App, then copy the Client ID/Secret from the App's Basic Information page. + +5. Add the Client ID, Secret, and Redirect URI to the respective field/ENV in the [configuration section below](#spotify-config) + +6. Start multi-scrobbler, then visit the Web Dashboard and click **(Re)authenticate** on the Spotify card to start the auth process + +#### Configuration {#spotify-config} diff --git a/docsite/docs/configuration/echo.png b/docsite/docs/configuration/echo.png new file mode 100644 index 0000000000000000000000000000000000000000..612576eb312ecd57d3c886a76122f2e39781b5a3 GIT binary patch literal 49800 zcmeAS@N?(olHy`uVBq!ia0y~yU@~A}VB+LpV_;y|-NFu%;4JWnEM{QfI|9OtQ?>b| z85k58JY5_^D(1YoTUjIW^zVU>=if|BHdp*US3s!9xuJmdkmNgO7Zwo_#;pq17H^H( zxb@ZfRX1)$tzPTpDCi>K$Tu;XZ|8dkPX%^PPL`td;+%J9-~IX55g9qj!NG~c?)`P` z_1DwN(&nY7m8I|dTsyBa?A67^?L7*265SS0?CR>;wysTqqv-+9C7yK(#W;sA|X8{Ev(jAmYV{Z&LvY+Gq4i=)81EK^g{43k-5y3Q;H zPP136Ud{ZfS)84{-E5ujX$=vs;#gM!Wsar`d)kU?vUlyyuWYTJw|8%Cboj$%TaR0D zH!0l7c41K7vU2y{n=3TmZamkd!0}zGP)&@*QGjLPT|vek1&$^Kj<SV2uMkFH8(S}va+s;-#_o_>hR!@5SM@e0e}0yCi?q+Jd#~GdG1`< z&(F`NA825du_$Qxey_U!)2C0?LEr8k2%GdWFL%lG-cEyHRuL7?f1aN*Wy*$}n?^>)#*806 zd`P&o#M8yaWkbP3r?m6)dM8g74h#%j8>imuc6gC%cR_ji^ZfeX((Ctp;;O8ywE21^ zI3z4=Th-6COV_O7X*f66+T6OI<%dR(Psyre2M+_Y$8ty2EQC&G9Ek{T-ngXY*4%81 zia#8$xqDJ(hRk?(VY#KP?cZJR`Q>aR^7He<)<%`4Yn3n;KRc87{oP%$ukY^dwT|6g zmU^^Hlz~UqY6`#Ij|M(jD}$mZ9(pl57_QW_{r_>?-l*P(mnU{@ue%-H? zN4K0f;jw7Zq6=ADMa0C4K0I*Tw0Se*htHprFD>!(ot9`c^T+%8|J)5*x0*7u@hBJ= z2xx0-Z`!=svfzQkhzT_5%8*7>xA1cmQ+%jM_S{nBJ> zX4KZ!es*^D@ngNxXP+Oqc4^Y45G_$dL&KJqmIYy}Po6uM_Ws`9DO09w$-2AX-?NXM z>hlub-r5?ovuNqn)4PM!d}bVI5MSwpGz`&F?NOJggsg z{Og@kNs0LQ_+4dhyS8pM{rK@?`I|K6T5*&}y4`Y)Z3x4I={ zQE7H+L!88>%NKNOxc|Pos&VJd#`+AsZ~TAS9$q~B;?L9enu3K>xJzGcTUXZ2%F1e( zcgN!2=lTB?P8V&yT&Ecx9-fnvv!mwcrlTeH_V$}LZDOeS_w#w>yPeN1>i$?RQ@hz z->+BNYCbbAyr>os5IAtCmHT3b$+O%XgMtSRPEJk{JBw7WUcGwb=1oOUp>{smO*=GZ z`KWb2-Bten+=GM7mbJf3e*XN~(%NcR_{injnn>rwL`7Fu*FPT)^ZVwl4_nRZurkCb z^_0k#DBZ%s!jQ1AOG~}Qm-);*bZV;h*~VICdwct?uCBc350~V4wx?StnJjvhYTd~)HA-*3wD|kedC&AUu1{b2-8ARkX=B?K zRckp{Zr)+$cUe{*z5RFB&z(PCzO}VgY_U9ZMRoP$sZ(30P8BVFe(veg>2Z$^^V@Hk zp{}6NaN|bAzc0(}HR7)StIEH@8oiATUig z`q~P+`X7hoEvmoifDGFGe&6G>=J!)>Zc5$r;ShI3WTfd%-oU`X9x2nV`~Uxa*NNLR z_mZ%Z!EW%!o8C~P$+C+EW-A0N-L ztDQAvipaLy+iiRI+V0!8FE@5?bz9i#qX`BD4-d7LnR+~ro!-dk;p5}7FhD>?hUdbo znKNb@rx*SEQ@QWgtJP`GE1ymc=iuNl_+S6_=!3E>y^72W0!Qwgo;f2yTba4~yW>M~ zw|`SIO!&_o`gX8#1!L)XiJ1F;dluF2^YL}l`kDV%Y`y<>0b#*&hIb|Tu4=rG2)@+I z!p<%%EZiKnT2)=WeXe!+qU*0adwW%ljD#AV&#Ug!4qvz6@=Gb-=-p+y&FuWg&Yta^ ztnM!)E#2MQ%gf5j`sVKL=}k>c#gY8>e+*1bO>=H+IJk(O;lTuh3Dc$>JJ`%_ zD8bWvt=?8^YL}q08z>+8`to{uddk?<+(?=ix3@}APR_5LPgX-;UtLkLF?hLOINn=&t}85tY@eAKPKV$~|6{r3yr<#ISg zN4dSfxA*0(t=ikRZ4(g}FaGi((8$P0YUht+JALccEXQUxK>>jVozpQp zi(3Ew{(iq?|B;o!%auGQxn6$x<>lp-Yt}s3{eB;FRGCiow>O#RK24oEbz}a0JH5C) z8Flw>-=1Cf_t(P*4;(x_JCBy1xOHpR#l`Ny;onc zWnn--Y;3RJ^6V=m%P(dGXia@qdgsmaH`8~#HZtIS^!Tx5{l7o5CyyLCc5GAK-(RoK z8Q1@-S+r=;nR?#x*zLD_o2Ii}PfN)$;rtZH*YpRzxZN?&cFNzZ{OZc`5frz$hdXuR*BwYX}{;BrloyaU;meT zZ(RPoXYbzmd3bPmdV2cmExwpB!!VgmJ8aE{2tEZ96OpAsH(xAMF*csOX_JwXlG3c0 zbQhNv*AEvI?CkcPOr11o(yZLL38^<__Bhls1c!$o|MBs0<*%2^f4#bCmz$ z&Ye300|PIa&eE?%TKTPWk=XkdTlK$;bKnWGtOL zJUE)!`SXh6WBh%5cqXZAOg_%{=<(yuuCAmD3ml()U%Ytn%lrH7B_$0|y+A^~?L`<>^_My-~2VoLTqx*Twzy|J6>vxw2B&xt%Zd`@6f(>h*m+2|l%*G3f8x=LRP07dkK7IbY^ZmZxI(c5ZOI{w@ka+mS znKLQ3x8**0{@l3gOGfuEQyFG|fB$dq@1NgS`@5j5EbY^ilVXfhqt+ffb!yeg{cO9- z-X1!8ws*q@g9ZCmUc7j5;@#cl%(~XoCQh9A<^BEn#_8uaBpzndi`{jkg;Thoq=eu+Xri|ge~b((GM8M}Jjy1rSnq?($W zSFT=d{Qk!6vj-18T<3YY?#o4Y7dN+0XN=FANbfN@aq{HDv*!1oJnpxDcK`oB^Xt~r z-uABF$ToGcacZ`m`_q^GhYn8N^vCJbRIivhTT-5jKYaMMFYHo4?7{`lUhuC-|JP@* zR%mI;6E|MZ6XJ#6MBL4rszYeuxk8izcT)tdg zYwD^%c9;10`)-cD-h01Zi+=L#*{00P%hc}IKbh#hVe8i1DWZ&L)UT~JX5;PZ?mqk8 zeCwU7zE->?Rjf1tw0MxFSTWyT>IfORM(xx70^RI^W#f%-(#^p`yY<*1C-4m9Y-5IFr4- z{in~L&mQzIC@{#&%Uct%vFXvHqy_tof1a4Aym9;X<(oDM&GkFZZ~rIZT>@`Hc6PP5 zdE?ThOT}udva+)!Z7K|o_sK3^wybT-7L!k(KAmZFOG{IWi;H7nVVS}Fh>@9X!mL?Y ze8(JyX5d36y}U%wE1*ttuOJNTK@yXie4tg(x( zU2KV2uohgR)wvueAKD_P5BR#ENx7Eq9U(VLU%WKmQo)=%M%yMrXSrNFn;>$(%#$P(;?(MCX zw5{6WDo~a?;ikX^6Bhjdd6E3v+s^)}Pfb-ldGh45H4~bfnPsiZww!pg<;u^`&vpO# z`}(H7xUdk^GM+fmF)&cj)z$UJjTYYGB<13p ztCNyvPM&;tfn#$=U!R(;ZZ9aT)p=`cYQSEvOG!`PzGCL`RjayIt-Q)IHHrFa^!7kx`rugi)x3=oeI)ComIT=kktCAI0UrnAo+1bIt zp}V=^U^Dyns9A45pSOR0GkyNn8D=Ff0_N5Kt7KwgI&tE}gZTfy#M${|Hq1!>`RVD} zp!wT^a#MSCW^dr*UAAsf&#KMtA0$j!znqk~9OqPiLU!>Q$A@c{J=)T9=pb)!t|}`V zsAKar{+#{am;O2t8yc?1*UN5=>Wx~P_V3Tn?Qc8#v){W({o8-DTk*o1yZ?J<@y&kq z|IyQ@sqgFyjn(|;oiRRdbNJ8C&$HhiHpslB5)&I6xu>FV@_X|;XDzL*XUCft6cuHe ztabGC^qhRw#Lv%f%Jk{?ugsmV;wd(>ZyBfy79O6?m#}K}>e+X$^Il$OYxnTs!weHC zzj-z{GiI(?qXX(#cXxBUEuQ%3QIeChv!PV)vjq2r0S}%&P2IT1ZSl@Tdv0lIX}3O^ z&i(uCw{G1!W!kiRpM+Jfe_OqJ-MV8bMv2+k+*iyCj~+Yr=-oTN%1TRBRaG(bINr~p zAt84*tZ7@e^7Y(sP_+5^nX&8Z>N+pJ7!VzOJHy`Ojdyf(bn(vXd7rnMOG)*z)z{b0 ztA4lB?P<*2_e+*6S>k%Xc=AaXKR>>6=guuzvLu2l+#xx>%ZZZ(RS{wQF|<|C#%a zxj4M+5$ov(sqgRYU29cv``+H_o&W#+UVpoDd!yIVq(d#7IX5>gz51$nZFqd`R9Wk? z4G9OCl9H2W+Sk`DW_T7idDXQCvxWN49=JGVZMl1$Gmrdbj_>)tngP0CSKoqAJf z*`%O1>i^lav`(y>I5B@t1LG_I6Q7@-f4+A6J*P=3|NcC;-+nUI#oOfTmYH+s-Ysp` zZFOo~zC3-gbyR$O{HIT!@?IS>OE|y)Dt6rEYp=ZF?NISNGuL|h+UV^?FE1@sd+zD$ zdo;!9;@W8QZoVo1{{1U?abe+2o$R6_BW3r#9Fx7#+w;ul&XhIH5}9jVp7!(8(-&W> zWMpLxrFwgRy^guNaQlW00&By%=gysbbmxi7moLk-#H>v}Kku1)(E4ZZ-u10tuU}YL zC?=^TFE8KSw|CyWc^;Ee1XIF7Lu0o;HaV~%@o+(5VdB+Qq0hdSzr7{O&)+}ojTAR; zf1UY-3=<6zuFtNuhgvvAL_|K^OrJkfe^Ta7FDZANGYp*H2$T+pL`1y{Ck4nkM z`&6~HPbbw(VzdAEBYE*_2k%oWR;@a8>eQ*4#=T{~SFK)sma)fe@y3YrTYoQDwW{mW zr%!6L{nzu|i@Map^7UZw^K)}AzAPzud8zgCa{t+{Z(K^26c=}oiIMsC?ORJri-54O zv#Tp>`uTZFmn~a%ve@0*s7O&!@x|AwbMx)<*InLvSn0&39J_CmR2GJ4&3=2~p47Wj zetV>PpY^foGpr6ror=p@_&8L&ru%DJYU;yx@A5ACd#nsG zDtzSf+4A7Md-J@f>zQ)(tt)#QTT*;B-_g-g?0c&P;|cV`slxR~^ zlaAeOJ3G5xtBLX63j-E}t=81i+H_-GHuLc-(8gVbi9pq6U@d=;&u>W*&ZXbMw!~^8Y>R>grZse|`Op&(ulHD>Hj` zRPgnePYd|o=aw#5aKL6!PCU<;;UINudWtvhI%sTXSRH-CYkKJxV&q@bt+O0XaFp#6-o^)YNAeL)V9ehPF00 zGdDIirlh3I*evnz;lpRkj92j6xc5rAMny^K>FIrWdAa?^kBZNKT3cJcyu8f5;(fiS zsOZ%fhblfia6Hy4-F`6P!K0(y7S`6YuV0>0`}^C&w{Oqh*q9u-HEZflJu@>in}0tZ zr=+Huo~paEqUY16qH}XB4}(%-hRKT(t3QALa&mHRjJSSrvAd*U5(`^%b2t2?~9Eeb1h)5mxv6@Zm7O zaowK^Az|T*873_3?DseD&pVm2XwxPkeSQ7nghx-FTzPS9)xwu6Hf<7$oEE4dvi;7? ze_?k@8GW2zeeq+}=arK4t^Im6e5OUAlJ|7Ir=Oml-m!D1ps4844ngG$SzGt~`}Mll zFXGVK@YW-3L9C7U>)f78o`1Nr#Q5mbmseh9O~}cqbP+x58tHoDcfa!7^N$XR%WqIz zK5N$Q_sVzIELx=0Cui%mK5lPEM@PcXPfvaQntyHk$;{4YQ1hc;OO)=A z2@ko-CxYFTDUoXW`sWwTD=aLu`T1n>o-dcYK`pjBcVgnI-3&zJ=o z^`Bv1Z&&>6%)wi?W*u(l|9mYvf97xdkdTmos3@m(H;W8<6K^XLCOvOZ|#hYuezuDti3mU?Y%^zj9b%@PI)3|>noy?K*! zZCz~kJ@$4!S*NvOm-pA#`=|-OeECwwzV1$vz`5e*=LAJWQuu_5ii*zkI~+bQo4_w) z;o#xHvDm$T*|u%dK;wNZ`(~Txr`_0)$RlqzXVoe#zqwYevuDqCo$OjwWi{J8U(L#D z)`t%TT3T8bWp5%T*ETQM7yN0OZuAVZT&ay4H$Gdwz(-9uG&I!rTWO}JPL*@_h%UteFp9}*V4Hq1EZhQYacw%PkUJ^lUFwY9q^D!XqgdU{Gs_VnG|udL%oHdm)GujS(t_lhc{`md-@$={VXU&rO z^!c-NsgItfrsLv^3EA1%a_rCi>^e)X{}mIuB7bMwtL_JH-kdoz)0mT=UtLG1hfmfj zARyqtuF}^Lo72wn-Y&{-UmLxBQ~m$CvNtyv4?H^B{qwo~e@`zju7wL1f)dV|na1oZ z{BIvWa>StS&yTS6*WX@wbl)lH>c@u7O$YZ@EB02+&&*m%M_1pewx0lw`uI2Npx=LSPi!@O@dgRE1ckk|HY_NX#?&8K|_hbF? z=MS}V=iff>$>9|JhJwB z>8K5_f8`we`h6GYe%$NCrgweikNCzj^J0%n)_&2r*QS+~y=uj#O%L~Y9sa1*X>97X zD#dkorqwRtJ$v^W&h+Uu(%rXjpKsrCr8~Buj_tW~Vh6hw?i`4n*(ms~R`=wAJ7?d0 zk^9Q;f7!9O7vx^+a5NRH z7i8?Yuxy>|-z~No{iR|ojytY*Ft}w1^C}+`6B7%Hin^t@NlI;U=cP-RZvRql1x;!% zTJ6r7ztt#eFNvgJzK1SBOK1y~#fZplt; z6a-C{FT5MLbJwnIrLrK7qd;EQlFHxrJP&I8yS8ipZUxY^`k}jyUtnq{zIpTJ{Y+3; zG%0ZG=Tl-<2B~n`t;_^7R`38wr0K%D4hA=nMJ;9SECx*=gSJ>JH9)O|&)A>yWi`0= zz4qMFyZhBWI2RnLz9Ap^>#^lJktdVqZkfJRpZDnJRq+?XDtRCN^xs}&rQH7KO$y)I z%J$6IHxs1p^;gY(yh}T0p7@FL-JTY9n`XV??SHIyF>4AV|L1$twIeqsscP?wI(W(T z|Ff<4c@E!SX3Diy@mXu?*VMHU2gAMXA1~e>_u%2axQML@nJ4Y0+_-34kbCrRVYAc& zvuCAtzhmuB|MEK5^XK#PKZy-zb9KF~U-awj+ol5wz#XS_(-TA(i+{Z7X1}OkGv&nv zj$h|vT%J06M|`O`{%h(j{wHU7PtQ!sS{KKNbiE?qD z|DAGYu1ybsR~tr@%KzVe9s$JBp*-r33L_Z(`E z{>(A&tCl~1!85nQ&J_7m7Yy$f3jZ_$xrV`^bT#*?!_^m6KS#$!6nC9=bJ#xV=jKn6 z_ZIR6Jg|R!{)|RtzhLpd(?6{mc=YytRTIP{xQq1dv)^9b+^rL zXRZ~wf3dL9_sUgCgDa8-PmXQQ&9_QsFFEA5tKr^8ZQ(SVGao$Sx0LQYlK->myxH;~ zS&O;l^EW^1o<40-$nqtZuk8O=U+e$jdicJFO@XdQ-h8iI^N9K1CN<&5TbD}mO7O6y zI4izv-}mhP*1kQ~xjb|G*QlJ$a6azH|M^5q9m~#D7ni?(KKuN>M=NY5+3z)-dhVJ* zePDUnzsLPGQ=fUgKWRL}Mni`GcGjl8wU0mRmld!4=J#&5ng?IW%pWSoZlyJ{Jq-#;{Hlz zuaqyI_8T5%n5n&aX>T&=^6Ie3VdYnyiX?xByWxJ3{ z`XQ&an%ntQ&xA59)fZgocJ63=p2!{(wP3mWDaE%0oMKf~mTMg2DSq(f(Dcez=KG&t z-jX0U`B;-;%n-UH0kw&iV(dQ-o)InAr3Abjr_c|Ibg1>z}VU9U>=N^VrAl z^`wH{+OFlh;uDX?KQqk#r*!U@-7(|Ge*!N3`R7uU^gwvO>arZ!{C{P7`hWH3ZfJaH z?|SWew0eWk{t0|CzpsBj^YgZ!mkj&I7bfO?e;-#qJNH{S{&}m>lIrO9;-FA@t)>kIZ4?nf_`@Us|Y`Uyk9^5Dh zohafV%3ksQzu(66gT*zruinS(`TBOJCf9MrKMx<*U0J#2;;j`I)bpQAUg{|^!Snux z2G)j4yO_^i3!M_S>*32~Eo)33O|~}ByTjS4*HiG8bKBfEUJ)I#w|ySAWKX^^Be4AN zCPsr-nyWXst`1aqE}M37cDrNH;?g45Ytt8Y6dZSCyeh_hGDNNBXuPmP(5*)gRxMhz zMJ${@T;xTRfW=*_&?_ZrqIGNeTAKusvGn_zP3{cOlJtX`Keas@N$=j z|Nb6J`@TFx#@xqC%(8+pF95E=|j`k7QU~OKmY%; z_q82-!(Axij(iGyC@Y8}F)2JJrB6eZ|Q$bBr4Nu8E2~d!~F_LnDmg$|Rxr$0pZ0 zznmc57XHlB&i{(hmUIEWWd%0pDMF+9$sM;cQ)JK;#SNWG6iKt zNguf93*8lP)m*zl>t^5HB@4FA{HuA>Iw4v=2V1UR=s_;)>+!GxPO# zR>;Te6g_;%S^q%3c&&!T?)LosF~?Ufy2kUG#ZjPTTftlgw?iKr`)~X|z_!cx-y|o= zDOsXiiyN&X8=oJT>2v8_>cww7Jy#~wr|H)J&oSz^zr`N@Qpf$9+NbaB%LI1(5xyiX zBs9sESzfC7?8E7vCNaTtUUIGe|H-g_UH#n7`FCg9aTn!UTFvE)jWxW#*8j=-$;XAZ zJ@=l}qu4Y1ru^UO>p%Vuu1YyM_2POxg%x$0TIc6JymWxr;6@f^URz@HxvpQ|zDo=YDte3Bv}hPoDq21_Ymuy!`jz&6f0i z$Nzl4v|`%Sl3Bm_&fh=B-Z)E9`jqCimj=hvg+iq2tisf6RaKYDMEq0g_PZLPw}R*K z#4Tf;8fE)D-v5?6*;?0%*UDFS?&MGZ za7bM}s=@~ph~FMr)h48PJ$`)Rm1*yNo)1TF?$+O5sl#@6rSX#)J|P*uKm1Xb|9I+# z$Df$k7dKuf{`+;uL2tf|>%^Q#kHX(?y7W|ZU*s2_#k*K97+TC)nZNEy{rC6>d+XmV z+SDoZ`qH!y&!_JD^X+4YwT(ls&&!Qx-r|5~No+?+rq*g>Qa;AUnopn}9V@lSQEYoXcc`QeLo`2u$SH%B(4hoZu`Wu^~z0)hdImLRvIK4Tv@o`TEgO>MISp8eeBO~ zlfU48?)j00r%S36i~{q_G}gwxG<$n~&&L9mYu9hiFLJeMKmXI<*TR1lH&3O>E z-@322i|>}2E#sMS#=5?`t1d6>L@67Ont>FLZyGy?064a8CN~Yd-g6&1W5G zUVUTRBaZ!Z|LS!=lh{#IBbJvkBn%5|6?wr=XSjh8=srbGX z9Mx}__svjLz8)G>Vc7WB`(EPXlSwHK^*OxRyUsp7+OM`q&o}M)K9`a}-lMYVzfUUK z{Cs%)%a8Y;b^hd8YJPt9>0c7>RLS2z6&1T5T)XdVt}uCjwc`KH^>f_+y%(-qZaASn z&pck=bJ;Ns^ZoWuh4^%Tik!FH{A0iWvxGBt2Ugj3mhkU6Xf^xAtn4#)j;=~Bu6VQl zfAYLi-k+YkBmYD)<^C<0rohou@Y}Pj?As&BU{L!;;MP>L{7O)BlEraHBxW-bvGCJ{ zftVKQ)vek6+txLMTBRI^d?(u2?mg269&3R9A+}V&c+EgE}Wq_MR+$VB5YQ zch8pYj_#=aviaFJSJzx$>8lRq>KK^7+tn-bY`PUV)@FV>^84f0uRGt_i0j9t9A2hd zzQV0Zfunr?YZe2cvbn#EwakR_*9x5saQZcI?i-uQ{%_~5j$dq*`KLC&-6{Y(D|9eH|oT( zkabnLdy>EIo3`pP$1^|vr;lzO&GGyF(nI@?gr)hcKl=Nh`g{#tubrQCbdqvyy3Ij_ z=UQ1(X6I*|-SC%K z*KvWiJ_&~%vrWCSG(9X&Y}>2(qK82!YJVJ$^p$1@ap@(ug7j2nQm#+ro-)fp(xC0R z{FkS1X6fH7e7XGmT%!rU=e_d%Hhp!c_I}x~qAU;NF4Zt3OCLM&QTAly?kQh)nrg^8 zN!q@(`}JHuHQ(>H3%A$zjAeJ^9iCmw|MA30a?`c;xa8x;sR^p5zdgN>HoaEcK52R1 z5zRW`)BE;2wO(mFFyo_7#epNM*89)WuPe7VmEB#UV*ioLE|zJ7r}x5NW$WUu3GaVb zTz4YtamHp=mG*!`xj~lU;$AJU3;9I0+;hCMuUMSlcb-dLot;(e#-r7Je0)5T5{J$2 zugk7Vbe5Veo~!h97JvQEb6Zocy_i_|r*hGu)(v)wC)9&AcioK_JJ~odx$V)MKf3>a zhqWI()jIF-asxZ9{`G!S78JZcJ>?@~N?!cgca%tD2V z3La1GI+fLL-%Vn1%ut`jo1mi2D|Jd!Ypo;OE3e=iyHuE$US#27cWUcNaG1dC6^6Be~!a*YWM|T`sydhcy{x>;LMJa`cyv7CBaA)c+CLq%sO7?H-*LM<;Q|^`mz2=stXFzKfL*)L%Iy~~ALhCl;(PAp-JJf@u6L8UjG0cKyk7Ni z#@5-X_HlbYo^4ENKDMoIl9DZ3!!4ypW_pT&tDN0@9oB0+nS6hP{^Ezbt7k5b=6_(l z*<8_GZ!*gaF8|^cyVw{1Ub-PC-tTV}i=)7-i#h6XJHP1s_RE&|_9NLx>SBK$qh7?- zt4RipOG*ze{ibtYH}X*W{CtJ8wFb4divM$j+9nw6nZh8|q-1lV%YX5yjn>KRk;R{8 zpO4&9p(%ZCw^2<5$2Rle;FZkp@=RmSX+3>aofui)sO)}8bMjgai7NTnue&3^y;Ksb zE0qYo&&l&)o&0p?m+x91eX*LR8+&T{ZtWL#`{d(H#XHWIEcNb?6*nQLnpmRH=N-DBSK{D}zUe>zeRkD}*)pwS_rad`Z+(iV`v*LJ zuuAp&@%2C7d{))54{*M+px{lN*7=L>hg*BKBep&9HcKy0dNYAx%?2fnW%6Cg+L3>5 z3WdEn@BVs)V^GC~{2KmM-`AyFTy#Eio9X;>$?OmAyS&J{Y}wRTxiUs$uZP#P-Ie>d zm>r(#oa6m5vyr{f7+pW;Mh&k)L(qlbpJIS)%H&|USL0W?W^m{ z3knxJ`mkN+|08a*lnTQg)5W>gaL8G;9oVzB=HJOAyZdw6C(mE@@@?=AA-QErx~lz) zK0jZ{+j(I5)b{dDf1f2=eERE;_dUz}C;Rt;==6ebcXr0dHE7OX{JLIc?3Dx zMZtX*TD(`To&0(~cDj^a{I);uf=XMxRnJve{VkCSx;AOwdx6wgw+rW;OU?_kJp8q; zc-jiJ*AKG9<`*qaPGE4{`!4;!1DMa46LjqEClDD+n|_eF~_nw`1-jiYHJq# z04<&U@a~QGznQrr5)59RcC`}^{{3@7Mmsl6lDYD^-$D+KW#=8l=h*Jucy&smwxg<1 z=**KbE2cDBah+SbX#T7I)sK{ZMq0HU=}Bx!wwfuqa?S}|_UC#myQ~+>TJ|z9tl4<| zMZq@<28}R zlazM$%{gp8!R)o6T;QCPqnA!!VG=qkYu-6$4U5ndzmk{YO_MkCzuUIpr)I;%(&;-Q zl9+r%p1j(?d0k0U#p>6TqHnWfvKYK3clyiwtXEsL@&ku@&*vN+1I5#tDxo$m*ZY2- zIF)gC&Vjzz-7`M_$T8B7Wm!<1z`$)EUG%s0iet~*&mzi<29s((NMBRmqL90+U~zGS zvD_t#w6>ECExlph(-w10Sb1Wn%Rk@Tbv<^q{HOKgj-R$~IB@RoOtS#TKi^+lOu2oj z)Z@gj&2KDZj-8pf*CR5vz*tm(Uj0+)?sUJoRzhaK0@;?-AMa8zcq*Ix zb$Ywzo_lRKSud&{kc*#x{O4N(hs4&f$9_ACW!k&fZ@zPO!dI0w`OElwqMEOHF-5j| zaX$Ojtkyr9>;4UQ$>)=fZT#V_60dRK*81P)kDmBsdi=s4#T{9(Lca1$s`msFckGBT zOpSZuAG+E7-L1~MlFy^JGFPXjhAz%DH8uYs$>b~*EgpZHeVOV@CC(o4o10%nKhn~< zzwtGrZ#}1qRf*(T4PTkpeb1AfoF={6pRSQpSP~MnQd?c!wsFoE7Qgb@hvv-tCv&@I z;vc2#q#D@?MRot)CB1ImKe=y8l5mBY&lF9|&E3um`Hih!NvOVE_J4)~M|sp{Uyn(_ zfu|N6Bcv}sA%lFth+9x0omv3{Mh^MyGn(jj9k@+s!E*Z z7j}BRV%BS2^v_^MytYh1sm8-Q7cZ-%izF0%KXkEXiAoNWGUw|B3~N5VlWTowgExR3)r>|`2o^CC0@vd;T!$SeD?GCe#8TOo-uBSNl&EH3l zfBpS%(#bAn$K06z989^4lX<*SYdZ?QzTQ2pN5|VMVzsj%S?t4V88{|NVaJRO4EC394s-g-YL#^=sC;R~Df8DCwyq28o$hkI79 zqR&qE8x;!ECI&w@Iums)BG~CzXYZRm0p7m%5--V1oW8T%H)MK@((W&-Vv4`A3Kh2* z-+XE@U-ZiT%+tGqbMBeXFyyyA7_gNoIMV9(_9wIC|K?~W-xIu67w`UNLgt^cMZ876 zoRJ@`e|!t5T`=Y2j(@v^)I0O4<#Bw4)ZusjHT}IHYNo*Ri^u>E#{%oMNf7 zfBnBX^iJHgr8dWIp|hLP_d}{l?lxXIPs8V!?Eg0_xqX*G;(eIBkMvq;nVGog z%_P45kDEIRw>atfB%FTc!?Vfd+*B(ypQ@&ehFRKgZcp=?dh)=+_m3qEtE`H*YKgeX zrkCe$uIULYQqeio+2bs}{*-~lNxSJ?kM?ow;geNVKHOJmd@Nw!m*cDB@|C})$pue( z^YYt+;1;tKZXZ^ee^t6C-yQBKwLJanEvv|>-4?%3xU{uD*|c-V&c|WiA0J+B>8+h} z|5#XX*;Aum(so_3-naU1f7q3;<8QZi!7_{9DLqDe*3I;OEAJRk$)&x%u4Ii(Z?Prw z3#m1#FJr{SeZCu~PMRlrKmKb~tl-Aq`wb;@%?=wpL+J0RU2>BjCA!IPPvBS!eyIY zd5CQ_IVU-@>(LD{@k5W9^UvpjI`_(zRaLY7ch9vd&D-3SlD5ozR@v@X#b0m8`u5f@ z{3Lg1ji6~x# zx9(pVzj)iWO-XNFOqAd$Whv!*a=70<_vkFHCWS5W`#;SW3V0}QJ=ya6&dFPThwR?v z!S#LFtXon0Zf{|Y-Pm{M&Yo@S`V=@0#l8-o*!XiPe5^tLBzTHW_p|o-0~}7TJv=-z zUTcBo4lg4HPfFj(XjRp5IB5&{dNe6;Y@aW&K3X7Z=CxD1)~*H(&YTwni#I7CP3lcF z$v?e_AG#H{>jc=6rVH;Pcv93MQ-X3G(1}B&jk*XcVKazx&3F^0)Cs?kc~x>%gmd*l z@0mvV7N^WsPgS^+8Ku^L=ahZT+a38g`2QTgzpAq`r&D&zwEv}L4!f=xcf0 zivLzZa{tXIpFOI<(fdRC_51%#vX{SYT<<@9e*23smru8*{QubU&1|lg$ih8;9vICl z&dI9Py~*FC!148#K||o8w;xp;7oOW*=Oorr?WBA3>P?Zb>w!VFGZ#q(KaO0JG~?04 z6SusV-uaZ=yp{dO>u1Mz)_-pQld+>pS1st=-a|`z{Xdliu^o$!{jYzm>8}Du(}&6N zf1*7mJ-2bQz0G?!Ra9y>-;Jyy&*)EFnbTKKjCsHKeDLRjtE&Q6^-g*B&$xZtykjqH z=G`lP{@|s2=iEIl9}Tz8FtSTKzv#UI)26!)yY_#viJK?4!s}Y`o5kNxX#RfLvYJET zjsN`zr3Fm(|7MiGRxftkkv-#twxx4bsO(SGbdS}$z8%ti_{hGmV@`g>#R~?$jnnVj z+RvUBOKD>+;5dfbz=nLO{B))g<|mnXS@)IN&T%G+62_NDii`uE)x zkF!D#-V?5W*xMuXN~F=o>Pe_v@s$N3t5#_Jm}LLv|2z}n2Ikt`e>=?&?|QUig5i|4 zPjBXWckWNyTU+&i`u>~sXV1uQFLvE`u}%Oqfu8%*(Ea4?=1=`{k1F;FmiE^hQ2r?$!( ztKR{iZlyfxdh@aV8~ZNaDA#w-y1#y&QFQX=H~lZ+B}x^7?*!e>snr~bY$*P(_Vw0w z)$(KI-xAC3Xs(i0yV>`2ZsXpL+lIY2U8ib=elh!Rz7){i!z|pU`!sX@ z+dVTvyRUsO|6{H(|9C>T?>=)QCoNFXOy7GKePJso2M>YZ!dPuI|vGi9j9_R z6P_#z77@9sK9Bc#f8aB70rjg!TDi)cvwn%#t@G;nfBxRw|n&bO>Qt*%~$Bf?17(noCH`|I8ICpKIEKC}6H`TXbB_ucuGYz}!A zZeUWqCcorYpZ|^d&)K^y_SuVvSC~wQz4~gQL9$w__@c*7EDWYK4CZXQ&oAzgUlw0* zq-0u-Osqs{(f*J6Q1yY9Iiu6W-1VwXVa>{+LLeY<~JXg}|H61De%^)~mf=@CNq-=UTU$HgeI|C#}4G?wQ}w?)w%e>ZkpcUoSpoQ_1TXw=Z)JUOM-5&WY%A&;FeH zK3C{YdwW&S0%s4Qw|Bq3FnFNKCa#zI>XrY+DBEN5(&_^8cbn8sE#4!(dH&bi^B(?; zG5C9bqjH6g{9OV6p4B~~+48CT!jIoEZhrb#F8QOc-6@;Zp+1tnXZ}84V154Niv}XZn^u`?7O>>F0mPvex@-=Tgjix5vCVXopHCP+IUTi4z==b#jxDG&oI|lifYF^vLa{}_iDk~`I42<|4#k!qJ5TcTfYdPc zu^4~^I4pz?fRrjd@L*7G5pe2gP-Y~cp!gnRk5D~7^Ze?bs^>c&zP)MLu`^Y$xoxY% zPKkDLCk{my2diZBSJvB@49p41Ha$gd-LCU zPdMDUOh&2tScF-=Hbc61)SaK@x3=>g3on{*D9Ai#ebtPtzHmX?8G4J~EA1=fQq_(- zc>kN#p*hEId_Q%!re3FY%I@WtR(T4vtz48}JuB6C+9TVYjZQ}j*44b?`!rwn;5M0? ze$gC?EgUTAEC!#SpI^RX$Bc7xt>+gm?&;wPTN@Sn*73>?z8&|ZkNw&1CvdBt?fQL# z32UC)E0)~&tTJEX{Gr0=581t$UoY@n3S!?-m(41AfB%u`{x;qB8Ma<*=K1sX?3;C`A%r%SM%I8nVhgIv2g;ei3fAhl`r=R zv?%k46J3S+fhig*{CFRKxjWx$f8zHX{il^edqDBmcIbHTc@YQq>HcJ>;CplAwlUlCTQgd|q#U{%yklGP)3;XydLLBs#c zuZvSzoDPLQ2r@ksz2(`FU-m&ym~VK!+va?PIYRC|$5g{kzmIJ*T{{E>;YlJ%fnEpLx{_7#bvcfF0BNzO4 z=a(M0E@iGsJ(~V+Ws>pj<#GOHucb3h|Jbh6o^fiDxp4gUk2Rv%K)-K4qjAeV+AOS@RWq;M`4!JEYeS3`a3`qJzC zQ;x6Z3}j5_>RidIz20Gy)jU>JlRkxX)}_{In=+5({8?$+Y4LZ>RyCDx(oS2>7PbgD zaRipnDP?gyC*^PaS?&2{ww2f)wkd0$?|#`IFzdgm_4B`7a>COttXec<5wG;g z&x|uF!hBPTPm8~>|62aT>sxWj|1h4}k1HqD`OlAT7r41Xa^bOTo}BHCvH3Qq<}J3$ zT719Y>fGjn7i_B*&uQ}i@AB{EOTC42J@&mU`&4%3`40C_384Jyu;9pX^;1b*;7r{W z@<`N)L(%2HLg(~I`zzMzIH?{ssVkbVXL9vfWk~Kk_ubDW52PFOiO;@kd24S_&*wT-&X1Q*@DL~@ zaF!xhs$?Zp|H-laSt%#^SZ#9o!f!z#QUdq4GpEMuEm`r++oR+3jM$(3Hx^`^{`TwO zMziDBbACTKvTL8m#{Gvj*+yh z*B#FkTc7x7VZz1aoQQw6bq<}<$3(yPsOq^K52+QYv6{7Yb)SIskNG8UCVKh!h!jp1 zzkE5M4g9kdF zeMn@goPYo9qo>L*e*c-8VrMpOj{NyN>2}L44=TI(#XLSJf$D)3RvTMVAVoq$-}3{0 zdlnj6Y)yGIslPDcE?-H*rmt`At`WSxO_0kujriaMzDfj;|)!$I}knz#2?UtoR z`;uzBoDVHJS5~FyQo6Ud?c=%mZ$m)2t}yXxr_7Aap9?asHM`vZs?$8Ltl`zuBab$& zIsb`~?@*P`;_FvAXS8*ty-BWi>XFNpcx&15 z?a8&=hqtU>xad~T;v{3guD5^J-t0|0>$T)YZ*%EFo#oHA<&>|uwm)3EM(%Xk`pCyF z&Wd$nrRAKSAmbNFkzCUTw{zd*6#VffEB{El$%dT%LidPm&nrK@wN4E7KDILAy8Oo* zIVQ_im2J&hvohj(WuWNvw}xCcmDAn^9^5$Xt)toVfJeI9>T2?5rtXgI6>Bg!yUS|F z?PdLCSBp;ZzJ7l3;ikH^ru-Y_4j0w0^yOc$;84|^M@?&g2SgeH!56oQ?+iZ<=S}f)~Bq~-d;TTRrhvwQ1mH-HQ$B4+`gi->Vme; z?a!zEZ+v4+VS^Mw9?&+33@50(;t(uQVP9s}QnJXEUH@kGHl^L&pukzKv!m4T!4PtZU!f%xPyMx~{VXuhEZ?wRW&#E!2B1dOI}WFS+* z`NB8n=Pz)H^*#Pu?SjT4nf!xnec84jYfUKi|vxD@T3YJ2h0GJ~8c?N|BjPX@kr$y00* zcr4 zh$Ppl;KK%tOF7rN^*jE4VrF;0Oh&2wV)dcLCO7N!e{b_izIly5^Y;;>TPC&b`tyD$ z%iUi4=Co$SABJu_?V}E=Pi{$mk)Cj@k-uzm#p&QH_di8HtKB8M_?~Wz=}W1ah_4U% zpDYrbCv&8&@O#k`n~opW(=RSOUw`7S&g3)U`KkWD?(Zmkz$RvEKDkT&>)8|Y4nMQ3 z<9fTUQ^biwQ7<%$J1--wf4zCy!{A4q{8|qZR(j1YI6GADLT*Vt{xP<2h}(<#Q9DNmn1d+1%YQ&&@h8Fym(4jVr+h8|oWZn{B_Cn-zcKN}sllD$p zn;a|7{3d(BkCNBBM38VVKBk)70C~Z!P0*OSJVWTi+Zs|Lf<3TYJJ7 zW6ZYZoci;0+S^^3wS3FYN=TZmcinBct+Il_>+d!5Pq)7ud{?RQJ^FgUM(M>|ce8Ki zg>$nzY?Mx){rmMcenH>+?(gG++7P=RMc&MgCs!AS*BF z$C`K*P-Ff_e0bS!c46oA!t0x!$}k&zKJnG$QDdC)jU5m3!hW0lYH_{NsB&+UQ_V$P z4t}O79FMHZjs}XFXe=ybvDDVMYdG20IPJ0jThA7*DYa)8HiuvM^eQY=a0YXE^RXRo zCnfd9=FGp;ZJE5wFx^LgU(B>%NxRmgkF?G&T;js6+j-1(S2$bXFS$?Ot|_l9E_(W3 z`PYOSdsYcO-uaDj!5)r!AK^piJ|(+!zH;ooH#fUX29#}tKBwG}c^6|g{fxXCPgmsJ z;)Y+(yzbqqXLA3+kmr9R__wh^+P&pDzpFT6=f^qy7IwGT_*%MamDO6aU%cUWEjilr z7FeCq{PD&A$!mt+H-4U4%yQRq?!oI>FRWg$-%C4tT3+Bvxm4_WKjlq@$ye^z`<&T# zGiA>wGgh(9Woh4Zw#nB_+;^VOdA)_lyJ@{s+L@;m6kJO-+3`NK?TgOg=sB*H8v`ww zQ$nt{fB$e}&gO|f^`bW~zx;b<-H%g7H~*eueq$GN({bxZ-X*-+i!yTCTrX`DaN;P; z^zzy>f9L)^`#;(Ln*QhK{>c$rin)Ye`9Iql&v$U8eA>fbA2mLH?0mkRq0Tb!)x}Q> zBU{ePoj9hm@`2JDO|#!!EmqFDx0PcOr@bw+G-6nFHqN8W(&*mjGtw6SWh8$0uP~bZ zr>9_cZJmtSPxZRPRh~O;q|e>GP~+Qv(Zjjlc5HmTIF`?6=6SvHLsfGY-+4Ig?Xt}O zGb8dgub<| z-`e!|`H9Ajrw>~ODpo7TGHAWqp|)d{n`h@c@1#q1ekZPUfSTN^vuZh4<^^;3N&A1V z<2|_kK|!^}w}*#Q#7{1n3X-3#(y(z!anea!ors{@e?bk8BQI6h-8#BGwx0AZSaEH? zV$Sth*&p6*ecSAt*Lv6aN3M0^^zek*{Q17;7;db;z1!sVAEDiLKXR|V`75qa?zH)I z;YP`{-Oq2Xv+MZ#Iis^s@B@4|y+=O=%i7owi??Wt8v)roEV3dRP@H3W~u z7MpW!Gy)YIF0tY4X$eg$%)g}W`r_dfe0PPa_RT-%JKvl)cj#2hI}u#+^19&ktR$Jr z=~vJ1bK1wpvh-5Xm6Tgc%p49M*qkThZ5PoRK^AZ6E=+-B#i21V(c9)2}Hpi2v7{`v1Bw&pv+bFzXWc+QTPY<%0{R-M-q$uxw7#QT`1t zHV5&9IIWxOxSugo=EsBREnD1QTz$=vE%*NDL?K~ai=I_N|AnWzsoN7=bmDnO}3Z;|-(-ju>hjqq>38fIU~ zZ_vow^GjB)(>~Yow$6HP#-7<5zWnywuf@AOuu*bi&u<42Eh|b_k4viggXcfi`Tk(& zk?BkOm2t<0GxfII>;p%f6OZ|D>7Qc&wcr+=I#ndBk$AT;Uo(@tplRpn{DgP?dEu`a zdxXrp-YGA-X;mq*)72{K`b(bI1*`6^(R=A_Xifh*eWiUXgacd3@fcuW3Um{DXJKub98+OfE~glwVH4)0Z0WCY&<+ zEbz11=TY@HMGw}13wI7`{IL9Y*XoX~`$U1rt*=*DPy8@rvSat;8DF$H!x+l7I&(um z8S{s=8Z50it<2foZQ-r%-0`YPn)mVBawSk#`pC}L(n}Z?mSoQGQzKPd4~t^-p(lTS=aW74=CiqM8m1rG zRIax&i(|A*K0$hNj?Zir9`eDqjYf3m5Fxaap8-_vVrBQ~yDvdvnVg@Mm?b541t z-s!Tl&;BtiJ8P7=_4F3?n<7Pl8?v`AyM1Npg`BK43>Klgt#qzE&$!;6b#1kOa_uzJ zpA)X;ym~2N_B`Rnm01^aj(Kc+z0`N}{W6}n#}6)zI$!kK%(QpUuF~ob<0H>LuASd} zN$Se3gK088v#)pE{oHc*_tmz$&l~r%9WTFKqxaHmYlcnT>nKb0`|HmwagV&5C(SHA z@2}R9Tk+5lOZjUD=fTD*r(YDBBv9I~qj*y2lINxt6>kp(Z;yokb+(>qu+9aJ@^em< zev0~$rDyaQO|OV%-IQAsscw2pHIHe9*~x|KT5HOG7HM3o?cnX&nzQ{R2Jbuzi$OE^m~2XX@~FbyPtEW+e8J_ZS#^| zKIL`X>2KTzoBtNq+U*g&_B>&FfnNBY5UuT=hyL!wGi34^RI=|^GThe3-#N+U_3?d6 zice+k6n$4$QlH2v8|~#aS-`2|w6pC0ZT}=SA;oB^ZG)wBKAZKuIS$tte|ybv;!r%Y zbOGO=6#hl`E=+%UNtx5Pbn&z`DWC1tH`(83P@T0y(f{Joc=wo9orOcaF+Z8>8V{)%_WJM$zF4RVp&ru85FeCr|9JhCc%uDZ;mi#;~x8|F8 z_=WAmz*#x}nRjNisIzZOyt7wElV9oIxzv&upXH0}Z%4ni)cja};qfz$G9Q@}|D2|N z$iBbqzpS~@|5n#4@|K-dx8JASbHAT>l7d0styKOAU6Iv@@JKtD;)0%bs z?w)&|YQD<+|hT+d!?yi&q*Mj`>FX`nx24 zYTM-%2YNh?)hckYvQNyldU&_M-rZYkzh|lc(>=^yN`;ySWoGS_=;wQIIQ$v2jLY(P z*NDaEzRW7{ewsUXqJ@!g;7#5imiw}UpHAO8@$f|-`QF*;3v+INzP$cD|69MLBIQGM zmd%c84Q{EU>V-j*3%4b0_f$-XPC1fZ+*igkoBhMQ=O6W1gPyByxKhQi_(<=f-yIp- z{N!BoCiYz`wK{AyCu@D#@|dG5(wZaekDiuKICy8SeU)L@yLl^j`qe6~n8kd1`WlQb zR>-~6+q?4B?;ihWoRy-vW7cemeXqFH=6;>CO4DOmLR03PTMbvfBuki9&JMlK{`5?i z@3OwL-zS4wxX-WD9m|T)S@%iC%d6zVq>MX@t)&?1x{S69-pRDscyQ|d9bMK-Hl4L` z`6oB|$GlpOAVv|Bas#fqzWVKa<>v!cT*Bm7%atA)syBz|TEp-zMCkUaC+Tu) zxDvfSPIDI$6E95r--FWevXR__)IAGa0PddYdRvCo`~5q!Rb=TMhoB`~796k5T2`F7 z`Xu~~s{U@fPTARun7sb3_Qeb3&n9& z#TJ1@->&@P>6vNU{gyp`$@|TRFKF{k+MTNW^x@RpeLc$~Zr5ntogdlz?0e$0Gs$-+ zpDzsgURd(3Ipv<|M92F1Ef24M%%6E?Qn}dUyPrg~#r>C@PS$>rQ+4o!`t!fLZ-zWz z+#@n=>E+r(vMp|H4zndccyy!vhtcU7hZRN%&Tlum9KH#I$8LbUD>`* z8jj_D=^wUA?c)2@xIOaor|M}(H>|c@zW9IQ+xGs;e;=}Lac&j%j{JX2#%9^MgOUCM z_4lQDUIurW*E1jAyy}$2>a&@J*HxlS`qcLXCSR$xTX^rH?wh*ThDEF1I&!k7+qyOX zj!X48Z?xxV

q~IdKwExi!q0hr2YQW*;=1Iad%=UTJ>(*g5^=rup4Vs`o8>dd+T4 zMCyM1lc~-t-A}it3EEXFNN-Nz{o}Ox_G0xzvWYk4UUF^D*)L#eaQw7?#J1nL-#EF- zTcfwlujlKj70I2>oIKtA@%BvqYfU=0c`yH})c73z{wT|Xkl1N&^JYK4*cZ!prn5`w z_3!Hn;+`GzgWu{acFv#KWxbAb-Kz9BSSKu`8#GoO^xE6w(eq^jbIj(w`zzHHfAHbA zf;WfTPwMURQF{bxe+cOZ-F$a#&HgQK zu2uAA>Fu|FY$$VWYs#Cft5bfS(z$JV^jG)S8v6v9RbM5-?j758t}C|Taljhpvs`x7}Txr@J$QqYtm+^I2nkYSZ2H;QK6ZxMyUVwLWo@Jvi;H z;<)x3v8Dd6MUhrx#1% z^*g>!IlS#hY>wPBuRD0CbMcL7nzI$S6k7!Bms=Sy3%l%HsDF8>yU?sxZn}{tpVj-N z)bC^TGAVSPx5#^c-;NOB$0v5Lsrx4SsZ>E@>a@jbm({j1O0mr=eH`)Wpw=HRi;c`` zmzU;C%dBdfXg!&C{eH)|nUj~?*I&AIBU63`)43BCKkB5i?P5Cby*vM9XCXu2*;xxz znTT3&JU@0yq?m3jNuY!QjNXWTl?Gf{(&z3STPHMO6ex&G=+s@p$dT59*lqb3JM zud;l9cs=6pF`2Hf35(Xx^y+_od*KxMd{@qqAQvUL)w8gal`y-FePB9s`)T_nRt>u-IuUDR1 z@uK?1?`P|8#KtjtiTJ+zKV{onyTrHK8-nKl3Y`7(%hBa41A;y4Ux^0Isy}t?(e0f{ z9p|R0|0-Ny(erEjxrO_;9eUR2qqVQTQ-6Mi*nY;W#q5$lZqL5C`LAh>t@;JSG_~%3 zpBR^BapfMbciP)LHCf#FP30v2p7e)1bbo9;wxueAEpsJv#Qv>C`^A*2`DQ==p*iK$ zBPR~US1YUp4(#Cc-ar4#>PrPuqB8_f?%;P>_&{NkulgS8ch56CpPH|Hr@3xV_au)P zFN5|p{bP%ne|(twlY#x>%W%PKD~$K5-3h9UPFLwW;}TNFT-W#hRtx`u6Av?%^&dMs zIbhq{og1=mM9CC3%Pk6h9r59%h4irpcb_orY3Ofy`+B7T<70uPtch3n0}HOa_j0+G zQ`GIVV8);PeM^=syvwXMv?!)ENdLPzpnK@_W z@6~dLSw3$uJKFnf)vx{6=3S}IJO2OITAj06jVIzS=hrM=b$D)_jqv65hfn@}cc$js ze%m>`_r2fs2{?5e2>I=~CvoGBQ^gvZ7ahG9752Xid1w22xkj<{!MSb1(lI|%*X(fC zx_!p^$$P`j_cz-WL>(N9*%v=}{-gYL!FL%~r&Z^-H?6UL}I@&PtVS zp(oGVM2Kokd8FH~qNDfd%sp!U_S9}wcsiyi65u5IQ(;3m{xrKJ!wWrX`UC)!G)|-o=jzO zbonOZW4pHKP2c-lZYj^RIj=J4PHg$MR%?DvvVHsZs*D@;8Vf@ot`@sF<-&tt+mJ<7 z7Z#PL-+8|K=UPx}b0WPfdS~nvz2%xL;aT^-ah#p>s3SwL+xT1TudjFAuKk{TbN{<| z8JW*I&GSD#)W37!;N8fG_zteLch+nECrRD?ziZBxO~O-TwU-}a_)wVg(0j^V`{spr zKWo_UYJ0rfc53;j`m^UM_b)o$qPk_3#p;;6iQ6j~_=) zFKKB+GzCI~ZqMDgblbcW7Y;_x_`kj1;&jtx|0RN!f0B3oe3$<5`OTosi}*IKW)@Bg zZgw?)tL$_58Rz!d8OFI;ODsZP7aQdKT5;>j!opSG_HWiId0pP=zJ5baxX)|HRU1~O zD!2UjdG(*rq!my66l{Jy2@2;hl--pqbLL5mz1h?iYAvjxwWgM{CS9?c_Ndt%JQ7vt zx#Fv;O5o9(v!;Ewb=h;e|0R#>$=@ws*XP_T2gxnfL4TTGLyck=Z6w#MUm-uUp;%YFRJ8vXf!iGZQE4 zJFZ2mC2o5y0?lvi*mC7xsE3!u#^z-gYZIcUY^v$v``zH%(7oio{*u(2Ni~MP1+JzC zYk!!A?KfteIdFT4GN7cQIh?~3*k zlmAnC?#|!*aAxa~d%GsAOI;lKBlB9nne7$Le`!|tTWi|?`Wb>;%we)s?tsOtWy0I4 z&Dgn07EDl{ZT4XQvy|1S1@X$0O%prI->0Xp7{^ zr?Y<8$~8Tf`m}$mpXeRkJe8fXO)5V?9-Y1*ia+7Zo%+pni59YIdQX3K=3hMYqi>Ov z>be&qwO@rSdFQ8mF#f#r-NWASOqD^{LQzRkX0bLAVS4sZXp=fMlvoc@HM&$9==E=_3JF-5a0R#yDA z$d;o0rIL)H8~^hPEwWrI@4UT^XL?p`{q87}xWnl;^;!g;I}sX8!bn)KXYULV-; z`{Li5?kg%P1!kB1KL5KQ>vUmEeLT->xqsa3+J4y_FI~F%;x=8+dHP4*HO9|pww1o$ zY$@G`pvL1;w%==KFZ;TB+lAFZKZQhuFPYn}yKWOHY}n`2+|gbf@`&U}-9 zUb8SN{&Pk8kH1w}zW0`5)!X~?y%vi--0+-r+MnOrNqJRs`Q}OqO?#1c-#C2Y#?$qm z8dUCn(s?N>&G6vvKco2l|0R#sxqm%AyKsiscYDXpEov@TqEEl7K0fI&^OclI?*3{! zQ?)i;l*mwIqyUdY$e^|qh z`90noE`IXN+0;{c=C2HbB2{~E(kMjuhrzxj783Yb67o9%h@-B>&7&Law;$0Ycg6&(5b&t=Tn0YDXIw9Q z{FAo*lbYSvgRiU*zPMaJ@8|W6nf(8v zjK-;%@jsXCm&oV+-n`mp)}M>(FUkM?zFg*fSN(4tzGHVi9^W`-;`4pu|JOO3VW4a? z-|;R-!lJ4PH%vGJIQ?F`hm^4$Kd+g2#Q)&8UY8PiuNiC_Up-&lYkl-qvf{k@CJp^V z@|TxHxS*POnl-A8*>wtKHQsInhaK-Y2U>gfDgzx5`g z>Kg8|mz_UemG}Jp@cYG8u6)t=s~VM$7MlD#yZ?nU8-?#rC9d)nmfpR>D!-HVUrexGoup5A=FwYd=-(o^w>Yk>Ns3U(WbqvriK&UFgUer1MVNIkVzrv8=RCa$N= zQGZPQuI}RV*`WMlkG!+_n&rlO%@{jkC#00uE4J*Acy&Z5=s{4y(*7lm-`Zs~COvTF z0Ij@bDO22iOXNXFU=G_Rfc*Ht9U;kESXij!MBa~s+k)9+eLtJ%<% zwSIcQtIHpzU(T33$;Blpd5V3F!Ye0KX&mZg0QZ=X2WVre?1EC1)eUiTBH za$P>XIH|JTN7d%m;Rem}L}*D>wfgnpEQT{1?k)NMlTqlA^aBgS>0kBzo=&*h){jyB zPt6s3yx<7$fRyy$KUFkhpL)d*N&6jFB3#2{JpmR=BC|Q zEmzXE$k}(dTy>7z_=uxXWICr}i@;X-0~!-m_;$?v#9zJHWHFD4_^O4>d`WG#{+~KO z>d0(o-G6OH82?!X-BO0v+g}~wo9`F>)l%$lp`F~_PGgtVb`^{U{S!a`%Rg~3$aDT5 zo?l-c=A2!-%f|Q-+pc@p=G2~#^)GAe+k97r?eDX2nYv%OM)7;6+P#T$ zt-2q}%0q6mi*v0L^PE#r!y^6paAwi}q)WffJo)ha=2bQ>uS@wmA6d=Kt$%xZ-{VA; zds`cpB;*`B=wGq@{>6mzhtE`hm*$z1!6&aa;rq|KI&pSQ`_9LEK1)tM`SWAScw@cutww9BRs4n{gxG#8$mm?f236&3_pZo^AgB_F>MCf9~=PUdaJG7TIy_ z%{wN}zp%R8R>a}H(M0{Y-%PvLmloe&tuz0V-n{vrBBOHUeR{e+1@a^IJ z%T^Z|f1I3eJ!$Icq5~!mx9AH6f1h9WKkFEyL2>%WtBbum-iH{k@72P@{|j5fS|g)Uf}NU04frSS zKd!PbUA`%Vf%U9xjOq7>&tI%Lct-YeuVwPCkDk0u;hE7%EU)r;T_?}4 z-zq%&`|3}pOxv?r;{8q^Tamgm*Z=375G}7c$E&B`_GtN=)gN{Kf00m2NZEJ#+MAbO z>Xymx+vHQW{}aP*{_yMVs?SZh(%$Wl++QGdS6xqaugUyFXWnaEV*Dfac!AKhWU0OD z{0^9em?ZPxz87_r|Fgxu&^JFSRBYuUy}CCgeX`pZ!($lOQ%J^>57=D zon2s?moQhuhWwQ8LPg&pV2*+Iry3W=E|Ctj0!D3;#||nKZ+%81KmENyFPWeBKdxQHI zUVqOKnf*bvOm)wL)M@`7J9{~=$6Pfo(sb+Z#CePJl+I`@viZ#*HE-2tUMve*R=;Y# z)pPA}`os-Y8roqp8&_`C0wpV5%4(0zarX={E00-H{W}`hZ8uH7UwnOX?1INR=ADlF ze~PxxubYjrh;!dd*{k0Uwl=MH6;hXzKX~jVswUnttX{B?bL#{PPR*_*5{zFVg_Wshk~ zYBU$;yTAHvCF@?r?*3TffBL~{&ScF`tb)dml&fO)x9Qv63cJbv*q~j^#{c6%CeAp} zy7oD@_!G`J@#)4poH|kd;@X4wHxV0q4jG}087_m486NdT9^jl?eW`ugo&J^^=UVK4 z80IogNeJ0GB|y|`b@ab*q17*)Q};FQdo29z`OikBzW3*kipue(M1OHw{^mp7mrWsi z+&^i4nkp15*rdEdHSpwd3xj<3R6F0BRp0Wiy|}YYFe}i?u;%Eqx5pVj^?sG#UHOJw|l#AVUf74vwbP|-SS&&|BC3>H?S6$pW*>c`gr@jjdxp1tGeai%GjdQ z-5-vdDEe5x^_y0^A>mEZ?I%fU03S1ytmL{;N zO)ha|K{Wd@V})7;!EA=YcZ`uV-_= zFs)*A-qSke{qMd#j~6oh*lu(5)KTG=pKfqj&5kqpbh7e)o|$M!?59;`3Uv=69);^E zJ^yf#`%XG&QR}0iM~{V5TOB*19)+w;Kj1Xy;Iy|=vr?@Y%t{lQOkUf)SXL@4-hX}< zUr*t;(rfZlew@;|-74@XC#xQ^HQ|vu$?Fm4SOuK$>+qhwD&oHzN6`-5+s(3$)86tO z-8X4dX7KT)C!&*X#y!&BYPTq@i`y8UR6T&=$XXt+WV7_Gs?zjn(WUt$_-L- zH2t`yzRPs;{zZ3Knu0Pdvy5_sq!%PUh&1n0m0z>y)@$7*#yVsI?ucB`zMu9&wECvEI#O38 zVB*z)aC1I3$5^@L*C*t)sBSs(`)8@n4-;nEU zlWkgrtrLu5e{DOsFiT>m@y!pvq@PR;{py(O_WI*yj|kf-qS}2P4~i$=h;0>l#bdd? zY$ul|N8!#@e;M35mmPKX?u@@R`>JH>f}H`p`fV>2o{7s}J}Pm3lO=42qtbKUguh{P zZ$yhnNw%1O+|J@PEMGv*Lx7XX~PW^K7`~rXZbJt?_e##d#zmQ&I|IPlp`X=s@ zId9brU$p5=v;AwfRBZ*MPcq{>s81rH>uy@R;y~%s{gNL~bM349!~fl^*Blgm`hC*|tp>}h{jDXs(zVC#%f6kT_F#c*&DTTq8qg|3 zga7kU_uH%Tgnd$;OLJIT%x-SaHWOB@vjS~LdGu(-UsaXO6P!KTnmM#3!Pbbv-{%<2D_Tn=l@jKsD4*g+-Cfc zzs@I`K~*ADS2d(HXzwg*&CaV|78*Ib-v7w?`|}?M!Q^J5H=*G$4 z@_(B`qz?bzT>kuFV93iy$M=WcoqO)uP2QUv2}vA|91Gqwozm-iw8BDf@dAT0XIOXk zompWaex!ki<5f?&O!~*;J6?x|33lX22^b^_ayS~O=r9U-Fh^R?eYft{--!y{OSlR> zqwb&o{K2Ng@A}K&<+!ZWbW%;;;77#$+KDK zVJ;_Ukb`~OW)Jms{`O3v46NO@D>lA8eEQ?}ytIo)=IPA2FQ8-a30$(& zLhAGrg)LV_)6;)n34PR?<@{pjy~9dvW~kGWz79pN4G_1CA_ z*e$)4Qq$$X`-RQF&+&&-czTX6;c?=)DCEfvUYhX-y6OCbHDrkX(0fR)gJVCmTY{?RRDbooXgM0&UH#f5Z2xw_`4<%r-t~AHbpBxP&l&4yEEKpd&%s6E z*Cd{6*L@3_T;0KNwPL-pui^d96R)S1#sppW6*j{fY{uV0jk{#&&tPxTGodMVB5@bPP#6K}<@yx{QG zWcEb!+~C(%lulv`eq^HDeL%cot&2Nx>_FH*gE;< ztZIqu&)9O{#k2P@z1y!D#D+Z*b^5XRS$<>SAy0`S@zVG4$7ikGn!xFBwWeX} zis)!ykOQxq&shXLtD*;VFCm zDyUBDOF8$$c;9rlN%dPcHmkoe+jYNQm3^M{xr3AKa>COM-yE#gtSz%^UH@m&qBE6u z>`eOm=U0n=zkZ!NdvYp=gQ9}!#LNGS*>BI`yX6z%`n>La(65UJPjiV}F)N>VPiwaS zydUvermR=f94|92<$YUkD|mX+@1GgpH97WAeZ9=ib#~MJqJ--)*PiY7KelCSNycxf z)64(LUEis{Zfa4^)6XHYmYN5<1)MncU;e|`6L)Z9skZ0t-=0Gk zXDr%YE7rW*%qEm~TY#u=j7Qw#n;&01n!=#r zxFU;JQR|9{X@{$4#v&drhJE_e3s&6W4k>zdA&^OC;(>#wwdR*)aJF7OUwn6oz_+?D zQtaQRnyIvWQBvG$y72p+g9fq(nnKqekzDBXb!OB2XBmFqejemz(9_zs&--ZVR1Xft zmW;Tw@&^_K&NgqIy8HHIlLyzoocv|V{=Z6|wVmX}<`u>Yvk$J<>I+ZY zz0w&P{NCvP2Y(L5mJjM@?R%p*)eH_XZmqW5lcTkp>$c#0A;w#ZUY}!Cc%>XYl4qoH z=6icgVESb^$JMH^_LtxaCXI+Uj=j0^aee#Cjl0#pr93<`PiJS#gQMI32luJ>DCr)( z7@@|#aP7K`GyE%7ACbP=7I4~#k+qQ)8`ZhhzdgOYRh4(4cP{I^6CyH= z4MJ`?*WX1*8wWcjac`6ZTmMeN`N;-t7b9k8eCMl_ubzpYITMe!>N_uZ|+(ubD>c0r>yn6vq=Z$cs{tgz-;9`38&A$KD?WC@YVIOzL-M#Mxr*_7|8T@lH4AOKIz5!T>Ss_{eI57R`LVvsFQ?AA zx4re$u{edTUz=n8Uoco>$9pyE_{pXH55F+VB)mWEFZknv_Z^!XP3PJ79sYdt$M$lL zJ&AgE^WXSX6dAqxanwaN;=r}(&x=3#oS%eJH-v)ghMij)B0Ze`)I|EEX-0~4Ct5wr zt*h8lHCd+T^M#Zd+XWV}X8qGs0kvd0@;#Zrv++MVQ+3)1Q)+YTr2+vl#&vQ{t4dDx@rc8$f*mAHL5bdmn^aL);v<4 zv{j;>wK>=E*zwtGl$jIED|vmGSY~@NJigq+EV6z5J%hVC4T4S`-I+TXc^ck5x$tM= zledQd7{R+;&Ub(+g<5H7y+JYC9K>k=n9Rsy97M)@H*v7&lz05jCvF)Y(F$syyj(hHx z@|@B9p85Dss=#`IM@maxf^5W=V!oMVDgK#rlfiiV^@^H~<0*eSuBZIroT0Cx-XieN zBMQ7Zgou=fnKWl~2UwqdCSLzX_1pU`C%3kKn0^2GH~050W~cMgytE(X$#_K=*W40y zHT;vlokijw_ck`kf5DXNSyXe zuS3A8})W^Rq zue{`9eEYw9AOBt76=9yS7yb6UZT|7<~nUVR@j!*w2OFX#Q zLyu3jp4`iQO`1*BYqj;upC8tDbor|Oi4fy{zNb5yokO9p#w`5mxxIz$R<8?NC!&_GjTWb?M5C z&i4`v?%3GX*oyON2QHp=dGWjLDf+e^U(VJq&tA`?lxr#SCe!=12)oGM6R-ZSIeMv3 z$@cxenE|s|kN#z?{%70zSM}X8|1e+G(ikz#Ovx6Jv+4C07#y8TdZqn8N%gnP7sdFJXaC+m`-jb*?%UT& zY&AA+zx3FAatH6Xg{$TK^!}R8Hk)EPC;NS$i>s@Eb+TyemdP@I>c4M%t*y^eqL6z> z=GJyjm&>6wyXU9AmCjy~Uz4vpH@)yRvz}e`AIZMcN!y$_E-o^uW=QtvREUW`+^%2O zdF zYtKDx|Ek>de{(3?bJ<_{dkcz>D?WK|5Mp@vmIeNH{VXs3N(V)UJM&ikkPVjzkl>pk~qUPzw?(?e-69mKi6fc`h*qMb_>3L=+*hZpyNm2d7;_%v-+pivaXd& zday>pPpVF$=heaP#m^(6L~YM)GT*)+@o>`D1&6OcuR8qsujZf2Dqc3}#UZ!vxK^#s zv8#Mkzw(Mm$ZXcPb3R|;(@Qz-q%S%v@nDO9lS%V5*#i%rUfK7yf?U!dX?eI+bGA#w`;{^s%I^>yqVrC?oe2w^mW}wm17Yfeliud++4vGv|-y> zl`pGVW$a!uYiZn`*Iur$Kuvi5%&x`|sfN`D>Ogy0(O;YwnFL3Vpf}t*5U~*uMPQVb$+E zRp!Ba78+JC>a1k$=-#@`r!G#q$Rd@R_bDzUzqUKL|IDMd_`QCP-CTwS84D^KY;7_Vc@Jy3A(H-!96l;z;sLTn{7S+Pj>xJd$=>^b?07KjhduoA7 z^CHK|x-99hPYNZp@A@2EnlJiQJm&dV=Jgx$uFZbVTF0;=GsVVk{udVQ2S<0l$Sb-w zZO-?1FV|_EJAcmm>Mr+)of+?czTdR8*!ki)5&!Rt>hFF@{7`97q5oy^`;Grrn!0@d zBPuKZx8s|(`{d6r9Um)P-rL+{dDwDBo%LJyeMf!OpKtheHAix@N{c|}}uI*RR+0t~m3LcXP!XSvFH<|-3e7F)KC{Uhy*k@G(pGt|(ksPBb`Tv*8_)EA(buHfL!{-zod$C{+ zxEU;ct~4p$Zm&YcPc{AJWqHT$J!gD$SlU^jnyF92`bU?B{=TLoc`G9rRCmdL?Ce#) ze&zYW4|@YPxE@Kmda5w5X5yVUhmVxKD)@Hz?aD)oRRpC9{~eFz>{Pw*Y}vEZE8yj^6~0*4A;Hy~nh8x_;{S=i4v*y?M37D)!jR+UOO3b{Q_2 z*LBOM%2(FcqrzaFum6Xe)4wjrSO0%i^^4@@IfDDR?xY@HQGT6C>`?w3@9)yq!t>_z zSk)N@vWso_`t;|VFQLULM{jSD-rE!XZq3qt6{_c$c^TX5zSuuWJHPb$7t@q$7ArOG z+>Bt;Kc~7s`S{*Qo*BlRd!(*B+w^&<=9QYoosV>~kN;nG|E;-zNUf;jLuQFTUu3W3 z%=bR`=q;P6pzovF|0;{Ob}eIBFsEw%+UQe^cNg%;_32klIn=(~_)V*h$$I|x>m=9I z<%)j2{r}|j>*rH%%=x|2cJKU6i{|q3ntIvf%FXbus?wUckWXp3?t@ip&rjT(VZ0B= z$d50(_QAg==NNPzX(?ek{L3)omaa^+RcG$)ITht+Rno7PtowUeJ!bLs=4VTuye-VJ zk32Z>`?3qK_WwI~wl=G9{)y$=3a8{;p3lDcyOZjc?=ipbN%XH<8L>sF?Eik=n!kph zavq#MT7J3ulvGgGYK{LN6z%TE^xgX9xUN1!B5ZzJ*4oEUE*&qJcR6&K+I_d@(b_BT zY?&%-)Dh017$u^rr?;@xYzF&;AG6Qz)Y>mUKWBwm-Kt!P>t|(sJ|_1UKCw1w>PTCp zGU?xy+bw_YJ8XORd*$B7V`t47#bzh&@->|IJNEhRi1H^tOYZ*AUKeviwVJW}WR%e? z&wo*uYv(YmP~$ylch{yW#P^(|p(Xoft6fu!I27w*&fae=v7BPy6zys*7I*Mop~6M= z@AEDffv3vnZ%TXbw9AGs$!(8|TeP%QW5ibdpGE(oL$+Sn2JVW~?2jrCpCn+rrdjQFDn2 zMjoLz{PfHH`Zz{+wC~t`>o0B_&*<~ zPv0iIDgH{cfD^~ZzaQT_?s<59@~uk!%E|JNJ9h8nzTC4!u0_D<&l!_yhQ&wjc>Y(< zdwQcd`9^q}V$u=oFW$ezSI0$q#s)M0e!KUjNum(v#kU*$2II^ zy&tW(nNpU^>QH;|{*OOz`B#35>fHJBeaYLYj!Sggn{0D4=RRt9blpP2T;*ED=f*d``yeY zAfLB5>uPh&HqALx+T#`kR|(8}r5tkQ#=-@Lud(#A9x7Dbh^gW|>#(vkDDoBKHtFzt z-y`{5^*8;pU;U9`+PTd;zA}o>xBbU+Je9Rnu|+^Pfcplwr{ad+-8^!W&Zoa`znJV} z5uf6_c+0gt5nf*;*nB|7MkIN8cTK}8<@UJHus_xAWdA)JV&$mvu#O)8Pdg{t6 zEZhA4!LjL^1McseSt>8SI8piC!mCT($Q%Q%Doro^v1OWk;Bn+fB_9-{tea z;YY7?lRN}p1p1MzHJ7}X1zHmoMAXmO*YG@_g0$WJUJetUa1tRtpfJ0XYVmFTa`vH+w}BR zE6=<)N$=kTP8Zn|GiT}wzSxyFY-VQ3A1L%P%U$^UKsIMYV9B?nH+OwLwi%1(%7?mp zbN2c#4Na2D+wOK~s%C~^`$~e47&0=i#|JA^C zYTNUNvK2G07DRq6m=-tD{o=9HwYi0Qn|+xKcYe63!`SxH(d;q9@`s{5%skuAC(n3y zbx+&NwB8c4t3T3@t&+-*$Tak1=P+2QzT0y__~H=hWv_)6a9n(}rGbG>fn&Gx(Z}18 z`L{A}<*g69e4?Vp?j>i~f$rjqcb}}$HTUN3h)z@4u?kldp<7KFtXZ`W}IpvopB(Cj^>hSkneEG8R{+aVvcYW4pwEAUPzI4|6 zIoz<$wB`Rr39nZlwmkmA?)}Zre*#}Qg2uSybrZxUi5@>-S#l{};rC5*j=lQbW)pjl zUiubjuv(v69W;QouO_SLBAdQC_cp<6*(?ji9CkJxiMt*Yx?yTnGxOI=O0RD7DJ;rS zK3?{GVX2%~#!tIdTNvIXGVbu3^3eIr*i!-Zrj4q zA9r@5X#VBAFGhJgH&6TZXsQLj$+kHx-_?r`sR#*Q;^cXKd_m^+f}EEs+j5H^-7=Uf z8@~6%0?Xu&A@YxYEc|mUPYPRAE@SgczG(CFOWD7qjI!s1h`d|!X%qW}xHMZ6xwYt( znG5$7Cbo}UA1^PR!IQviB)LR7li%F#o>)p$TaHIWk-=0+`H`}OjUz|DZV9HwQqbY{=zUFet!TCmR>}O7AY+JD4=f`8oGtay_kiJV! z;Ki<#Xbw$n`MFz6~Z&1hB>SO86}&WcK^&r>%hsG zzdxKV*=fZSAFG7b%ii*}c=8XI@{-+H}uv!^t|IwAV*6 z)UtP6$$oZUb^iI>8F8`kxijR%Br<2@ncked>R9b9gS(lV)Tc$ta(t}){GLJWPgRih zd)53;$ufrj-gSE~Z4tCCkP-C$=MS#db;CBZ8+e_W`=$O-Sf8zVTWzYClG`5V{Y&aM zzM4Aqis{u)3GaQEb58c?$a7Dr5V$)((ltEaZufILw~sF)gxt@nZO+zac*Xti*z^2) zkEz$a&R`5w>_2vJ$Hj>IyL#ugpSzP7(YaH9b|1Ujq|M)}cJ=?~HB>ayF_Ra~UcRC5 zsCdQIkf7tK6DLh`^tf2_jh$D)?vC5lRqQ`=f-N-p_c|>9qF{5?eZ`86&W_2~7&Buk z|MOTaX>DHh_|)8!$5>ylJnZ;o!_F^Kvl@e5FWGd3IcI;1)E1$-!=HKf?NV0c>-}_8 z_{Nqzc{|m0omC7>Rujzf_}<=TS@cqC-`(?@zV({E2=~V}xOu2;n(|iJm;U?Q|D-Gb zcrw{2vOJhW(PeYyHwHKT_yf=1e@*^yqg|ukzDKUMZ1VJ}cS}AnJ-BydUFGZ({c?vF zXr6pC!)WefJBHQ+ujehSo*lZT?v?MVuMxNYlqv3Qf0K6glhP@BspG3k%L^W#j@%Me zZG3aRD7Zf5Tyo^rhT~_`Uc423;#WQKL0FuY`OXV-vu~J{TgGi?`)2p$#4L|bzcz}5 ziU!`vTRIt58=!+T zuU@n4Ef$Xc9(y5W4a&4oN7~glj65%{j#is7Po81GWs&`Iz*AA536|}L^ z=&D`A<0(0}oW3_+7uvAs#hVDB_i0_`B9|{XK3e=LLv!KBm0P@g4!^zTvBQW}_nCp{ z(l`-!^Pu-q{z*No^YsPXXY{U8U|n^7TA+TM(?!Pc$I9FjHDAs-_t$o+TtiLYJ3BX- z2BhKPifvLk3$@gkqFvM$#_K-#;3*&Ac=Mah9%lWAQ)*jf?(Gon=bIuHu(0e{p6SYV zXK#%)b@N`UwQl&n_`1c0^Y4f`o#0tXma63bUq+$nprux!D$ zhv&1TB>T^++aBbqDAe0Ed(KwXw(|eHvsc9$Z1~vJzH58eul2`uvv%}}CBL?v^P^?% zn@C~T-{<}oY9F1l<8Au)g*~vf07vdy_b*XSj`*IXXlL5%=YRfBTHQLWbMkB}7ti19 zIPaPDa#iQ@qKtnYpT5nxzbg?@xtgqE-`lr2+2Cv2-M=D}s|wyPNH|x(x9q;(?}_<^ zmrq)*sk^%5syAo`%rWYKNtSkBWATe6`yIY*&KIbP7t2+W?q2$KaY9%;xQpFc`}2xQ z1>*o!zxRu6H550p+`4n6=BM86`w

ljRTX`=@dxAYR-rBj<+eCtkHhzyGQnl{}vY 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 J%Q~loCID|=J&OPU literal 0 HcmV?d00001 diff --git a/docsite/docs/installation/installation.mdx b/docsite/docs/installation/installation.mdx index f6647f84..39051c3c 100644 --- a/docsite/docs/installation/installation.mdx +++ b/docsite/docs/installation/installation.mdx @@ -172,7 +172,7 @@ See the [**Quick Start Guide**](../quickstart.mdx) for another guided docker-com The example scenario: -* [Spotify **Source**](../configuration/configuration.mdx#spotify) +* [Jellyfin **Source**](../configuration/configuration.mdx#jellyfin) * [Maloja **Client**](../configuration/configuration.mdx#maloja) * Serving app on port `9078` * Docker container located on a different IP (`192.168.0.100`) so use [Base URL](../configuration/configuration.mdx#base-url) @@ -184,7 +184,7 @@ The example scenario: ```bash - docker run --name multi-scrobbler -e "SPOTIFY_CLIENT_ID=yourId" -e "SPOTIFY_CLIENT_SECRET=yourSecret" -e "BASE_URL=192.168.0.100" -e "MALOJA_URL=http://domain.tld" -e "MALOJA_API_KEY=1234" -e "PUID=1000" -e "PGID=1000" -p 9078:9078 -v /home/myUser/ms:/config foxxmd/multi-scrobbler + docker run --name multi-scrobbler -e "JELLYFIN_APIKEY=c9fae8756fbf481ebd9c5bb56bd6540c" -e "JELLYFIN_URL=192.168.0.101:8096" -e "JELLYFIN_USER=MyUser" -e "BASE_URL=192.168.0.100" -e "MALOJA_URL=http://domain.tld" -e "MALOJA_API_KEY=1234" -e "PUID=1000" -e "PGID=1000" -p 9078:9078 -v /home/myUser/ms:/config foxxmd/multi-scrobbler ``` @@ -204,8 +204,9 @@ The example scenario: container_name: multi-scrobbler environment: - TZ=Etc/GMT # Specify timezone from TZ Database name found here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - - SPOTIFY_CLIENT_ID=yourId - - SPOTIFY_CLIENT_SECRET=yourSecret + - JELLYFIN_APIKEY=c9fae8756fbf481ebd9c5bb56bd6540c + - JELLYFIN_URL=192.168.0.101:8096 + - JELLYFIN_USER=MyUser - BASE_URL=http://192.168.0.100:9078 - MALOJA_URL=http://domain.tld:42010 - MALOJA_API_KEY=1234 @@ -261,7 +262,7 @@ See [this issue](https://github.com/FoxxMD/multi-scrobbler/issues/135#issuecomme ```shell -SPOTIFY_CLIENT_ID=yourId SPOTIFY_CLIENT_SECRET=yourSecret MALOJA_URL="http://domain.tld" node src/index.js +JELLYFIN_APIKEY=c9fae8756fbf481ebd9c5bb56bd6540c JELLYFIN_URL=192.168.0.101:8096 JELLYFIN_USER=MyUser MALOJA_URL="http://domain.tld" node src/index.js ``` @@ -273,12 +274,13 @@ SPOTIFY_CLIENT_ID=yourId SPOTIFY_CLIENT_SECRET=yourSecret MALOJA_URL="http://dom { "sources": [ { - "type": "spotify", + "type": "jellyfin", "clients": ["myConfig"], - "name": "mySpotifySource", + "name": "myJellyfinSource", "data": { - "clientId": "a89cba1569901a0671d5a9875fed4be1", - "clientSecret": "ec42e09d5ae0ee0f0816ca151008412a", + "apiKey": "a89cba1569901a0671d5a9875fed4be1", + "url": "http://192.168.0.101:8096", + "user": "MyUser" } } ], diff --git a/docsite/docs/quickstart.mdx b/docsite/docs/quickstart.mdx index bcc40fa4..d619294a 100644 --- a/docsite/docs/quickstart.mdx +++ b/docsite/docs/quickstart.mdx @@ -57,20 +57,17 @@ services: ``` - To access your Spotify activity you must [register a Spotify application](https://developer.spotify.com/dashboard) to get a - **Client ID/Secret**. + To access your Spotify activity you must [create a Spotify App](https://developer.spotify.com/dashboard) to get a + **Client ID/Secret** and set a valid **Redirect URI**. + + Refer to the [Spotify Authentication instructions in the docs.](./configuration/configuration.mdx#authenticate-spotify-with-multi-scrobbler) - When creating the application add this to **Redirect URIs** - - ``` - http://192.168.0.100:9078/callback - ``` - - After the application is created add these values to the `environment` section in the [`docker-compose.yml` you created.](#create-docker-compose-file) + Assuming you used the **HTTPS** method for your **Redirect URI** from the instructions above...after the application is created add these values to the `environment` section in the [`docker-compose.yml` you created.](#create-docker-compose-file) ```yaml title="~/msData/docker-compose.yml" - SPOTIFY_CLIENT_ID=yourClientId - SPOTIFY_CLIENT_SECRET=yourClientSecret + - SPOTIFY_REDIRECT_URI=https://multi-scrobbler.mydomain.com/callback ``` Later, after [starting multi-scrobbler](#start-multi-scrobbler), visit the dashboard at `http://192.168.0.100:9078` and click **(Re)authenticate** on the Spotify card to authorize multi-scrobbler to use your account. Monitoring will begin automatically after authorization is complete.