r if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html)) dom.remove(span); else if (/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) dom.remove(span); }); html = p.innerHTML; // Remove middot/list items if (type == 'ul') html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/, ''); else html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); // Create li and add paragraph data into the new li li = listElm.appendChild(dom.create('li', 0, html)); dom.remove(p); lastMargin = margin; lastType = type; } else listElm = lastMargin = 0; // End list element }); // Remove any left over makers html = o.node.innerHTML; if (html.indexOf('__MCE_ITEM__') != -1) o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); }, /** * Inserts the specified contents at the caret position. */ _insert : function(h, skip_undo) { var ed = this.editor, r = ed.selection.getRng(); // First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells. if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer) ed.getDoc().execCommand('Delete', false, null); ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo}); }, /** * Instead of the old plain text method which tried to re-create a paste operation, the * new approach adds a plain text mode toggle switch that changes the behavior of paste. * This function is passed the same input that the regular paste plugin produces. * It performs additional scrubbing and produces (and inserts) the plain text. * This approach leverages all of the great existing functionality in the paste * plugin, and requires minimal changes to add the new functionality. * Speednet - June 2009 */ _insertPlainText : function(content) { var ed = this.editor, linebr = getParam(ed, "paste_text_linebreaktype"), rl = getParam(ed, "paste_text_replacements"), is = tinymce.is; function process(items) { each(items, function(v) { if (v.constructor == RegExp) content = content.replace(v, ""); else content = content.replace(v[0], v[1]); }); }; if ((typeof(content) === "string") && (content.length > 0)) { // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) { process([ /[\n\r]+/g ]); } else { // Otherwise just get rid of carriage returns (only need linefeeds) process([ /\r+/g ]); } process([ [/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them [/]*>|<\/tr>/gi, "\n"], // Single linebreak for
tags and table rows [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"] // Cool little RegExp deletes whitespace around linebreak chars. ]); var maxLinebreaks = Number(getParam(ed, "paste_max_consecutive_linebreaks")); if (maxLinebreaks > -1) { var maxLinebreaksRegex = new RegExp("\n{" + (maxLinebreaks + 1) + ",}", "g"); var linebreakReplacement = ""; while (linebreakReplacement.length < maxLinebreaks) { linebreakReplacement += "\n"; } process([ [maxLinebreaksRegex, linebreakReplacement] // Limit max consecutive linebreaks ]); } content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content)); // Perform default or custom replacements if (is(rl, "array")) { process(rl); } else if (is(rl, "string")) { process(new RegExp(rl, "gi")); } // Treat paragraphs as specified in the config if (linebr == "none") { // Convert all line breaks to space process([ [/\n+/g, " "] ]); } else if (linebr == "br") { // Convert all line breaks to
process([ [/\n/g, "
"] ]); } else if (linebr == "p") { // Convert all line breaks to

...

process([ [/\n+/g, "

"], [/^(.*<\/p>)(

)$/, '

$1'] ]); } else { // defaults to "combined" // Convert single line breaks to
and double line breaks to

...

process([ [/\n\n/g, "

"], [/^(.*<\/p>)(

)$/, '

$1'], [/\n/g, "
"] ]); } ed.execCommand('mceInsertContent', false, content); } }, /** * This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine. */ _legacySupport : function() { var t = this, ed = t.editor; // Register command(s) for backwards compatibility ed.addCommand("mcePasteWord", function() { ed.windowManager.open({ file: t.url + "/pasteword.htm", width: parseInt(getParam(ed, "paste_dialog_width")), height: parseInt(getParam(ed, "paste_dialog_height")), inline: 1 }); }); if (getParam(ed, "paste_text_use_dialog")) { ed.addCommand("mcePasteText", function() { ed.windowManager.open({ file : t.url + "/pastetext.htm", width: parseInt(getParam(ed, "paste_dialog_width")), height: parseInt(getParam(ed, "paste_dialog_height")), inline : 1 }); }); } // Register button for backwards compatibility ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"}); } }); // Register plugin tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin); })(); {#paste.paste_text_desc}

{#paste.paste_text_desc}

{#paste_dlg.text_title}
{#paste.paste_word_desc}
{#paste.paste_word_desc}
{#paste_dlg.word_title}
tinyMCEPopup.requireLangPack(); var PasteTextDialog = { init : function() { this.resize(); }, insert : function() { var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; // Convert linebreaks into paragraphs if (document.getElementById('linebreaks').checked) { lines = h.split(/\r?\n/); if (lines.length > 1) { h = ''; tinymce.each(lines, function(row) { h += '

' + row + '

'; }); } } tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); tinyMCEPopup.close(); }, resize : function() { var vp = tinyMCEPopup.dom.getViewPort(window), el; el = document.getElementById('content'); el.style.width = (vp.w - 20) + 'px'; el.style.height = (vp.h - 90) + 'px'; } }; tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); tinyMCEPopup.requireLangPack(); var PasteWordDialog = { init : function() { var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; // Create iframe el.innerHTML = ''; ifr = document.getElementById('iframe'); doc = ifr.contentWindow.document; // Force absolute CSS urls css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; css = css.concat(tinymce.explode(ed.settings.content_css) || []); tinymce.each(css, function(u) { cssHTML += ''; }); // Write content into iframe doc.open(); doc.write('' + cssHTML + ''); doc.close(); doc.designMode = 'on'; this.resize(); window.setTimeout(function() { ifr.contentWindow.focus(); }, 10); }, insert : function() { var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); tinyMCEPopup.close(); }, resize : function() { var vp = tinyMCEPopup.dom.getViewPort(window), el; el = document.getElementById('iframe'); if (el) { el.style.width = (vp.w - 20) + 'px'; el.style.height = (vp.h - 90) + 'px'; } } }; tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); Version 2.0.6 (2011-09-29) Fixed incorrect position of suggestion menu. Fixed handling of mispelled words with no suggestions in PSpellShell engine. Fixed PSpellShell command on Windows. Fixed bug where Javascript error is produced when enchant_dict_suggest() returns unexpected result. Version 2.0.5 (2011-03-24) Merged with the latest TinyMCE spellchecker version. Version 2.0.4 (2010-12-20) Fixed issue with the JSON class not having the correct number of parameters to ord calls. Version 2.0.3 (2010-04-19) Added standalone support. Will use native spellchecker for supported browsers. Added @package phpdoc comments. Patch contributed by Jacob Santos. Fixed some PHP missing function issue. Version 2.0.2 (2008-04-30) Added new EnchantSpell engine class contributed by Michel Weimerskirch. Added new general.remote_rpc_url option, enables you to proxy requests to another server. Fixed security hole in PSpellShell.php file if PSpellShell engine was used. Version 2.0.1 (2008-03-07) Fixed bug where spellchecker was auto focusing the editor in IE. Version 2.0 (2008-01-30) Fixed bug where the suggestions menu was placed at an incorrect location. Version 2.0rc1 (2008-01-14) Moved package from beta to release candidate. Version 2.0b3 (2007-12-xx) Fixed bug where the suggestions menu could appear at the wrong location. Version 2.0b2 (2007-11-29) Fixed bug where the spellchecker was removing the word when it was ignored. Version 2.0b1 (2007-11-21) Moved spellchecker from alpha to beta status. Version 2.0a2 (2007-11-13) Updated plugin so it works correctly with the TinyMCE 3.0a3 version. Version 2.0a1 (2007-11-01) Rewritten version for TinyMCE 3.0 this new version uses JSON RPC. 6Ʒ,'cg6ݲ"5TMih{ 62 KSJhƪG.1=Say rѝ5D%p 9 r +u>J`.&e >%fDQܲLdX7m95'ND@5)jV2fI2y].x$*Fm{:!>tf۞*M=('OrTIHSylXFYk|["a$.0(s SbN` LT+ԟ3[E{A#7ܜn،ԻbGuhc*xcz2Jxd tMyQEC e`+C<~H`HS8 ^9w@XQ:sfᏳa7YSD*0ڸlִ?1J`kbG1J&ƯF q6jAp#9p83{ Ìơ8N-m"w KpƩi&G6ng|k8D .Ӎ|N>ٝ#Ǒ6ln \"ɗHɁV2@i{<$O];Iַ#‰-MJ`Kq0:֤1knV\A5g|lc$Vbj k1iT L:į {+ʠgmo$pb׈1-N] t> D=2}bص 5?%j,uTgueDVQ][N [ϊXi+nl_V!į$.kNHLp4GhhC64/ӀI#4#qS5(2&RϵnRDfOp'vQ1=N$ .-+W'9FG6$8FϐpFyp$:TIcݬT- =Lb:kYKCf>4Q iad1si#V-mIa㑽,o' ijXkȫpv&,eŊR(_4ZdE#jc0g%HIV,D`})ŻА̜FcL1~Αv醣[m %^%cj QSڈZ3$DzD੼,Uݓ7rdǨpQH9 5ҥ68dcȈܙdx1"D;V+ILW0tO-Ih)_)݄&_VH_"`EΉj[#aպn!j%rVh()Kf%?ölU|{֗rXO2X&;4,ґ՟DgQ$C8Wc2iV aKڛ܂)|M!&w9pgB4w,].wd5bt8Lj?1ʖm+L̢ISY0JrN ˩q4iy:XTeF :~3~PI3!@n7Vw )#L L*Sżxh4-5q2=?:,d("}p): _jݢ3x˜tJ hd(5GfƳu>br:c+$43PT].Kaq4-y\0&Ø %SpJ?ݯ#gzylԼ&\T`^!S$OVX ղB̵Jɍ>fJR)?LE6ؾɩi֣\l W6mI6z#խ-7f{\&,ZBLqȆ'<)|&| lʏP=B@cO0y;܆6}jäx_Q%ft!4R64E"Uoa^#~l+5KeRL,l/YqU*K |f6D, |ŽKrȹpcf.X-":8M<[Vbo0 7JbI1S# @w\d6 ِArK%Od9r 8ECv0ȻI qڧMC";_Z&|[ry2ԩ+ӯ·_R-(ĸ_ 6 ]'ՏLc6RK3ey]+<ۅBxqdjPt&m)a JNzs+NB\_^GtjaG " LqƇzvr̕ſ+|P+HDexV#a!5 džuZ猷i6bFlۢ5oN[N\$7s4eӢߔ 4dRA[:pE3d)(LCWͱ"Q҉`V q5I5&oEa >2Ǐ~?MmO[r]^+~JZu%%ޒnԧ+lQIeO]*z"3ҡ,~jOM:zP}.?D^Sd]CSڣ BۣAI^tkTR){y J[pPt[{47u`eK\j^{NkvՊ۝.}j.6V,-yj ߵMyu"Pe&0>>QR(q-t\Zl߷*()WF@`E>rU@X-0fl3@Pޤ|,4 жu=9R۾X9Y8iC&<]E{ d_DXPJ*,4 3Bw2.ңEDͧVNP3dISQPhfd]}i0MQ/(͓k'c?~|Q4сq٣dPj:7鱙;XQWc5ŨP(sG(́^2¯ƧN'I[q4A>3,,fNG}i ̝ C$ϫ7K䇒ӊ>Y2TW,x~Hx厦_+tP ھϹ{CӚ,"i f"㥗^YݨBuϖEn^= )Ml(AB?rE3SGO<m{T/_5 l伹#IAyR:yc0{uT.YM%.7:#y)g].PV$)[xPu:geuےەjR/?X~^GPf?[y>y)6jo yWF#lx#K}srXu2pIC`WQdz lbrJ:<iS'LisjMpEJ6ra<±faHp:ܸhu3#/]CSrfhT2>Z<{1,IVv˞v n8 @؟˨S@N?XῈ4<2S>-n1\Dr3̤FZWrHgaV [7#Fj|H?8<P#nIɓ,'_}xsdht!lspC<ٯσ&9*y1Tǿ1J'%v7=5䫼j G:t_b])P]1!eaF\y*i>H"0[N,s ~"鯶 f3Snn9ׇAVwڍ8^EK/ j4MAmu$*B7u-@H^'jׇϣ-j*rC}೏ޜEm\wcs-|IajQEXkZ կHac%͗Ɂ`H?E:]=*'=I*$_QEY:I81Y߱E$2z9%$-{"gθ[\6,MI\9I"/pWr(PiQ^5$43'<5L Ob阬CRf~TM6u q <*FbfeYMk穠?^\E b4Tve?C}(%ͽY:fRޣ.H-\J*%$~ڹERfB=y_[c"yZfM s[R`hAAw!fqE0 p߲궂2 Kkz ep$z+;4V?yƼ0nbwm3*vECKr/}~x]xa.\ZMۅ>S3NR%1e?kb>0>6oalQ@s'H@iEY# |}ɷݢfE.xc_JF\[jčIL8R\U@&#Ҵkm8ܕ8/ \= vvS0UA0iv-o2ϡ+Gk-/`I V h¬altGm*^&u`[^WT3*)~"E|)%Re~?uܥ]ljv4;y6#aS'es-Z5=쬉F=L[[XƲM:FU &\]Oq)[kr4%f>HubY_77 i@Q<3* {>exׇ8=^3uVYXĄFkk[M/["pBr5I9Rc`,>^ʔWb(B_SCB\43?,>ZӘab-4QqאRl\J+V1&4ثڑ67Pw=fo|~ -:HW (^\/s3U‡W7+Kw$U6mq}lL2Fvpz O@QQWQ~z~~tU%)/9A{R0Ԏ?9׵ėڌiؒ^ vWknQB%^çǀP 55= wK{H×V $Qe!<}\\s-[{dgC_EݑI$j*ƀN&V3TQS-7w0H yWvqbf6liwE6oOn%Z\R\;K#P*L\jZˈ.5;{)$hepڌ+E8n# jѵ=We(wE,>,پhƟFqQZAZ+).Ya8q(Z5V{Lw*sJ<6qh8 F{~n#s`ߠMR.GHʔ^ԌO#\ji2Zm Uʷ3|qa<˘̒p2+qp?g}h^j12F*8e|lPŢ^kj35j9l\iB*e6њZ?}d1gD S΂kdRDWE˝4!4Ze9qW>bj #q(' 3\~cZn^amBMMۘ3I9q؊vXV=7X)knOWR\\8ƀ4hh*$_ յ+ YJɞ3ڦT0hQtxIɕzr-B|xRilp W(V8:eK"%XQIpg/-Գd N_'"RPPrgʒ[QV95!]͋jggzn冖y(UUf[)][g_3Ť۬ ;=<ŷT[YDD[cI63&# s̒Fw-M.j53~ƙ=gHWm 3 LDž7)-c|5**v3e]J\j ,K"*3QD1Ff &,#X^ӽ:a/Ȼr8PnŅ†IQoEF,AXr2̾5F`2 7|;E|^r񩮥sʗ$ Zpaea%rJ(~;M4NR6u IBF$`_a+o5~>;sLh4'RE)ΰ\gf_g*J.2YJ%:3.{{-Lyѻ},ҥs_g$ClPsi-3eR:J~G 6,e1@P":5yvюdOݯWΓ"aQ6@tI=>_mn%z+8~.g[:Zk1ƵOEpgܨ#ypfA'xyt{ŸӚ*^x z)NtjK7Q-[6A Ƭ2;'tJEvGJƣĤhиF;XőZ/S w0q>>jTc'_蚪+HgEt%e4R,]-QW}6RB);}i|GP魰 lʑmg.bG2%9y+l!]z?pIpRPёX_ԣd7iTg]qxhEG*Ť`ڬV#/ -mBCLtih>/0(]BM*#Fan:On ճ̕On ,[\(xۧVV5+ol1svX;OG&{KҲ98L{ BC]uŝӶT56npp{B:2 m $RWnq}fۛ;Σɝ$/Ja6.3!7|Be6fveA|jT4?‡SʀaY9qAE~?M3q ,9 (%eZ<_I Hކ6ޏlFmn&ADÅ>l2w=䰁.g/~l,(.3K^EDSm NÃ[9hԄM&g70,DB}6a(?-gjl9\ejφ7m-gGV*I*qR{CWWL"pJ=q63H= ̦MGOn]v1̠ˋ;T:CFUZWi1 A .e;ː+gzFi+M?gpxț`0 * tz4}D/0!F 5t"Vi 1v'{Jbz:Ex4@ dma\\vSpW0ڜAQUpHc-拔زFΝx1E)|Eud#o)4™%GI f܅ca3ǺjQ#FR;Jj2љrĶaǵP M(ׇ r/rdav?$h znh= 'H?G/Y$KinId!r&'lC.w-G+-tsdw?x2ݼyeu6ww>NI?ĺ-# ̪PP V-T! 3q6,gxҽ6jOPX-\gAYisu Zܩ[ri k8dxJ6IyH -/aY^78;HE'GVC(8i,bW[h-:Ɋ:n)X^S֍?]N7M+@fժR{3%60Gyb$<&YDžHcQ@@Q#qEP>!L7qqAUKXy`FQVf?'YKXU:,q(EQbP6vŮaVZӗ~.jLOHEc5Mx9X.O5 ?WKK%djltw ullSX0+RO_=< )j }OmIc$}Eiq4\ +yْ/E_c3C{Bp$ o1дrz/kkh\Q5IZ2H(\n\Ks;i$s*غbcۣva]/A"C1 ms5 qLBAwLci W 1ޓ $RPv>s&.uӂqɶJ){ԉ`lY?yҥzcR1&o])̫ȶ<P}&jkӶqC PQ (> +|?G8,ڔ1Uϧk O~>}(`*(VZlwԡɚWj=;Hxa*+,}oK8ۚFc.mc/ufD:'b+qi]EMdJ qZqwy~> qss;]}'́WL< xWiH،->0q^vpDïB6rJZDŽPq \[o]*;$׊(Ð~Ϸ--6dތ :Z9Pe |I(˛"4G=L̛2[$[خË;;f4RJ_.xy6'6S%83zXgoSď#(kNQy= H(vE/U Zk|m[B{|-5;h+g5wqiq*-lY[~S|PM#QG bcAvP -l2TYOV# 6F&P~Dg!_)ڼn\d1Q1}5affc&\QwS8Pn]=6m$z 3*ccȜud@iNH-7* =Φd=0U#$y`Wb5dWC̸J{dzFĂ] Z#Zfҷř֓ fA ~#bP-It&\JZl^!md#2.!Kg-IGU2֜9 >]L"ż!#'_iyBT$`ˢi{u!$kVi߳vD s,|qXByG M.jS{w -"XB[Zcr.4E.ԯ /tuwy%"d*(qf Jůt[\OERmHI p׺b6Ѥo9-Kw2!.x;'rjд7h g8΋9OUjSؒ=-b(p'7rrNIfms¸3+fݹd^wVfER;%iYWR{RG-9 r0DVoMwq#\|/hN`ȤuƫH3ŢjLDmcM˖Qy5daPqWGq S^/;zN?[ sLR ~"M,ܱ:}\h`5 ]ˈQ!e+F7T!j'eئ@=/aF9!_؇NKf5zM\Eee(v5'ySHc%9=-.\J;7#".NIݦ]iÚeAjy\8xBFJ6vHĚ\I(Ud?!ґ%?r%b(=6W\RbPxL'rkU O+bV 5<V&ڦw(-"V "51.lgYJ[--:]\\޵kk~Y5"W#6^>,L$`(%zwQwQ-պT,1<_SBUGwWOl*TIp{ ?aX1\Tofɳ~D,i$*8st|j(_ 037f8׶탨4\#A$Ԅ\ݛV~S((!F`9sfļo%ߛW=>Z.m&IIc`G˳$S{av;vO-w]#2%<o!q:fq g,BWCӑmmöw%KNa,\먩i(˕e _1;y|2_J4؋w6xhU1ԉ~.חK QӋHQ Qo$٫syӡa~%xB>llsE$֛Hh\yrt\*"hՇ:1 ꤞT$ybXln}M#s"9Pe#Xb(|ᓅRp;"WoOl^BD可4QKHUK.ǘ׻L\jwM՘UWgY>˖c!GJ/zQy,'qmw<g*x [jZ~I #3GȍT2F.ƵH+pW7xQ9Ff+mjgyn% ,lhqEL+F_Şm.D "QcV3IJ\DYFUN#lr&jfJTnU 3p?3I\5ݻBs/-I%@{]U[W( LPۖ>2<i8_x.wcHF &c䨖8O}ݹq1-HB#v|7:e2iEWW,2MT+q6'*[G)șPs.s,m!ʫSÙ.^vQSq_(?UEQRՔ5:f?c7ȏEG;t_ŦQ.dY@Nfqӕx'L~>{CHٱAlMw!H\~.仌Iȍr+ms%b5LSK\":GO625>gԉ?ߕ%bȩU},Krr'+Xٺ[gQK,H2Ps!aM<4抽+7a J\UrFǹibK)*$k*\|8^e5Tpu}41A,<ė]" 2B{֘{{SDJ F-ZgYcag9Lk`L)S>nCмh~sU_;20;4J (ٝ1.Ka6ݺzG:0aUauH>-ӴЀe4;Jb[2\Lҥs,vt~mEkȻ3.$M%Hj7xeuNѣSBG٢GDp,*oQASk.&Bv[-@˨b[~cH38h'L37X(!|cE2{(v(Ņᥑƀ8Ml4ĴlsL0U0Aςnh]=tsi1݅C^u᧙~/ ϩI$}C'Oey;E7(k0<}n[7j5)` 7)65:a,9]* |/ ulKCkO߲6Y.B'OGir F+ ^ڹs%дoNVwY)S(K]3gTJA{ش<䷭IAy4Ē < /UԞq|uZ 99q1|Z80VXՁq-啴p6])aZ=H[kduW;}_R24Nay1*L4%Tď< lc^gX>%o7ZLJ3E,d2Ҳ(EA0֟ZUQL'Lvt)r{9Oe1m5JN2+Ѫ{KRƲš1:2]Y1߶s` }J(4`=M_gĐj433+xw'HiI&^bdᓮ[6a$Mv:56"v[[(^VE,@kQ@Uqz|G=ά~]nܽ/1E)ִ0E,yrJq O+ie`#m|ebMkUTn̍|lF7d"ERqocn=̫ V+C9nj Ee_Sc=TFI6Fl˕ۇhZ)5Cⶏ=O_Z*t8`.69w`w7ya207'P5'^&W mQ$R.*;x,RQ9|'ݛ=O-yZ+}u1Fqe2ey~<*=uno ?`X^-\:2߀E+Cq+P>HTTZln#mR/C/GbrM'z!Vi }Ớ>lqq#(Xbŋ]_OW.HX`LضV$vs0J"*ᵻfst$T䒴=,ToD"匓H;?gT[āc*j):ۏx#R$6Yus2a + *zEFfa^}"L+{9\GPy1|$cPUZ+N-}gtx1 ?F?\Ng-k^׍FಸF;&v$9\ :2a]bq%.TWNѱkdo>1Ǩj2T!?HWf5]He|_i+lCb8cPQ)4\e,#ª:&#1 ұ%5Q"+#+]Im)䭼 6_bY1oکg1$o4b+P(~>Sv;OǎX3's:ծ*NL%n/ypx[*vwz"+U"cS˄mr}A@VO(NґݦObzwecn4ە]7QlZi1$acVU (ta l3K4v{LaTPR.H*?fRyxM[e2s !VK52Y4H2E|}2/eRH5ķBQQMbZ|-8(X#18ʠđ\GWiw ٢ +F]Mvʦ%9IUw9Vʵfwm* #r.8&꿾w obOY iI{\-6j*.1wi $d)(pKR9teL\HExmXfVYŔcPԘVEd>Cé!q&" (JB HK)e O+Pʐ+xg.% nVh٪Gue,t%xhƵOKܳrs:ӯ|}CPv8o˶XTlQV* 7:i">&Y}.0nUdH-{l7`L?16p3%¤TsUOF_ `? lV% Efa2W9NivGrz(-3ͳakB^\ qQWf˱-ĕKKdRjyhv86|-Ăuy-Az.?Jf9]~rɂ-tSd(%?T5!L$e}]H]l$(.oF#H>Ow[ P)#ah(Tr̫il?KFqChﯢ rJqI{1hVO;\ 27Ț/DPGQ묏>*uwxS0H#1^=;]Ǻ>KmDw A$h ! 9; ѕβn5dύ43f1GP=\i6 ~Z,Iqqq#B<II)w0Jұ,xկiLP9|-3:BLAQ$rqv| ?RtLߵcpk E${Ys֏l\j[v:ٗ vJlϱ\3BOfUemi'8kOr <&lR6̃ G_Aq&Gߑ~oP?j(U_3.e.7UBU0OwP M|cX|>|JOOvņ+DPW"le!pO#бVJ[8jEo կ[;%Kyq$E2APһLU_6 DYzk5;hh÷İ^E#$,jKnȾ0x [)}^7[V-$qQV& Rܦq(I[qsau k` 5JqƂJG7"MTƝn-z I#%Uh*<$.m-R5C*%z1c (HM6L 3@ᖣ4ӦZDNdj6NW MMVK%LEkYEs+5NdpHAn7i9fqI/nEPqFdAV >t;Mb(T [qN\HY2=lGD#5ʪ?MkFVW4+mN#Q=1IW4eLGuk"9PYOH>>y #Z!icTV8>ǣ*Gǵ@D aE9"C+s1o[BbB"(E(]܅PݬpvNUYovw:ZH٧j<"y]Mq=4M$&9#`}jkfKv.'8S%m4yX^Guk"o2E5OHCqnK2 o}6l>jS7f 鍾y-u s 2Ҵ/b4x(eHʑ452!\}<~h3Tos[Bg^.u{X2Bϋ3b0 P֊6%CA +Px4\F$b+[f!#)Z5Ae㚪\l™ǭ]#'̇",>ʷ𛸐#퓋ˏ -5[f,l+ގ\=\ p~}}wuҗfys/el.s"E );B 4藈 Iحʈ㊻9T0aCQ,jx_?(AS];k+Wiص?64:m?l4voCKX k#z2U(<6w:|۫#$F! L*]T4#^G!HiHܜpUA_i Iܲy2SA;J{K ֬^m7KaqS-E P!H?e;E+VKYߑ7sH44.eόM2I8V ҎT,gcJ;W~# e ~^QXOo%8EeJO.T' pɢYI$`戃&yLHyvNu}.<-s0X@j~~E C1zVBpa0cNRGhVԿ85ؽ^QOAbA w3QN-4 BvS1͔ezbxQLUחv1̦+|~Sn2\ĦM^$Vvg K(:_kS!74JyoY2jWǑl™G0"S%#0I#-m 0m?1d6ClT˷;Rs3\Hjnn-n5"܈摼5-ښ 1Fs4^5Tx N^e(UqG98C oS-+ӽ0]w)>O{F[dF;q&@Wi eOE`pzufQ9 ^cYլCjAlN`V{vpה:bK&"qXj"I[w~J[RLE!Ց+"̈́>v^)8_57Z?UH, S_Ť±ʛe+~.j"TEbdV߄rmIB.*c- ?Y^$a_|d ,ϞUjcUf&%hXH( r8|૆sd`|t}ip DV̿; ~!*NVߎ1_[$zJ)C\R-5TQ@ (KtHWW!:؜K%EL` CVcO%8qA~|G4˒`GdO3:~ ;A% 4&'+-WPJihi?gA <Uсŋ Mxĥm,-ʆ{Ý`nlӐL}%~^\s# >#\D/5$EH`r6W&_"]UFY4o_];m-"BT5WEV ($ 76m_0_3OMyraK͉Re,Dq/ztt&4F.E];~Eqc:x(|l NIf^Ï9qfeV|; HKv|n./[4.dsQ* o 2z3*tsC 0?'Эe[SD)lWzyyƛ_k+R)ދ|[^f".F⍳7xx2HJHBY?IN^^ROZI$ry]jGoH}\Iv^@D68Ŧ(f w*;Ilf'_'Hc-r7gUkx;ŎfixbطӠ8뿢1 a#B7ZfU!|F75!yYxFr)Q1\jAqFº0QujNnwofGov&$pܲyv RE}XRzm*Kay)TMep" Mldy{XOvg+O; ASFԏ{w#Mؖ :OspGNi7 1%NN"C$0Ho$'q.ԈPu,,pD#DP [IKͳ дKͯG0}'09 JYEI΢, ݉vF>au["f+>6cmQIe+T_v9\LQBy3+j|U:U״T= Ww?'QEYMJ(6}6)LI=ëNT{ly.se5U!q'>~9Ryy)֬ƽ^5p5]f.Pow{44 1ywB!>D|5s|B*]^;/_K1Qk~iM&Mi'ovQ#I #5xCMuSKBǓ3"C' li c-yh%J[#J V~ykähԤO2Ak3Y]}; >!H8-m[HS$Cs8YvQzqX5(TlY}+A[)[H w?U>Y pʣ/īkXaD<NgMII*>v,$FHʹ]v\5֡;H"wcD6㉁'s.<.~.磀`}TGal3V="7OƫUE094Qm;u!+ -ә&iSI_$s+Nʽk Wl@) ]YGAo}W2rZloڬ a,ĨJzɄgU$CU#?$]Ga%.Yx36fsr9s䞳"A@IALO|Ypp: {kWVҵ)yqzbLf/~ R( ݔO)q]3$О|ߧPp~Y2ZE%AȫyZҢFT r#:Mghr\|v%4&ɽ!{/5㇔f&=Ņ{)ӵ!E$,*(l[!U\ҹ=:64n l;I?@M6xQw L$SA*K[ؠ Vwa!9Hʧ'u9@2ۿ _E܅A4(%'P7Dst=mK+(;䓥[yk%HV]F=MLFEhz{K3Y;n/de(CH#QbIǻڽt6""7I'U{kZe-G y^0N>K\ǾF=eO/Y.ʇHŏ08[(hGCqb%/ iBjW~ UI/W.<ܠٮMM+jW}!u<631fƝt*$ʒ| ɿFlNC2[7!ߋsEbts?T+i@Y*"f;i'z\5}LP8αmqvXB$8yJ jۋ_U_ya>NbtPeeu_ ,. 2zU$-"{%{hYʧS qg3:ud 9V(;/{ sk*2:A K ?^&ӴGt1q]aeL]1/~~"Gbόtڭ*KWp?[̟ijƊk҇ 9w+Fu/ѭ[`ՇKzx{˵!CAilM㭻8ٕ(]uN^v[[>H"LڛD*{Dt݅kzfT’Y&o!eeDEIV_]qcqO7KTseŝ6 ;XBJ̑G ˧K/G.q| "ӊBFsięmPPL\h0r9?h Ӌxe"?V͙-Ne`XT}Gs8'c wHA/ZZ#5yh7l s/v̷R6s#CBMp!)nl .?z[\f{ROQ${{.8\>1j& -K{E{;2Yaaq]حm}M\K\ZT@YA=IZDiU%O5Hm?ō~rb/lr8@|ص,`fo9\Y.=ǑWt\U""d9i5[DPx4(O22}G_|i%ݣK׉yTBeC6W fZeO[G^Wd?A~ -uc[?`6e|pFoB]3{?M_Eb[' ۏвy61,@ M`T5C)|[!V\ rJ6:}/3+*8ڬ*4q$>nb;ո@8#  iWƭƠH]H+<}[@G5ȁVlj!^3+QMضv]24€dkӰ?dMd%g>RJoyb[JS Plp 8]|+EQ~> 3VNG)V(j*WE2Q WJ u[f">P,.#)#hibMXM HD},:AI!\x( /(W"HwG6lEީ9n~.L7`[ڎu}ܵ=$[il}1o[R#㐮GGN `_ ^.{߳}N]#9m\oV]嬰(|` _W6#[mCٺW`Ax񷧣s\$s^+isFn.:"{òlAQLѯZL[Nb,ĜC{9"3{\-+ J)Eaf*%ֆcS=B|T]J^zw-̐851|귥$D (;kSo壥M1޽j{O{q HRO_9k4nnB* &1NaWŇU*  sni&h$]s,mmcKi ?x,I>jy(^EJFxɜ D\/ng:3},lm(ljǺ\1k=%ihȬ'/1;HQIƝtRs[@[#ι'iZM. ]duM4͹V}H{Fe.GN)glZ ҲƟqA8w ʇ$.o,in0ȅMpa y1M>Cҍ#1?  vi8A0Ϥf9#+A?L.)mCR[jSe3`܁n’,j8鉮%d (j)5ʵ6-}oXn\rhՄfb^\/i \};K WQԏ^^$JR'>\^[]4qUm21sm'1$Uδ)DzbM0HXA5+> I 89mQV?5#t:@8iSGåN08tTt8,}q-[Ax?>SG l1B8 QT?W