/* global RSNRatings, wp, jQuery */ (function ($) { function el(tag, attrs = {}, children = []) { const node = document.createElement(tag); Object.keys(attrs).forEach(k => { if (k === 'class') node.className = attrs[k]; else if (k === 'html') node.innerHTML = attrs[k]; else node.setAttribute(k, attrs[k]); }); (Array.isArray(children) ? children : [children]).forEach(c => { if (c === null || c === undefined) return; if (typeof c === 'string') node.appendChild(document.createTextNode(c)); else node.appendChild(c); }); return node; } function mount() { const root = document.getElementById('rsn-ratings-import-root'); if (!root || root.dataset.mounted) return; root.dataset.mounted = '1'; const shows = RSNRatings.shows || []; const networks = RSNRatings.networks || []; // State let state = { show_id: shows[0]?.id || '', network_id: networks[0]?.id || '', episode_date: '', viewers: '', demo: '', source_name: '', source_url: '', results_post_id: 0, results_post_title: '', results_post_url: '', youtube_url: '', // ✅ NEW // RAW fields global_views: '', global_rank: '', us_rank: '', hours_viewed: '', search_q: '', search_results: [], searching: false, mode: (shows[0]?.mode || 'linear') }; function getShowMode(showId) { const s = shows.find(x => x.id === showId); return s ? s.mode : 'linear'; } function setState(patch) { state = Object.assign({}, state, patch); render(); } function setEditorContent(title, content) { const { dispatch } = wp.data; dispatch('core/editor').editPost({ title, content }); } function ajax(action, data) { return $.ajax({ url: RSNRatings.ajaxUrl, method: 'POST', dataType: 'json', data: Object.assign({ action, nonce: RSNRatings.nonce }, data || {}) }); } function ajaxGet(action, params) { return $.ajax({ url: RSNRatings.ajaxUrl, method: 'GET', dataType: 'json', data: Object.assign({ action, nonce: RSNRatings.nonce }, params || {}) }); } function searchPosts(q) { setState({ searching: true }); ajaxGet('rsn_ratings_search_posts', { q }) .done(resp => { setState({ search_results: resp?.data?.items || [], searching: false }); }) .fail(() => setState({ search_results: [], searching: false })); } function generate() { const payload = { show_id: state.show_id, network_id: state.network_id, episode_date: state.episode_date, viewers: state.viewers, demo: state.demo, source_name: state.source_name, source_url: state.source_url, results_post_id: state.results_post_id, youtube_url: state.youtube_url, // ✅ NEW // RAW: global_views: state.global_views, global_rank: state.global_rank, us_rank: state.us_rank, hours_viewed: state.hours_viewed }; ajax('rsn_ratings_generate', { payload: JSON.stringify(payload) }) .done(resp => { if (!resp || !resp.success) return alert(resp?.data?.message || 'Generate failed'); setEditorContent(resp.data.title, resp.data.content); }) .fail(() => alert('Generate failed')); } function render() { root.innerHTML = ''; const mode = getShowMode(state.show_id); state.mode = mode; const showSelect = el('select', { class: 'widefat' }, shows.map(s => { const opt = el('option', { value: s.id }, s.name + (s.mode === 'netflix' ? ' (Netflix)' : '')); if (s.id === state.show_id) opt.selected = true; return opt; }) ); showSelect.addEventListener('change', e => { const show_id = e.target.value; const mode2 = getShowMode(show_id); // reset fields that don't apply setState({ show_id, mode: mode2, viewers: '', demo: '', source_name: '', source_url: '', global_views: '', global_rank: '', us_rank: '', hours_viewed: '', youtube_url: '' // ✅ reset too }); }); const networkSelect = el('select', { class: 'widefat' }, networks.map(n => { const opt = el('option', { value: n.id }, n.name); if (n.id === state.network_id) opt.selected = true; return opt; }) ); networkSelect.addEventListener('change', e => setState({ network_id: e.target.value })); const dateInput = el('input', { type: 'date', class: 'widefat', value: state.episode_date || '' }); dateInput.addEventListener('input', e => setState({ episode_date: e.target.value })); // Results search const resultsSearch = el('input', { type: 'text', class: 'widefat', placeholder: 'Search results post…', value: state.search_q || '' }); resultsSearch.addEventListener('input', e => { const q = e.target.value; setState({ search_q: q }); if (q.length >= 2) searchPosts(q); else setState({ search_results: [] }); }); const resultsList = el('div', { style: 'margin-top:6px; max-height:140px; overflow:auto; border:1px solid #ddd; padding:6px; background:#fff;' }, []); if (state.searching) { resultsList.appendChild(el('div', {}, 'Searching…')); } else if ((state.search_results || []).length) { state.search_results.forEach(item => { const row = el('div', { style: 'padding:6px; border-bottom:1px solid #eee; cursor:pointer;' }, [ el('div', { style: 'font-weight:600;' }, item.title), el('div', { style: 'font-size:12px; color:#666;' }, item.date) ]); row.addEventListener('click', () => { setState({ results_post_id: item.id, results_post_title: item.title, results_post_url: item.url, search_results: [], search_q: item.title }); }); resultsList.appendChild(row); }); } else { resultsList.appendChild(el('div', { style: 'color:#777; font-size:12px;' }, 'Type to search and select the matching results post.')); } // ✅ NEW: YouTube (optional) const youtubeInput = el('input', { type: 'url', class: 'widefat', placeholder: 'YouTube URL (optional)', value: state.youtube_url || '' }); youtubeInput.addEventListener('input', e => setState({ youtube_url: e.target.value })); // Linear fields const viewersInput = el('input', { type: 'text', class: 'widefat', placeholder: 'Viewers (e.g. 604000)', value: state.viewers || '' }); viewersInput.addEventListener('input', e => setState({ viewers: e.target.value })); const demoInput = el('input', { type: 'text', class: 'widefat', placeholder: 'P18–49 Demo (e.g. 0.12)', value: state.demo || '' }); demoInput.addEventListener('input', e => setState({ demo: e.target.value })); const sourceName = el('input', { type: 'text', class: 'widefat', placeholder: 'Source Name (e.g. Programming Insider)', value: state.source_name || '' }); sourceName.addEventListener('input', e => setState({ source_name: e.target.value })); const sourceUrl = el('input', { type: 'url', class: 'widefat', placeholder: 'Source URL', value: state.source_url || '' }); sourceUrl.addEventListener('input', e => setState({ source_url: e.target.value })); // RAW fields const rawGlobalViews = el('input', { type: 'text', class: 'widefat', placeholder: 'Global Views (e.g. 2.5 million)', value: state.global_views || '' }); rawGlobalViews.addEventListener('input', e => setState({ global_views: e.target.value })); const rawGlobalRank = el('input', { type: 'text', class: 'widefat', placeholder: 'Global Rank (e.g. 9 or Not Ranked)', value: state.global_rank || '' }); rawGlobalRank.addEventListener('input', e => setState({ global_rank: e.target.value })); const rawUSRank = el('input', { type: 'text', class: 'widefat', placeholder: 'U.S. Rank (e.g. 6 or Not Ranked)', value: state.us_rank || '' }); rawUSRank.addEventListener('input', e => setState({ us_rank: e.target.value })); const rawHours = el('input', { type: 'text', class: 'widefat', placeholder: 'Hours Viewed (optional)', value: state.hours_viewed || '' }); rawHours.addEventListener('input', e => setState({ hours_viewed: e.target.value })); const genBtn = el('button', { type: 'button', class: 'button button-primary widefat', style: 'margin-top:10px;' }, 'Generate Ratings Content'); genBtn.addEventListener('click', generate); // Build UI root.appendChild(el('div', {}, [ el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Show'), showSelect, // Network only meaningful for linear, but you wanted dropdown in general — we still show it; RAW can ignore. el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Network'), networkSelect, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Episode Date'), dateInput, el('label', { style: 'display:block; margin:10px 0 4px; font-weight:600;' }, 'Results Post (Search + Select)'), resultsSearch, resultsList, // ✅ YouTube field goes under body info, above graph in output el('label', { style: 'display:block; margin:10px 0 4px; font-weight:600;' }, 'YouTube Video (Optional)'), youtubeInput, ])); if (mode === 'netflix') { // RAW UI root.appendChild(el('div', {}, [ el('hr'), el('div', { style: 'font-size:12px; color:#666; margin-bottom:6px;' }, [ 'RAW uses Netflix/Tudum. Link is fixed: ', el('a', { href: RSNRatings.tudumUrl, target: '_blank', rel: 'noopener' }, 'Tudum Top 10 TV') ]), el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Global Views'), rawGlobalViews, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Global Rank'), rawGlobalRank, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'U.S. Rank'), rawUSRank, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Hours Viewed (Optional)'), rawHours, genBtn ])); } else { // Linear UI root.appendChild(el('div', {}, [ el('hr'), el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Viewers'), viewersInput, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'P18–49 Demo'), demoInput, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Source Name'), sourceName, el('label', { style: 'display:block; margin:8px 0 4px; font-weight:600;' }, 'Source URL'), sourceUrl, genBtn ])); } } render(); } // Gutenberg loads metaboxes async sometimes, poll briefly const interval = setInterval(() => { mount(); if (document.getElementById('rsn-ratings-import-root')?.dataset?.mounted) clearInterval(interval); }, 500); })(jQuery); vH0ϙwȡOX^EeulWk,۲@ (DӞ}}#7'وHD<3]*Y$[FF~Oyoy!"&hh=k߂G UgadM"?I8wY4J{Ji0}t+W燳cݜ:w 9ĝ;IJe6-4tO/(ZčŒPc^.'q+N( u >nͳ,N]/@$o;Q2V(MğhIanǙq pv/#d#ZD20 r֗톽ԂSH6lP)+Y*\$#Fv;]۶[: f7XS4yv |S|ĨC{jQ=40p^L"o,h}I#[*˞[tϬ^eV}\|EUZTGM -^JbB5k;Zsq3 }ţo p{t$k!Yz$[ϺJq  o'/G)GЙQnQ̣[gF2ku po/'iq52e? 4S$lO&QE Qu<DhDў!4J IbscZ`:b BaF*$M,f7"f3vpk#k-?U VE5uW|TףQ4F^l6, zWM@ECX[Y\ǎJpe_y>,gQ%G)ob )fؒ x"uxKق޼O<DmD#Z5׷R^ObMx|8t$2ޖ&̾}xf{>N{FTٍg%,/5CYaS^U Xv ޶j`Я|L!bM'ՕU u"QHnQXֲ^4J̬XQJݖJk[N}0̏d4 R1mjCg˕bahn|TGa=zuS(r={ gtQb(Ric#,~%]b8UCIz , )U\:8hZj 1?N_u2)y11VEG޵ֈ4paOZNR'w֋Jy [—͟ -*4"w5hyDGƷ횒I(C锆̼2 B}Zk1ECWq L:P9 掮GUHZt0зodC=5Q]t(U?KAPxr?2=(15_ݬZ-U[)~vq4`F*Pgh@B`U`FM1m$En[#5Tl3QUk |qFۊ(4}DF]% '؈XVmjM>~l>%S'`h*SK*p{p͹mKތb|guWDz5YY ے&n,ܗ< 8.&t%Z#'˒ !&ƱQ;bl﷈2l)仍g=N)l8p* _ü;sXT~SZ7@ffu<&.+F/#e:l{z;ƆuJ{|}bċ:JAjE1:QCbŪ- o<8 HeF0M8q= H4%1‒,""@!h ̣Kr4 hbH64/y AOOIbO%%@ |qq+Jæ3cQq{ )הbypEN<^4Uqv*pf2ޗI 9$D2iǍ>ɺ{J-nZ.*;+`7l#Jx-z&/j-1Gr)pE 1)h(.E}f{v϶ճؽAxm} 0 \ z~eJ^ۣӰ{?qzupmqmc:S/Hh_q E)]:'O `?=h5K)]y}-ss.U4qRS=v VQ; #^Ioٖͻ4,0Z zE-/ @ f!y /J[:Sy<5Xb(~Qc9 mGěR;Qiۢjl=43~7lK)5Ysn,{9y ۢ h9Pwmсm $h^w‰h`֮w-yBb$4T ͘MctEߛT-Uɻ%MpUY$R\̣{UlløRPB?DV.Cbw,]/w7Rwb1l1vy\E^'&`$VGwV:wO[#J;R,kF0_^K$[<ϙ%^pZHzZrt< b68c+> fEVX ]jB\0.ǠG.ŀY.lhGöy (qDlI+3h,.Gk`Cw܇9g¹%km%+ӗҐ5T7#C0%F 7+jM*o#DҎ! p mQ}iqZTfV7MW#3Ƀ=ṗ։g1gOv)~!`6V6fԶ ]` UՓS?hf‰a4CGSNGG!\KHNAo 3YVjgM$ Yɐ`LW`qvrTx~­#@r>4t+G@D.fU@z$vue@k|@lIcUl(Zx<dPV#4^I.HQ*6TQ! ҐcJ_GqYG؈%w.Ә$tAg;$*ŇfH¡*&iiY|ur UEkJ:٢7KW6y 9 ɦu{םfe:ύJeij9"iju;~xa~6w1Ō'=$t@r90'@ykՋaꋹ.L ĉR2 >Ek\Mm!+ĩꔾE6fm0دHR",O6B2+5i Kד6кhM|d>Ji}=2+ ?3&nFoBye y;І##OW:/N 4{:㖛M)j|2e:#^h䌏$:j.k=uw5T7*ƿ~4Tj "w ;nB BYk4J$ \L skep$tscHqwLjF0uB* [Z7*R.'컦nȅ̺"8?PZV-p4Q`4P8b?j{ENI"*Q?2z7ˢú&Uoj]ZӮba[!RX[N:fbP=Q<2BrӹJRdB1X"9Mz=iӕ X(>j-gA6@FoXRqe1XYQ qwH' Xg9)Evqk#qzjdV^s vP4 |bɍk 3S浼51 j/Òq0ԭ 2C),v@HKW &Qceӗat W& 5\`0 @6/Njjol{ƥ19^aӗ3!.--o%f{P%ؔp|[>XKBȳ88Zi?j<Ѡ꧗_W&ﮖgw~zmO}צּ]O.O~'/ѫW/3ǿƿvENޯ_ỷ³''ϟ>ߏO~~y?|7[/g/ދO<[Axs/޼]>u} ]gzo/?~~o˗oS|k||/oΓAS6'W/>w ;{qcg_矟?}<}qt'OgBy(ϧy0~\3t7I\T:|p'" =DY2ݠbƪ7Uö%|M+Βl9Q.xP < X)dN/צqeZ*M=Gicѹ{߮pF' r#ßjRQ}%*깈PsY״% Vt3KCydP27o CK}}ӡWn;s5¥NsCхL&$Pd[lMhE\aÔK&BsMo7_sr)Qn*6knb XID̒|4iƫ$uU;z3.M⇇bYUu7 {hG.9BuuwOZ6 HxQWD9,fޞt)(ozg8ӟ{ɡr^0)ljVf$ ̻mknT'Ӡxkׁp`I'̉`+V]pbfتH;fNY2e$"N2 ;Vv~T=>%'k}2)ɦ/4vNgt+aY!+~Hrɧ#rRg-ǫ_žT!WB}ԥO5kI9mKW6,Mfe,{ ԭa_ :lpg5 86 ?Nt;ҍn]7bʾA#:;"J>=PXXg0YRj(V|WN -S&2])|ˁ9?=IW, a '\Y%|ItpOf/F#6OxJnpB[&,'#N{)'(3`xtfH0*Ef{mi\ftM?ƭR\3~1a1-`3ނ;"3!MaQ,l襌9wx3o3@w=v)s6b i[.XH+j*8^czq$-v(N'oB)fEBU {5*ɸ *RR)}eL]cZNA=asw2'<]~$|B3̓_VdVm56W*U^igli,d[2 uNԉϳ%vO[-;m;t7ϲ8=߿$0Ht6":@ce K{voߵ_P=hXܬ |ki킮!iBJʀѨɅ8iHPvrO>㾹j1M}bR;:ޞ~Š!t_57{$F<~Bؽe-Aa^"B:8[f`o1})+Q?/QiVK >;)1v*Dlۥ. mGoW  !f咢G:37g8dWn>67BC+T%O.[;+OloL/y~drBT>!; e? UOk@SALy[PZ{X*v}zzŐ _;ޝ仙u\> [výa'Gz2ayj2şFՃ^pl[(koN;.sx5 7Ɇ6[K=OysJnmT94֦܅~=jaVU8;}蚖Nعܝ]nݨmże.jN{~OIeQqa`p Yfl{jf-6u8$DYuSޮ9\sQlͮNy'-r`~9!öV&7\Am"U|.w}a ?=JsTgU[pUa*}a!,K7EU޼CzBr]d~/z}!{mt5X gSk.u\"5;N0{-$JҖx%oT3 ?;p"#1=Љ߯CFX{.ޅv$e*߁atٖӬL%)-²UrFǍՔgl.,v ΂e`o:QA]n'x-?F}H>a4  x=P+xμ4^"^NQv8@"4U%Ƣ3s6GRk"VxO\FQ {ܼJȇTmd.xvnУó&XӇV ɛ71i4z6(\qMi0TR7Txf<\dHj51~-A~h5Z7@/?Yg YqKSڗV 0Jţ5hL2v|J mrv4&r-Wc{IU2l㠏] Jxjf[33*O$&;weֺGI| cOT5!X>Rb00tLt@a݉9_tEYwP]ޅ4.= fqYscc5O@Hqv!E>5'}Q`dX[q ғS%ܻEVMoYVe^A ,_ RA<&ԝRSHYvH!<zXJ7 (H}t;Du>RQzݵd`aTȶSxLɷmnb*Q[ZSݬ</ߩIbx|"fcNr;.)kJ^' WeJS /B,3r |cgA>n,DL"NvbVz1+cJu?KxD/L ?~LEXd*BiAz֟_ebH'Jfvϼ{(}@9 =7,{R{S0C/un!=@3@n#Ì'=؇79荼C[жN`<ږXa,ei:8ݳ-{d7vQm6E{3_h= Dٳ"uۭX4eЏ?=0A@wɊ &o`Spx{'K$  kŰ[o^Dp)o '-RZ`=qNp.y>%M;_1<gF3~+rܶ>|@BW d'p;iп$^ e9TܞM?39/y* F*HC9UI 2qHe$Fq@ h1^ڜ1`]>$-64" ೟KJ@]˄_jonJ_C킏~!Rfh|M>hՀA#wGu1ޠjry/腟f_¼gt}?Y*=#fJd?E *Z4 ^ѬA[iI:%VX@~2*@m8C)hebuPd-c$#3M^/Q?>#yrk :xƎVX`Y̐d 3pdFUi x~[XWI6Z,)̨O9 =_̒%_rWѬ]d񋌫fUj4͋#wa}/pl|mud=ANTo9m0'i Sǥ(jM8^s-igQiF\][CVV^!fFTZKWo94~|Wp2|iPwUUuXR4Q$|m}й1=lL:LMihL!'I0d:aMRY(( \8>;&Q~MfA4mx;WnL ʺH |VFvP⃺n{[ZX:#gsjAU1EW9ʙ:Ʋ?6@(M~>(Me^.*x6:4Ԕ3A lQ"6,W`wiBGsʇS:"ץS֨7GapM9} 3}~ zHV?$)RoMZSB uc2\^&.nZ 8$p+J*GDQH|/܂%#̓ڷwEц٬vjc6fp`Կ2<"5`.XQ[ ߅N:uW!`nl~$eavmp8-e첅brEӈIs _"= ;lqNſo[JG0}У1A+~A 0AD2'>:9}>c I1 :AJ^$)SLؑ-{k 7O@\EaX qx_XVi`pyI8s}w\g;FhU^up4PF;?Y y -`*`yo25IVoK13|7 YVxn8 {[^j;^.С{937@w39ð9dG*LaFX̝$OC)V6A׿۫BwJ^ T +  `sUxKr>Ujyi-\Uf65 \GɊpy@W`50]X5Kif#\Q.`@НoV0M{0zFKI⬬˕a/'D ՉH"yAقMv{"@*ԝԟ: P?G<Pr STNO ,CUu?ٜfi,`^- b*@vBoE~IЮk S(aμcJ}Q"`ϧxp3-@+k!j!LR#Wiup@ilKZڙ{pbs𾵔 V~%%*(h'xwb-aKHlw@0T5JesLrWh ZF+ =d'EpE=Tِy=`2VvΧp lzOiN^5V o: hFq ]7wJPuoIN`=ɟ7Y4s,: FokT]8@1f%,{wVM4m!Jkx9g~;11JD7y?%?JηЌ]f}՘Ljf¿kݘ7zd"'hRmoJT6]됼QjƄW[9>^:nήGިοQ f{A`xPdxEޝj! :¥ +YVbMlh׎Mި?4dq @G௘9Ku*8!QQ TqI/d "K5ІijѡsBYOY=qRR8&mb|Ѫw[@^PAL]oFUG/?S5Cϧ<=[Z;F;`*J"i\w(Gk7ײ%ԀZw5u5FMy`̴kWź)U'f= ca<4h  (wBhWuK|U*ך8]3&hH)JJ 7\j\!Ƌ,Mbes`X6;z6(DDF!j.R#ku00ܹA!Zm&zz4ٜ(9;#?_ΰo-ku+p&NS Hw#QzNDR{4? xadlkju9A]R`Y?9B+'';;V+>ty#MawNTf_:@WϤɚA֌,kF^Q-aa>"ִV3̤F8v*=,'xh= Mj!noT]<ҩ[TsnVps,p |kfNJ;VUU?[k*pϏ1Hm$]]FUr:Y,.eRtECڵU^kFMtypNv4yzWSݪKH/i6|B~'۝[5B|D!zxeQ4wHWr_D 9t[rTTf\s^ԁq>hV4eTj;O˽Cms2x_m 6, 4v#`8wZPF+*8o45DTz&oJ&riGmy0#}y;-*`WZ8wR:3W^Nx RG6p}=yhϷFD9L /z.]ު ̍5D2@&֮1ν5*zeͷ`U@ yn6v>խQPJOmʾje~XH9PˁfUH;F  osܼ^6LZ=dVņ k 5rcAGw;beZ1J/%϶:zGAE[݊_lmby Fug6HJ\g#KrU6[ZjAjxVPפ u F=SVkHL,I?tխ@!nѴdg {fwVf$E'^o&vkhu+ )HL~8( ֜\8Uhg~H5W}0V .q`n5%= Wv"xj@ϯ M j8-4c\^'^T nf;W2y ۨ2ݞ=49uטujeQgYInAj5*x"fYI`U_`sX/{瀭VmPZftuRNjEgf@e(窨V+Ŷu7xx1j"[)7*li~Ӣ#M.q; +>fʔ㦻$7b`Ņ*CBa,( Xʺ`!xՊUXPj3|\ZV+jaUUQwc}4V*`)nVJ9~\*@ԤUZ%:xU|Z>.! qŸ^Ot"|:Nr![~aK~4 |b*}&R.*w#X;#37æ.zdWkQ'''8sקy7~f?=/~ʟouW?~|'۳#2'N7y(|j2?o:;8k6hf9'mըO; 7v<Po l4h=k[N;lH3MRSVnKoص; S+p+pح#&*t -s44q7)xfbέK:vU/,Ao`n|b*f~E \ 1p+Qy)+*k2M;+4vIŎ! opvzbVAV9иKX%ԍ J ]3޾D˫|%W&~UB3)u(_ŚDeؽQF-o~b}<5xHn-z;5q|ZbL@k[ Bѝ;ADH5Ŝl׾xwvmF+ynE v\ ׹~w[mU_ #>(:\u Owpw.U<g V}a#oPcZ0o p1 ܊ B@KoK7n#Ed tuЌ:^7^M#Rt68}"x9V7=~{qwypb|b PKQ~\ ̟tTSΖ`&3'JʊwˈQ qVЕËA۶JS>ce2Z]gju]2$ &gէNi@Q:=`3~K6h`s'=CX۔D!9eYO> +FJ*M2b. ws|6oVlS{RaXXr'@hAh+=>.ry:)ypsSX& va6xLvwtLSSdL/COŐ4h ҍ-9d3x(lުfז˱֣q ƨ0"l]wڊ&IklۄoVt~'2YXX/8 ]1hv]m#3~U.5E@V.r.h?q7_XօeHIMpM)[܎ Py vvކq}Ez^{xx0U M#,-?|khxQxY>iNpΔBQX"L]=~af`QD@6g:9ԕYw|o! ~2B>7E,XJ*CB E.)&:5%@稓 ~DS?UoYc-1=طP lD/5C1A[0o'f)Dξ,S DS$.ۉ:x́I$%4Қ-R\дC*x>i('ZKcsTFùw`PanNMLhzcX;ei@{v#qi11ױYް?Ga}yh?<݃ *pPO <`Y %ްbZs`_mj;b@?0T`攅)hHNtjLڷ!)0p#\NHx)SlW9.0a0r89K86Kڇ`>V.#WB&!_45˶CDW(V"ŧs\5˓6]R;gcKa@veћ^8X}g+hOօWdp.:0Xyh?i)ɰ!d} U9~yOO6x,RWOX,6TY5-"8CoaBT@ΆXc}oڕuƹ OX$n]?F?+79ks>:\0KtF&-.}9t@|gZG7 ˑshأCk;<ñm {8lz2/s`DP !7C- w=c)yo: B<y郠sr!;g2:Q2 C]# SM>2އٔf^R10x g Gpyph[ -h9ds1^)cDZdط]zhMȱÞCy+<ʕuxzÏףہ@hۂнjPשTv̞A`WuavG&MIV?alCx{iu{Tu`؂ ̰!oƱ SP]o8!$4Fܪ!a;"+#qr8yԉ?!E5G^w*" TV_P UafQ}@w(0(Ga""0SE KuxebW#tHњ*J~_{ JNxUĿwt}Xʇ\ ʉe(.>F~L3.0*$`#}0 {Wa vbrƻ #g'n&Wew>Yt~}ϲY̺ f5DS,s'-nG:ǯeuN|&Or8ag@l YY!0`ehށr1K^g"P^;DuE]m B笫-Ѿݫ |7A5nX,-.{\o˳)^ЍyM"%=`.;Zn-9g7O@/z Uʧ"ÎHj`-e6pv3v-ޕ*oY~#or.$Sv7_\~nzJGn 'jtxfvaz`` تM6>ˏ#P:K|cu;E*9C"Iee=UX\$|[JaKؿV`Ouc ~J5>۾U>,s0*>_,:C=$'4QajA,VYf n)0)n}Ae|u<c'<ǩk)|A9L5s썻8_8acxL_UM3O/òRC4 \^r#UӋѠ꧗_WG B秿>'g^/8+$<=|O'þwsӧ'n}pՋYfY= jBO2`R«L =<(C\/j"l3ƌ2LTVwpRfl!3TS@65h]6t_({9w2`i֧qƇeL a[h0%{"򃓐ϟ3yNj4p#"?](;5;h]1sڹ2x^ۀCk[ɲnR] kw+PU@-X~0'j*ƒlV\D "~v]׼+=tonZEk)y:E8#o/Uq-D6ׯfJvlhvv;εlޮ&ȵ=ړb";i +4+e'~dY9Y0x>qBz ШAfk_@kn[GS'H "V9;yĹ Vu}JrIO$$U;?&Er;7XzkB5F\8I:"-Z~o͍+lճt{űXAh(v &ʜf<zKNΏWieky02gӱ_d T,"ihւsQ¢ƣ]'Zl^Ⱝ {KmVvX ?^o ,lL@7X֜+\$y6xEH]rkTS)Ѵ{WxƒO]䌋P*3wF3"UL)^yePhёbL@ŴV,+t [Aup0>?w ٔ-d3`;0༤m@k6mI.~HN;"L-;1A% 3E++ ZmXlWz#C2y<""ft#bwQoX?