Scott Seago
2008-Jul-15 20:12 UTC
[Ovirt-devel] [PATCH] incorporated tallen's notification UI enhancements.
I've replaced all instances of "alert($foo)" with the jgrowl implementation, and I've increased the default visibility duration to 10 seconds. This can still be customized on a per-message basis if we eventually want to change the behavior based on the context of the message. Signed-off-by: Scott Seago <sseago at redhat.com> --- wui/src/app/views/hardware/move.rhtml | 2 +- wui/src/app/views/hardware/quick_summary.rhtml | 2 +- wui/src/app/views/hardware/show_hosts.rhtml | 2 +- wui/src/app/views/hardware/show_storage.rhtml | 4 +- wui/src/app/views/hardware/show_vms.rhtml | 2 +- wui/src/app/views/host/show.rhtml | 2 +- wui/src/app/views/layouts/redux.rhtml | 12 +- wui/src/app/views/resources/quick_summary.rhtml | 2 +- wui/src/app/views/resources/show_vms.rhtml | 2 +- wui/src/app/views/storage/show.rhtml | 4 +- wui/src/app/views/user/_show.rhtml | 4 +- wui/src/app/views/vm/show.rhtml | 6 +- wui/src/public/images/icon_conf_message.png | Bin 0 -> 49126 bytes wui/src/public/javascripts/jquery.jgrowl.js | 204 +++++++++++++++++++++++ wui/src/public/javascripts/ovirt.js | 8 +- wui/src/public/stylesheets/jquery.jgrowl.css | 125 ++++++++++++++ 16 files changed, 356 insertions(+), 25 deletions(-) create mode 100644 wui/src/public/images/icon_conf_message.png create mode 100644 wui/src/public/javascripts/jquery.jgrowl.js create mode 100644 wui/src/public/stylesheets/jquery.jgrowl.css diff --git a/wui/src/app/views/hardware/move.rhtml b/wui/src/app/views/hardware/move.rhtml index 4126e3b..968e2ca 100644 --- a/wui/src/app/views/hardware/move.rhtml +++ b/wui/src/app/views/hardware/move.rhtml @@ -27,7 +27,7 @@ $("#<%= @resource_type %>_grid").flexReload() jQuery(document).trigger('close.facebox'); if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (get_selected_<%= @resource_type %>().indexOf($('#<%= @resource_type %>_selection_id').html()) != -1){ empty_summary('<%= @resource_type %>_selection', '<%= @resource_type == 'hosts' ? 'Host' : 'Storage Pool' %>') diff --git a/wui/src/app/views/hardware/quick_summary.rhtml b/wui/src/app/views/hardware/quick_summary.rhtml index 85524f4..897cecb 100644 --- a/wui/src/app/views/hardware/quick_summary.rhtml +++ b/wui/src/app/views/hardware/quick_summary.rhtml @@ -31,7 +31,7 @@ :action => "quick_summary" %>', <%= @pool.id %>) if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/app/views/hardware/show_hosts.rhtml b/wui/src/app/views/hardware/show_hosts.rhtml index 167c601..f2962cb 100644 --- a/wui/src/app/views/hardware/show_hosts.rhtml +++ b/wui/src/app/views/hardware/show_hosts.rhtml @@ -31,7 +31,7 @@ function(data,status){ $("#hosts_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (hosts.indexOf($('#hosts_selection_id').html()) != -1){ empty_summary('hosts_selection', 'Host') diff --git a/wui/src/app/views/hardware/show_storage.rhtml b/wui/src/app/views/hardware/show_storage.rhtml index dc1460a..3446280 100644 --- a/wui/src/app/views/hardware/show_storage.rhtml +++ b/wui/src/app/views/hardware/show_storage.rhtml @@ -22,7 +22,7 @@ function(data,status){ $("#storage_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (storage.indexOf($('#storage_selection_id').html()) != -1){ empty_summary('storage_selection', 'Storage Pool') @@ -39,7 +39,7 @@ function(data,status){ $("#storage_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (storage.indexOf($('#storage_selection_id').html()) != -1){ empty_summary('storage_selection', 'Storage Pool') diff --git a/wui/src/app/views/hardware/show_vms.rhtml b/wui/src/app/views/hardware/show_vms.rhtml index 26e2488..4555718 100644 --- a/wui/src/app/views/hardware/show_vms.rhtml +++ b/wui/src/app/views/hardware/show_vms.rhtml @@ -18,7 +18,7 @@ function(data,status){ $("#vmpools_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (vm_pools.indexOf($('#vmpool_selection_id').html()) != -1){ empty_summary('vmpool_selection', 'Virtual Machine Pool') diff --git a/wui/src/app/views/host/show.rhtml b/wui/src/app/views/host/show.rhtml index e1bafac..b5582f6 100644 --- a/wui/src/app/views/host/show.rhtml +++ b/wui/src/app/views/host/show.rhtml @@ -31,7 +31,7 @@ <%= @host.id %>) $("#hosts_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/app/views/layouts/redux.rhtml b/wui/src/app/views/layouts/redux.rhtml index f0bc049..46ff9da 100644 --- a/wui/src/app/views/layouts/redux.rhtml +++ b/wui/src/app/views/layouts/redux.rhtml @@ -15,6 +15,7 @@ <%= stylesheet_link_tag '/javascripts/jquery-treeview/ovirt.treeview.css' %> <%= stylesheet_link_tag 'flexigrid/flexigrid.css' %> <%= stylesheet_link_tag 'facebox' %> + <%= stylesheet_link_tag 'jquery.jgrowl.css' %> <!--%= stylesheet_link_tag 'jquery.ui-1.5b4/themes/flora/flora.tabs.css' %--> <%= javascript_include_tag "jquery-1.2.6.min.js" -%> <%= javascript_include_tag "jquery-treeview/jquery.treeview.js" -%> @@ -30,6 +31,7 @@ <%= javascript_include_tag "jquery.cookie.js" -%> <%= javascript_include_tag "jquery.livequery.pack.js" -%> <%= javascript_include_tag "jquery.form.js" -%> + <%= javascript_include_tag "jquery.jgrowl.js" -%> <!-- ovirt-specific functions defined here --> <%= javascript_include_tag "ovirt.js" -%> @@ -66,7 +68,7 @@ $('#side-toolbar').html($(data).find('div.toolbar')); $('#tabs-and-content-container').html($(data).not('div#side-toolbar')); }, - error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);} + error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);} }); return false;})},function(){}); $('.tab_nav a').livequery(function(){ @@ -83,7 +85,7 @@ var my_parent = $(this).parent(); $('#content-area').html($(data).find('div').filter('[id=content-area]')); }, - error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);} + error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);} }); return false;})},function(){}); $('.dialog_tab_nav a').livequery(function(){ @@ -100,7 +102,7 @@ var my_parent = $(this).parent(); $('#dialog-content-area').html($(data)); }, - error: function(xhr) {alert(xhr.status + ' ' + xhr.statusText);} + error: function(xhr) {$.jGrowl(xhr.status + ' ' + xhr.statusText);} }); return false;})},function(){}); }); @@ -114,7 +116,7 @@ // need to redirect to the parent using the new ajax reload stuff $("#vmpools_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -127,7 +129,7 @@ function(data,status){ // need to redirect to the parent using the new ajax reload stuff if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/app/views/resources/quick_summary.rhtml b/wui/src/app/views/resources/quick_summary.rhtml index 972c439..77b1708 100644 --- a/wui/src/app/views/resources/quick_summary.rhtml +++ b/wui/src/app/views/resources/quick_summary.rhtml @@ -32,7 +32,7 @@ :action => "quick_summary" %>', <%= @vm_resource_pool.id %>) if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/app/views/resources/show_vms.rhtml b/wui/src/app/views/resources/show_vms.rhtml index b1accd3..359bd8f 100644 --- a/wui/src/app/views/resources/show_vms.rhtml +++ b/wui/src/app/views/resources/show_vms.rhtml @@ -33,7 +33,7 @@ function(data,status){ $("#vms_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } if (vms.indexOf($('#vms_selection_id').html()) != -1){ empty_summary('vms_selection', 'Virtual Machine') diff --git a/wui/src/app/views/storage/show.rhtml b/wui/src/app/views/storage/show.rhtml index 8da0f8c..6263021 100644 --- a/wui/src/app/views/storage/show.rhtml +++ b/wui/src/app/views/storage/show.rhtml @@ -84,7 +84,7 @@ <%= @storage_pool.id %>) $("#storage_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -95,7 +95,7 @@ function(data,status){ $("#storage_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } empty_summary('storage_selection', 'Storage Pool') }, 'json'); diff --git a/wui/src/app/views/user/_show.rhtml b/wui/src/app/views/user/_show.rhtml index dd391dd..351d0c7 100644 --- a/wui/src/app/views/user/_show.rhtml +++ b/wui/src/app/views/user/_show.rhtml @@ -19,7 +19,7 @@ function(data,status){ $("#users_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -33,7 +33,7 @@ function(data,status){ $("#users_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/app/views/vm/show.rhtml b/wui/src/app/views/vm/show.rhtml index fe671ef..293b632 100644 --- a/wui/src/app/views/vm/show.rhtml +++ b/wui/src/app/views/vm/show.rhtml @@ -49,7 +49,7 @@ <%= @vm.id %>) $("#vms_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -62,7 +62,7 @@ function(data,status){ $("#vms_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } empty_summary('vms_selection', 'Virtual Machine') }, 'json'); @@ -79,7 +79,7 @@ <%= @vm.id %>) $("#vms_grid").flexReload() if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } diff --git a/wui/src/public/images/icon_conf_message.png b/wui/src/public/images/icon_conf_message.png new file mode 100644 index 0000000000000000000000000000000000000000..1153a76fedee496949647a72b4fc345231dd884e GIT binary patch literal 49126 zcmdSA1#DbD+vc4#ZNtpmG~6&VGcz+YGbar*Gc^r2%*;#^W at er+!)*G0cK2D3UhVhl zlU8fZvF~%n<GE~)t<m|ND_mYy3?2pt1`G at gUP4@0 at uMX8dq92t$hqh%e}5F8odhM6 zp+1r~lyTU{IkdgFh7%YVEXv;ld}iJE_2VL*vxvI0lAWoun}MSVn1HdJp~*K<3r7<- zJ4Y+0Z$e5;X$ztdU|`^;_KvD*?pfyxJqrEwa9`v at tI2RBs?{Axk4Fw|h9=~}c6E>Z zzj5^iQ!%ZK`K2#UoDU`79p1d`Qmys99j$mY<kwd=s-Dy=63?lYtv7Wv%Ae|5QHW7g zBsHdDNUlr4e`xu4y3}(jps~ZPm=)SF@{|$2?LBt!;pa9nG~MqP4u9QE3?`TOaW8cC z2Ij!EEAm1(fTpus98Kd{t}8;5Ih$zaE4|>+=6Pj;U|_QOX==6PwZt!0?LOPzcwg=n z*H2+=ll!L5gbz})U}!Rv=PUW->qLYdeDTH$y{5o2)8;7Mg;JU)w+XV2_oAH7BcKVG zVb_S- at Am$i^pEbDEkI4HBg*wLUBj03XWqr<WRc*+3nKF`M~L=$@w8I+KA;%r>Kdiw zvg>(Su*1jB2WoZE^ZB>O)88%|WL3Ek8v}gH513{zuVFVrJK+EB@<+54OK3E~z4rro zTkPXZ+{Q{!^m$|S{UiSTKh^tBoKO}p<$-~*LD*O+D}BtO&$`=cV=bMW+w5HU%{*}a z#$LC5fyZsV*!4zAFE+(w+16Mqd9VLi3PU73S`MFl)phOO{n)RI3Bv!gK-_l=A9nb% z!8j<C&%R8L6Z&9rp>(TkO;um}>Q)!d=C>}-7BXBQxfB^6_m9pRZCSM23>r*}JF>SH zvN{Y#P6K7_Pt)q&0+9;?*A47ftIYzpN3e~X9)1P+zh~Zgb!4u(626~V$5z@#!y8#Y z4r=AwNk_vzx|(K9BE%pN9U|{(^T(LHLbaF;=GqTFSx<2g7{#xODPOZHFQv1ZoddvC zYki<t5WfZVZItt at 6()x0jN$^7W`NT at _fnFsG49}PI?p^<(-P~fZzl*89EOmgKK#YJ zR<Y^_VadEWwV8Oe*XoYd(GA?an(1|b8W-2qp#DKa&LIR+9d>ge!@B++;}qC*&>WGG zHTJ6gEsie;Y7;<o7ezIkUXH?a8k43m)_cY<WIfsZS(_K<;@ibanyKL~qjeGXQktf< zH(y9}dO-B1 at e;eMfirb#&n|;I_gA^Zo>}8dX0yKcD*MzcYxX at 05SDzIhrPew2;>$l z!dA=`c+x3EH`JdmlH|FRfzV%2GhAt4W#}L?B8p7%O3gExmNq1i7EW=XLf=@&uxphzZnY3BGM{(Tx1IQN9r#1ROu<^4P2jdx$=O-cSFIY<H3Qm~d`}-qUn<n<H;WAFM;KN@ zcT)>&d4 at aGRl8{PAz}25XdyGrpsj%=e6Wp4r()(z(|wXwu`5jxN0S*ZDZg$J@@`_B zi7N#ZW#I;>lg_+G`4 at T>JS#;?g?wz_is-d6fmE{h5%xIXY}o-_cP%@6)Of|knpy0T zm_z30t~6ys^H_o`A at b+4?e&PIW@}h}J}Eiz=nu<Qa78$QBS!QdaAX}~IYAc0LB|kS zO{eIb(do3!7b*4DWPyXmQ)zHGi2_E9=Hpn*nRppC`e{<tK%2)GXn`FtpE2-JvuXJv z6keB9aN#E>aLZO~u<0e)pXQEYlf$M^%Wy=gM0<=u+N at hbHG`twOK>=q-2vaRA{=g@ z=1%40YvruBQlkq}N@@e at HSr|9vRK?z^Qf7<Y2l03M<EZC5DpM1);NOoePR3H{q_|{ z2ZIcjZ?ThRzbJI3i#)lGAXu^8 at T;SJ6R?69#_u}}bclzJpVy=ojdWQ|4V-4f%U_(r ztZF!77WS5#eAdXvZf6dO?Qr#`=oAzvzt84er|Z@;b6169Y8s at k8-y|c{=<@S?v?rz zY&*B6NQhu>1t6MKw*zm>cOdh6DcMNo`zNYZy7=Y|rLNaFe2s%|nzBHOK$F&iHq!}X zqy+LntgjjdT?76UMi1=$K>Vjm-fz34I{=Zh;?7CMZ!Gwno3scz<~&xcfq>e#wfotO z17ORzZZ9Sm1z5IxGyYGwWZKm`HU0cX^I_SZifzoHiG2gp*x76*2d6&O&do-VsdOqY zUlPJW2m=v$5<n)G?6-1gk=s7U-|D&7F;bFEWBCuTA`W0%%d?c;7UU9ix%YP?a&0+$ zPbKDhTL)Wh-8A5t^w`=@C8%_|5AypVy-y;UJ?;8eqze_tWBmCkxJ3QtGVkB at D#w?o zd71Nx1V_SL2#n9kng*FEM#3wMPOB at JtWV)qIr~!X3||=$(5$D2u+PZD9C>4iGp28& zHzO%5XusWXuzHe6u*H8Hg1uNNC at Ap%G#pS~A?-Kz?U^3W&wcR1>353ESF^|-2|)Je zVh^<rXY7oqZw(RQb>&bc+2H2UkgEE>`VF0EDl_qBIUyT>MWtr!i<I4P+%$=<7DS(9 z>!aw8%7Sh at _f$LcUxf^{{TG|Z at j4$@#D8Wpc!o<WKnHgI+Lq#BfTRn=(s1feE%$KJ z1e4?NkHRX-Pybyh;@PE=c>wKDfdyy`vnLG=e5zhOY;`9%DTv5c at 8XYPaVW+<JsZcD zb9Pl)Tpj@&;se~J259+|5sgyz4Qp;jIQo1J3>T2m<;$w&{!kfpZtLS)rIa*SB*1p` zd(3L<E{D4@|GLq4L~|l4uewAEXG0zA9cB2_m(M&u&{LZ^zLvnVMCQeh7b>Mc#oL^g zfSHBcNAxSS2rHFNd*6ToSq&+`b1ZX%MSjwuoRWR;4!*%&9F}BO#x`5-X39CXPqBac z3Ogo=GYKUoXx0A`1pu>cHaT?R5Jo6l>*-BKv5MfnLZnN;k|kaDQ>(KWo-PQYeSBCt zVm1L)!0}7sY3<jcHN{&<<k6CfKm$kqlE4QqpVyGdq`lMI=!9%uOg2YChRY-htVLBf zywjV?%1Kxo(hO&Jx<kfa$6CBEUoE_OgFIFtimLj+4<X)h at 0MU3Z@OW_r5x~Lkg9}> z8F=G_ifv?JIx8sdf<nia!u(=1Aw10U?w at L9a#71Sm3<s$Os_<$j?N;nV)M1d`6-ZC z1s9KAQE4L<Ki?#U3YZ6&l_D3d&kfR!%x8(wVg*yPcRLGjp{&nw!PDcfgC(Xo7tuUZ zLmG9Oz>T6=9$6n`R?>kLT$T#DkVSMUL8-TW;)o&_VL)`;8c6M_G5#VmNH8k6@`Q!y zpaB6C`RqXV{nBwOa|pYwjH_yBVZnm(M#IDwDxdJgI2g(cuDSTG$36G5?;TzgK+KeS z9y&h?Xv2_~GX;?7HS$McN$0Wx1BTjO-Ba<&$yLXJTJV*r at S?waOX63nC&gI^ixA;G zf at N7VVi06Z1{DyC(>JBQ5lH;mUCJgDfzi?YB13}kwRl2@@wN9g=pg9@`Z4%SVcj_9 zlK}^kPi{0;gu!!&Gjm()kc~oRTss)cBnAS)iF(_XghPA154TNP97cMi92AjtL1v#Y z5(z#pgLbzK9;T at ODWv^m9D-=s0VCF_!=GCidJ~=1c^MnE;xyBA6NTPiLu|cEYrmCF z<VTe&0TWWbwrFECtw-;tzi`?Z$d$jT7#k;-+Rxd!ARD|*C7ovFLyXy- at JwMKhSoo7 zi<A-6?C=Nqt|H?`$lH&4)}n%){e-(C$60`714)?w=0l?Fguu*|t2UX`rnU{JZlt?e zl2B^HfXUW`R%;uM+qAV5B!Br0i<oH1j at Sc<CopuBq%JZwT$fP;rtd=Y6mUEj#d#Bb zISVF4R}3W^`#npaqD3rbhj2N}!p6Sy%dbz2R-GM}4XjHUC(o4)7{f8!k1PX&hc+o1 zpN$({r{TZUE_kC-6`7!~R)6be6|#Dc!6?zk^T|-JDfy{Nhx at tlT8=nqm$O*cn^r4| z=ir=r9g}$HZ7<B7z?n`k(^EF`I%3f4mMPHfqO3ke4Cc|@b3XF`@l#ofYMFPh6hV+e zW`R-`rlNMOqo`L;DuRWfgMa=&{d^SU^rwpXsYyACF=}s~FDGl5E{9HNyu0s_c(uky zLJ+ttrm3d`-JpO#P{hw(UK_-=-!f0b`ORXUR4CF84At}29xPf^!Oh#M<w##<5*R6r zTkr|8?H^+(#3jCZ$A^?3_y83KclemWQh$$3xYM`%Dt=PFW(E}u?_&hVz`SJCvzK)v zgvi4HUj^ijha|R2$RI_Ol!xuiRk5e>IPsD6J}>z2R`!$CHrFsu6+B**ub!^0x$fgP zgO3=BgSRkQL at M$#vj2ws+D?9)Rd8UR?u`9S$Mm>W8n><Ov!>frp3+x{l%~l9C23O~ z59*;G{cNv><@}`ySxyNVN|lnVWhf+G2GP3wKChSHXs7__#hDwl%3h*`Ni)H?W}jU* zd9ADF2;c at 4*t>Zsx-Zz~!}H_k6k4zT2no<c0kxFz)nS$X2JSf1g>H;WEmV9k$Yp;Y z3S2M2MYLvJZq8T579vJhF?lb`(a|YwElbi?WbZy{%m!@uaY{2P=e0=u!h(W$or9bM zKuN9;D=}9_qAC14wl^nCK#)268jB(BQ`q+l65^_?J#8|MrUdQu&S4UJ8Qr78ZmHwQ zXD3<5EGKf;hH}XQ5n-GsRRW%MD$OVSOK2{KSCV~q4u|=)X3OOIQSmZ4*#f$A5yZzO zZ9F~+4qaJIc(Mvn(hA0z6O`|XNQgwqM~@PtSB^85j20|Z7U=N{sI(P2onm*ySD9y7 z+}qdF*$#{kQI56N3>u9;G%(`#g=oiEWp?#~6JG?Hsm>VBTu!DP9k0`~UL|Ek_Ue%l zfYnvihwP;g*A!y-abg_%#;gX6naYe*M)SI}f_)afe?*4l6k}2o7m_5bG$qQ$_1g$1 zW`cO%^QX9yZe$s+M<r<W6JQO|SK;Q(Eu*3l!gugxzK4&<<*{16k7T_%CfB<cV9v&n z60Mvs)#%BdrQ*J@^eURw at xbV-S!Pre6 at q#8gD0>8gmgd4=&0p>D_L~tl^J~=v5i<O zT4t_MajeurZMoyLs>{-frG at _)lCWGdVn1L<MYQY>N<?{j{nJG&;!b;)Bxk?i&kATK z3f7Nw_+DsV?_!mHuoT0lYw4v*ep$K`ag^ec=mOC$MI~nrOiWQYo8GZ$w$!bvlNpL# zlu^~PTC-H&Wo~FFvIXn9wbXhj>a-{<wW-yYs!*uZb*n1tqAgt7k__ND^3Lywp6i~U zFPgVMO~JIQL_K+OpSeZ<m0 at 7J-c+2D6HwG+d?uIhTU!o&fiwma23qo#Jf?7ZOHP4w zu;|>w0*?jy8&}S<V%2y- at 0U&U^$flOvG#R}j4G43l-W=3az;ptgK{{5QC3D~)`bk> zJjY1FaE$3YVz8f{VJ6x?yZ at EK;{F49E6sX`<$OWqB?CiY);Z%369$oGhU=JB0TGO^ zFwcDatj@}C^PHkpk`xip<!-SMDOO1Laaavwi`aH^QYpCL0#bc69XeI_)7Th43W#!$ z`iJU7{oKjkOyG;wg9~L3Q|0Go?i+}TnNHT2CkS%iOg`r(ts*t6!sz;X+Ee^djfbi1 z=(&WX(h9jjEQzQJM}fquESFQnKr%doiJR?O&H~}wQXa^vnHo^7Z7r?4h%!x7p~zLk z({u5lTtdTWv7g7NhVZ3Z(`rl0`nlvyhSJYte^tg^@lJR at yQBC-LtSeeKna-MgzHOR z<|+U{`|csJ(qi?wJ`;6fHNasYH81yyEy>wcw?{+IX%@0F)A at XNsUh_CG8!Vkuj;95 zuwwexTB||N5VQ5J*dwqH`88yS?3S#R49|)`Mj{s{d)dDWV{fZU<E#=_0XI7S3Nyph zcL+p3zLXwYz@#@T8gI3W&-Xx8u5flnKC^6iHA5OH9J0t9mEkx+n*^ikPk_gdyGc}t z{hq|hljnB+Ch98Ou5<LWvJIxn-cZeYMrfrnYEx-a?E;C1wyH0eX?Ge1IbfDg9OsAX zw2A?I;SGM_KCXPG6AYR(s$y8~lQic|9EOSR%|mO}G{2O#38h+1g)u{ROe<g4N#2zo z7|7pBwp~Qd;^vhw%c2HT8fDS0`>yELA&S4pF;|?lEr|cQgp|7o1;D{_d_t#Fq0Ldy zVSs8G43sQAfN^bm<yieiDw;Y>?_t+)E)k8DKnns-z`_Ofd2)2!gU?|MiK#)0nkUXx zmV)3UZYq^t4q<DW5^_D#|J0l$<8CKgcBxLj`uX=?$b)Dl3?xH#5~OyqfDQ<)V>#2e z1kTqGcaKu+WK65jS$_Sl$5(CKDOhe&JKDdGKApXW)!kIhJ@^KDy_znei>cvtILEkB z#Z<Dl?i}Iaz2P4o5hc;&aQ6U;`D=P~b5$H%2bRYUtlM_ZBI>9BfSzSs2|y)QtKm^0 zQ~hWIx{w;24udm>5F!{$JK=pxL>^U$F00TYRmeYeKEcrp6#b1okKxXh|JEFs`m*4< z6-W<W8j(%qs>{h$rmaxpGyu?J<g#LZiq!TnQ#tcSTx!wuP^-Dw%+4l0Z-?db3#YpH z5z~o?r&G~h_E#wPzoHjkd)J2R%D>WX?C(>Xt}6|XUb?5|N8A4DpzWQ~1N;pyAcWLD z8u%*-O307nZ`g?l_qVOT{rGOh)ftuShR(GK=~}6}p>n2O<J1qpXNSGhOE7!v7a0Uh zN3w1V0yJr~yt?gZ`hq7vk6O_NRn#@8&kM+<cX^_<d2Vo8J!#*MkA~@J2jlKJ%{o`c zPbZLwar*PykhYTFT2K{HiMYtQe_i|I?a->Kw!<Ac+hA&-BV^bA9 at TJ8xyZT<EXg@) z3JE*#4C>kBNhxF0Xr=p;^YY~R+mh>tT>Z5$m7H_>>nq8Q62xXC$+iz<%wV#W`pzbg z?v^s1j)U{SG%5Rv;<M|(^f6us_LT*h5MShoeWd2VhKn0PBsQD`t637c-W94ZN)%77 z%Md*Z6H$}M83*ZtOKCCG!oXEJWG+~mYSi4-8QCj>{~?+EyY&}wfK{7zAn0df<2C{K zyuU-AR`Vk16-4a_;pGcwIpIn*2>#;Mf2A|n&!~`>o;&!W^JnAGGEmDX!71qh%&`vp zr>7M(jR)E)?vHC#s|g!VHWk!ch!uG42jXK`%eW~jZdS61jG*xuk{80buiq!fVOG~$ zzsEkYDy$zTEM^oqoH#a*>Ifjtp2}duuSF%-cb1q&dqsdhg&j$-ZteCy?Kf1LE7uj( zB&#ShSrEIdpe%OCl<a<fjg*^fq=EJ-a at ibivz1)xg*F$5FNlen|2_THa^iEn0Db_o z(D858JYJbCLeJoe<fUGBsZ`@97y}T*+8rYvrhN>{d*QXS1>XR867o93o!o+-mVXEO z=|~!1fTHxZi8QTPl0md_Bg`_I(05yo!3?TR#bZLSr^qP)shDi1qGwLoLLn6{{ZF)% zyFc}!-`LvX2;+F^ZJWS)GK!j3tj;T1?+066B1l{$@~fKGAl+fR{FnwyQDXIOVoqgV z|M(&0ml8||F`sfCX6J|>9(Ij=-6Q^bv0bIvnOt`_JGUgRdYWH$-NgGQYf&-T8M)%w z^6Gw?TU`InCe*&mZ6ll&;_q2l=_|)VG2XVzM1$f1yk`#)z2>##7K<HT(zp9Qw<tTn z at W<elQ|B$md}_FJRfz`U=HiwjB*+u-RJZyD)+l#l?~U%VpPuX{Tpi&e5W|$=-V0^L z?qy^7g8Mvn>=r*ecWB43N+u=!aP$!Ei2{gi-HU$cY>Q<he=AIwtCee4Ep)UdkBgaa zGb_KE<yCC+(dULpYjOin4?8j8g=OO+B>%&6e&*`z214hr8+a+xX@)jcBeAP7Y6UU? z7ESH=MA#yxCeWxS0hY!^XXOp+nonWeOX?o_;_OW`@8NWV>w>LfA{kQKqx+xiVG_a@ z4L?A8FyxRbMq6$e)`1e`WVSq9j0#^<au25ihprLlr)i3X$-Xn`Yo(Y}=SAS$vi17w zh)~IxSVs6@#vA&Hq9bW<2=i);?<GlP1w%TYzv9)1w35WA&NbQ6D0U-jeiSK!xkv<b z0{`0d$ya7RoC$_B<8TFn(}w<MjH=&5q|<(Y-Mk%a4XrhyrH}-^9XNhyi6s(<OwSlG zVktt!RMTpc+!E0nt|wI_8Znd`tuB~SZ+rkHL%ML+*zG6S>rb^jwnwoMHH$viV)?3- z5WB_orihDBTP0pndmBVBG0j}eYKIAcRb}3jcBva;mRkHUTFK(C9yB<F`6QnNH}s%^ z%QSik)CG!N`JNFku$#MzxFSz5ND-?U7fMy{Yy~+E1a+!<c`=jILD5J7Gzn*grYhdk zzGj=dzQtA-oSs`wMu;bO;or^8n1wpSbSYv7C+wMlYh0A$b{*QGehE#qxinUtN65Lo z^URw9k-p#cDBhIxP%nP33HRRtQK|y^Gxk{Kz~ebRe8BanwiFTJ!rW+f7I7+S`{pOu zfmSov8xgNJXDM{KZhA;<qBXYZZu9fbG{G*QbWfY-A8j7(Z5FSVTTGx0I(}G9Z$#YD z4uZiX8$-RdO;$1*exA}<bz5m1q^To75d+?HPTADYTU9zeh at 3u-vkj37AnbXv2MtiD zGvz2jHAyeXi*Q#gQfi$XVTggC($Schw~>m7W5=pI`Fy^y@~6jLiQQoA#>in$g9qzd z*_DeX%}H={Py>3|^FpwnXW1foxS9MU?21pXV`DFRt%(LbFtGJu2{L=}e&1>Pq2FBr zenXMuHo_G|*PA=~LvN^=CD_4lxcQya>M#N2g5!4!XO;@an_p)6hH8?M=4Md=2U*1w zzEai%dA8&5$@AL9U>D0uEQxAPenob|z+la#<+Gn=+3x*xe%(f|Prt at f!ClAws2sP- z17^8rB`B}Q6 at PFsB=T?&A335#r!1zT%Cp$OyYPM|SGoY`F<iGerC6EPw21UpX2?aA zz at _`=EyNI5zGC-C3WU}h(2b~4x<5Z^QRjv<&82^lzq-WtQ13Y4y{!J at h7PMn{rX_E zZEB05J0LsCjPd?eo|nAJ_tTrwnPy^aGPVySnu2LOLarEr){G>7W8muN1?>w2;K#<v zx8MtRhx8y76H*--#!#QnEnyV+cv}@!R-GMp5O)DPqY*MjTJ!n7v4Ts|M^NG5tHvOP zM2Bo$Yem}J5cBC&gakh5i!;#jfbhB=bWs93JV^+R&T2-jDjNQl;A1#xWw`D3)oT=I zWeHbMY>>H>aO`f3-jR)T3?(i!_-dX~hsb%1ShOd5?kKfpy_)qf_v4SG^|0l=CWe4Q z<>X>Pa_3&hReJvNHj*&=sa>qC?J8GC-Ksx`?X*_!j?&k3-IwCnj`IGA)st5Q>lg|p zJ|=N4OW at Gm+X~Q{e~(SprXv{=YSzU1ij%#rSqJ<jR1Ei(+Af#0IBi_C_&ig~br(|K z7pa?R_fy8r^})RhA;2P|&L<}(q)X6)%$vhsH41^#tSMT5=W9^+QGHw5Pt&&Ix6D=G zHdJQyEUx~{g at V-c>SxCbsIrYAYU%>Moi1=_tH$+<8so6&jg5^wy;Xe45czR5z}eOp zFZB|Rmln|2vJLz!(Tm4;0<Uh at B2V|;AyLk*K<k)qOm%Z^sLiLwMRMWTYDcd=0)kU` zIr`)30yYxpGdRSn+VyNA)`O!7B)_|mTPr{3u;8;;ENJJjW_b(HucQ?33E4K~fmxwH zAankKp5(MF*T&LIASIgqcnrdNrq-jAt5&W8N_D?scqvJo>y@{B?n)HOx8C)9d}*;& zo>m<Y%Q_wvOnRu8eb2T+D3JB^0zaPU6qf*Ar_o;=5dpgQT_Bd!{lstf8 at NswtMil1 z(Gp+p=GWI1GRy+_C$7s1_#sa3gd)+FHZ)+>v|}<pgag;-W<*aoAe+CB-3z>PXR4R` zmNCEP)b85>i?W5Z&l-d)KZO^M<=l20fNL$!kQ0(5A)CN;Mu*z*kd$Eae7nQ6P7QME zK<%txnc9IbaT9SU>}<Kc*)&tch`fd?qXp=0-;7DX&I6qBMNgTMMUS-8vjCL%Y0#eP z#VLX;2iq2xEPmy3uN0;1*^c!=F`@h^LRS at 7GxZ7tOq_3AQ8pT1Ji?O-J?_sD`Sd9Q zGHwaAr@^Hf7xTP;F1m&(7CU^84Y3`SH!yb2+$0#>1h$E?4_sXKtKhfke_39f!*)y( zoG<u6i5C2#t$Kxqx75^WAi~^d&%K_onI0g0v&~Xn&*f)WyNh$E1W4WhvL<5F&0kN! zO;gxun~r21>0Z)sF%j#byM8;5O7`wvneOEs at aV2Z6B=z!{>j#a1cnzjguMoK3k1L! z389nUHY85sD<ny-FQlYgV(nn2 at GB7CCtXv!E!;-n>SLFBi0swMc&(UTrU`0h#DrWE zg;WWo5E^Sz#MG(e*NkA5;ZSfRkMX#YoN0_tWfx7u14pPa89}8&Aq$PVaf|oF6^=al zX<vXa8bqcG_zZO^!OKQ5*maGB7GhswBI~Lhuvur}tfgsKI|=&+$GZpZ7_ITz=sEdy zKgSMjU14#{{6p%p;9t7!-rZU8uF-57;qN`z_w=s8AAdq%*@)=J_9smy^#uKdmT5}~ zE=q-v5t*%>Qf8jevc4dJ3NTDWLU^%BVKOd-J8r_8VZ9T(4C_<*1SgNIw8r?g_kH5L zL6f?oTgSS~<u&1LfojEWmVRXq>wH$-q*sgpbL^z)%Nako_4vO24Ryc-{+(G*isKuU z4VkC9#ks<ZD)O6#(<VyN29fhdylp>=_-J at uT5y7o9QLp#yX0g8g-c0Qjr!DKSYpTb zEK#(;=f~y$2+B<ca{Wh0PUf)!U@`98<I_}N!i3HIKR~&`U(0(_))0NwY$7@{qwQ|n zH}}~5Pt-W0%Du%vMt=%FT7DTeh;KNn5=b(@BkT_xm-!El3yB;1>P at k*6o!~7(1*@0 z|5=E^cF-e`5B^@e&?Dl&Jp2c)c-cT+{g6hW8TzPT-{Fk at N`<#R at 4h~8${EcoD+!A2 zHCc)h7d6CW)=XX&Q~1dgV}F&Dt9*SN!a%|Qa|OJ4CH$hiwy~gb14iVu;riXa{w at 3v zl+oRyrZdj>&SJB-@@Y6-oW3DlE?zXfyl<*6ve`h)Ejm^)YNLY%EYk&ba2a6{nUIWJ z5&eKvv9e)#@#guKn*Op>h_xzrC4x4`atUF5lNXcBqLper-{BZ)CnOqjx1=7%^&Oo$ zQ%0zfL;<+K^6E`P{-hc&Ji{SZ=SSwvs=@5YB{`qmLVin5=T05G)+x^g>#x}+FD>WA zEEDTa=^a6IuJT}<dG=h}ueOb+Ro$XC({b59wfg8{GROMH35vPQb`C-+yt`~7e=(`u zzl!rlLH0)c63=3D%i>o at jW`P37p~#m$4^bNO%=PqjMxF|t}9l0oRLk?<vl;GBOSgW zCqzGoUBmOnY$nx5B at 3h?blDj=CHS)@&)#Lul!i&&+26|IgKa+NNF4N-U^>Vb<V6x0 zJ+ULig!4TqO8rn^!Pe1AIxrz?iL(*mgTplf{vtUIx<R^K{vHgUtRCN=6o<R)zp-UD zA3MSl4n8sF8s&>6IHN*4wqI7tNJ_#`_~Q+)jNUfE{YLD&3N?G>CAVBQwr|AB+FO&b z&v2WUO3fRAQY=ej9~;G}E`-qB4M4}Ds9DmEJS7{d2MAQOS)5=4Twv%S<i-kgG{gK+ zX^7#Te{8p#dqJ$Cd52%(q^9>_>U})3!X!!;Px- at O3X|Epl>A`J1c}%x<}rcAP8N2H z5;6|C&zV_iu0i~w$#RyPs1m(z83Va;&z_#p^+g*qU(B~`Df|w0PaV}QqXqz2yAn2I zbIHy=^WNBwYEnMC7P_N1)u6 at T%FSY0Gov-dR{(E-c`0aRJitX*s4)%4 at xq7q48JLA zX|F}SFy}w)*`qiRRM*=kLa`%@3Qjgs4i&Tb6B%g2mfk|@RV{Px&yJAV{maLmfs~G& zEkvku{o-dM)t>(UyCjZpY9Xy+{)l-H(($N%LZYV$y)fr84jcDsQo-sQBF!AHUgNRT z&%4Y&bh0bdok!@|KFGTcNwCmRUwTE4aI*b+MXoZ=QTGjyo;216MAKZAaN9`KoCsR< z(Q3EAW|0G=oRuz^yPcgOq%~*K8;|PnqMlM1D3nU_>eB66JHg_5i(%%|Dc)s?^v_}T z=yT8pxQ7EU^}Y at zpfh88QNUUp8fo{Nz&B$e_jiPKj|JEfn4MJu+X=L^iVMfhl3R$P zd`lA1zn?K|<t#w%`t%|iA%gNlDUH9YQ*m8r^7Eu~BziA at VlbrlS!sqOxVYZcam~t7 zXK1ryY1U=M3Wv!Twe902p7&1UW!^*QTsG(AWKPBw<H<7hr3-K;DUC65^F^a{wm at f& zXUEE7bsM>ay+O at T0+MfG){40#a=--b^WXZg8d8KD<IYT<@e(wNv<O~*n&Z}DXD=~2 z|4BY at HFJMeZy=~?Ov_6YR2^@NfGQB@{Mc_Fz+>>m4fxy1r6_RvPYc|jXV#C7PtqET zt}aTe^OQvzrW#4~M_1AGtW8HB_?9ub%;_c}7k9uhl9p#r6=HrVnj`O1>38BX>EL|d zvPh`Y&?4<aJbZOurHg<@clLsT!ylS=Vd#+GZ&zcM<b!@HEhKI$eWQyylJV}H at I%Qs zLKKd;IFk98ss}@jNUd+>=VRQiGjo-}g2k%6^R$e6O_>=}Bb`UReFZoGp-XVFDF#kb zRb=Mta#LzBbsZ^ReNL8qfH(0gbNAF3<<HrCC~_>xh~fd`??nwgPZ<6%!{tx+y^AaQ zR)0?07Bs&ZA^LJo)@Ya_$IV}hv7rrX-pG`vrKni<{RCTut2pMmpM&$f4rw)1_)?+E z3T3^YD+)E_BHQt(-H7EizWQ-zOSJ!G1o?{lNH>V}E(>EHJ^JCu?CZsbngvZP+U3>l zAGQg?&#E*Ps!u_w+)(+f62<Iv1wQxO$Qjcbj0NEX;4v7ps!RmJu=T1!e0+J-b(eQ& zB~E&C*^>&7Q7?3k!wGqa at YZu_I+d6ZAV>sWFX=eB)xOF{*kS<Oz4^5~{lGxCYTf?4 zbp_f^h*pgtnz+>Hueg0zcjw-1uHWBCu`fk%YBL^M#IPelQ()Q=WNf=Vdp~myltyM> z6Thcwp>h5=vzpl{|HOqQNZEV?$x}#39+01bhbE&y)Rm`UBJ6bJ%<qk?{_xa{k~zFH zIK!W~GgN0=<>cgbkuy1$Jmgp|=-o#*2$S?<goC`4WB-qF-4B6U%!Q*bb3=%P{0!S! z_B1?l+duHWKY5ewW%1!0x;*}irxE0`1O*dzKXmZ&1{97F)ELhAF;R}8XuLjAr9FJT z8E;E9N~RVx-uBb+;1KLiHO^MBen4%|OU}HFU=p!)l;vpQkhYa2ZTjx$HM-Bb6&qkg zhaVyJ{~4!I5d50ZRhzg{eE$8Om56t^7Oq26hGKynFWQ+bCif7b>I>=JEBh~Krp-cD zsre5yOGG`E@|uR=WySm##ZnEFC{vIqi>hxu%LXSR5d1NHm6)`<UodYxW2rjx<9h|U zwq~1m?1|V8+cJko?|welt}zgM-+0-u)>@^O`ukX at c8X2LU>6MeL!iCdlF8EPT>k#v z9uvn?a#qB!1u@>5fu6yngCgXfLJa4(SjW*3>t18lQe)M at KOL+~ebp*u82JC<dP-y! z79SD=&wZJtP at f-T1ux_QTqDC&<SqUZv|%dNOv=RG-`qomuVTpJ`}d0Faalmdvc4^n zn%pyy7DEY0=dNc<bmaGA(Qh~grFF{$U#h8CCRAq?!FYDSBybOj=zbPemLYn1w`ddI zkhf7fW}43StB$nT%IqzimQOg^^0YET;Ygb1ll7r at RRkGByvs@M-ITqzqHVX#De?Ab zK&-IegrNPT84OSAonELg$uQ#Da4$XA$nGwVp!%(~AhQ5}Nn634*CMAWS|b+ObmcSW z<e6>5>Dz8wyP~<P+J{qITEXH1 at mQ#~+RAn(LnULA_(jVy+VQT{OXtmna^S041iq)r zq*!fJJWg}#N<EJ4`t{C)iy#l7Tt??7Wv20pm;1RHrYYvMs5c44q|?&g*8VF&B7yMt z{u*YSSIR&AOZ7Z-(fMTH#zRb6C&}r`&0Dw?S~sD$VNJLqHw|zzj+)&d3%H$?M+u`i z2b;5~3g)k+<oG|s1jv+L%?0 at N^3qemF8;EyuX3cH at DgR(i`H8$^=7|YX2>eJ41O1u znYHzZW)|*=Eh*-7Y?Z>rPSyO-Pubs5`7um84#Tj7Potl_`_ErI{>0tBfk|;NZO=&Q zdti&tw59F*Uj=H(8%8f5ce%B8KZx4UMiT)bQl<|ZeXHzasv8AbTs)a*I)gDbgQD!P z8vB~&cQTJM?8^o0$_C`30oL7mu#T6D(jJF)x3W)XO^bX90Od^<z$PWGm!9{l&K>4! zjiB0$mpQJeOp7U|<bayPP9TK&E?39#{aRYV+%a^A)dgEE at y@v*rt`XryT~j4Q08qM ztM{bC%F_w{@1gzU&Ea>%gpddoXBBm!V{b8wr>}DdS)abl2BBGw;-2R-AzCOLu=rJt zVZ+z=tE4!huS#Of9+$jG*?A1I5iw1KHyu&h<bVR1XzqVX>^#FaZzS=?AXBIVQA>?e zk;Dlbf`*iPIf}`2-U`c-sY2`7tOYBkbSUSwdu&tr%y8 at bk5I75E-D&%N|A+T_WAfx zjCTFh=@2*f at TVS+e)K at uB&@L9<q}zJxLAU`iSAXendp>QR687r+ZE3jPtwOcn(mCk z9hyi0*#jGlyt&zg4zBOX&l^==I~NxJVOoVw^;&=V2)fwe*3kvK7-F9F)gH7f at 0SSp z`{(k%OiP#5Y!%&1ElbD26#=jz?&vx&g)T&wou^V+ at s|%p<kew$f|YE)RZpsX5Ukr; z>{i{s91C3tQ{SAD^&h4sWoBOdx8?_Qs&0fJ41yN_i;-?-mNoVx{&KGOgk_EV5xu=p zt}??zuWrC!LX`~yp5a*>>MT7;X?v(S-1=-CS?=rnBXs+pX!#+quIvL$eMrj=t?O$4 z2!%EwL;f<Vza$Mg<lXUa=tGFr`a#S7N)o|(9 at F>;Z+-OtY2mL%jnylY^7gW&C*EqO z4_0P)7?Dlv3hdS>0VQzvk<&7|#^}~xvAQl;F0VlNT4B?AlgaBk5m{$f4E#ax9DSY7 zUz)#J&=@<cHB%Km+xfBfEjP2sDLN{JgkuK$vnACuPoA6>gAU~%uU at 7t)%_2y)rxYc zkyXh8dy3;pd~a56BiGV6;wpA0+{Gfyyhsf94y at 5m9+~k`xLccCL{(W;@c5lfuIcf6 zZ10d9ITz<qmjwEP%bvMXyAK5fy!uqUa}<$J6+_!Ioifuz6(f6iG!Z7pg#D}`9ilb& z<G!-(Mtxjgyp|)M`za##GEx8Rshle$J`K8s#&D9drc#PWq?$HnlKb&<cfDajj2YXu z8yGiRz>OIdzoYKzKF%v<eFOXhRLR#U+>PE2+Hk at +nRoxq#gAv9Lf-7$iy`OkX<l)u z?gF+cy&ur)c>u1PIEh*L?T~Sq6G(GfQsyK1OB?d>O`2A=vu&jrzX+#nw^|7$^yCAB zbhm35EEY(NQ^=M<{>(@orm9Q81$2+`rtlNl)b<6EXr<IX6(Edfny%fb`Ic#U!JP<; z)tVCAu$Zu1EjS at 2fUYW7BtL^Cx}yAdh6HZuY)UiGMi8HTOV9gvqm9H8Q^kwuhKo`! zhAh93<u at 1Oa*SwJc`LGC at F!3O*piqHFn1Q8KvPuK75x~4TCF5wYEUnPTa~HX&Hhg1 zS9Hn6QZJMUzoL#}O8sizS3jLqsLKt$LMIs}&>1;${D!k4sZ$v)!a{KvV_49BN|6MC z4eJHD(sDRnC(qnyH_+-V`y&@rm#Y=Bd}>(^e)Yc%aA^AiwZPmluWMyD- at pb~S0gEv z!tv?Y=k3;de9L5zO?H3HaMQNiQF{x-lDP{bE6`ZvxVRPO<OAujej{XXNA#P&uE?s$ zEgBT9)g;tO?z%g6leF@=*O^-w+aJ;baTnfoVejA{S`hCrf1aaqx%2uXV6cIoYY{)} z)HKAvobaHq%i$?J_|*$FuhaEMi~{`b;_=CYaG>b at dX8mHnqRRP1Ie71`oqs`J*<~o zvJ1Ze@(_k}xqe4?!g~71n$5&1-_-|z at 1cdCcG1PrD>nwFmrd<Bw;FHpu$aT7K58X< zu~VOU;BWHh$F*ngKzzZ&kd<aEo6L}vgEcOj*#@>s9b+!&7sNsACwH~F4qmX<MZ)#9 zoO{>HFWGkLjFB<R4LDp8dZyuw4uj_LCbpvOol}m4uqoQ+rKdB%p*T>u;f7YNoV(e@ zB20(g!-hwfg-s>*)+oe3S*IVtW&RP=9wRHap2MD}pl+B{ynL>y47cX-l;Zcrqj~q5 zc_ijKX)3B>s%<wO&1)aR0)Xl1fgFLL4)2UK^TJt`d};y}GHb!I>un&pgH80vD|k|b zoN0!nA~1oiM-@=rfNetUz)z(p9rt-BMwRW?)3kX^4~bONwR#olLX$f>4{i9n69FRn z<nYQ4K`(34E3z4wq<AkG_R^daH;%@0Tq|=R&5JNg#^y-VPjilhw9RJ~@%>YK+3*pP zXPqKU^*GG9a|a<m<){u|A|FnJBR&>iA&XbDD45u~*7pYl1^fQ>ycW(>=Z&Ikg+rYT z!qWJ2erE+vmSL;uM=Vlgr0aJ{`$^lU1Y at G)XZ(4kHN8iI)D?<RHGlcF1 at BzXyRHwD zz)f1iGmMLO44HKhly$r at 9ZT6x<UQ95!2_3$*WxrpF0Pk+l^mJ?S3dT&$gQ9Uvu#Me z!{LU6f$!-)=WAlS%agUnjY#YxT4m7_g61vili+dgbA~(SKH2w5w^Vm{k_D2gJcO{h zkyF at 5P4HAteg1YU<gNwtWc*6oK?l7=z at _S5u33}!Q~S%$C6)-6vG%gcA}h-Bm&rM+ zS+(Vf-F2B=HHh4&2VZc_sU5E+dEgy=ku~be&U+(+1^9_X_MoHDjK9CA8*B9T)Pr^~ zMnRM36V4?bz~F(_(nZg_YTU|!@VY at bwf^_(_q7)+K27ZtUI+G=EBj<(+^ZTL=n-T+ zqYCS)Mi=z)GBF<}-&<K;#L9`fW4-9ASxW^vYm)K`_4y{+*IBI&UJ33%Pu(dXYDyh? zWgN}ePY1%ejv?No_C~r~*e>$HNXyHV?|EwVFMi1H%BoMCgB6rfFG7QNiyB<1N$!)# z6Z6~UwMU>;<GaS+Su at Y9q!SDl!N9Z~Yu at 7|A=Sl0U$*y(X<w3>Ydo9tBx=@}V6|D$ ztR{X_EJ5}i29OvqN?vi%pys<%+S;W*@AQTU-*`&j$*RrG1`LxIKG$@y_L=8`-=%86 z1Q~yKnH0+D2uX1qXzvI)(nDX>h+n%>JZD35GMo49qjQjZ{Bf`7on31uHaW1vLH`o8 z92yaNG2C~;@(>WJ(ov?~Y`EP;2+QVFclpCrv8d*f&HtLi;|}#G*KjezyL|kJ>sJ_K zr1K;9^-_ZBr&|0qvg!j*H~S&2*4LVQqms~OJxAss9^t4w{Cx==-2P%e6Yb#hAm&hS zy*L1)Hf=a*b(77y!U<{wBik at zqxgwS#=Oly0dJ8;sH*hIBi%12H6~D8 at tdER4!`fa zcu6&fQ4OQyS?U?8mo6%77t at l`!qngf5+`Gk#G87hUPyc!rACTBH+58%>@iH976Ahc zut2mc>O7=@162PF(o9ITZm||B!qKObtm2mRB6<>U;(7H0rQge5oUv|!CR)$bd?Io+ zng~Z9wIVz_qjRK at 2iboLN9~fZn0?rJHZ$sgB|ae|wy6o*+shU3U7}`93*}r#Q<Q<zW2<H(lw at _&7B2 at W>yO}A1VO;@<}`c+y^Xa_U>}E!Q{&|9^rafbWDp(XRK&Ev;aMZH z^qT()FXuUJ(XVBo1?ZsBi at lfZ?DlKgt=C+_J8KpKUrhCh&v>ukGx0laT(#-y8-Y~F z($V=j{&T~6o-x#b^!7M{ZgpsIMqTbpSJwIhJ$`NO5cToyo!2^qv at gL92SGvG*&$Tq zi^md~zL$^SEfiG~+u3%_#^vWk1SwCUgl at nk65Z-LwxLnX2HcgJop{&1Sg88&dzcFd zK>_2>DPhu#Vb!ul>K}Jc at jF8J682`4#906<`UX$%r>N!WJTE6$KY;BiljNrqb!vv> z&oi_+h$l*!3ZKxLz3Kyx&D+G9PP>XSjYNoUE}>}Ixlg9nP2W0*84Y~;@&(2)<d1rY z1eW-YYCg-o*=d^3fF(3qe8-iMh4*FH-Myx{<?D?{z<-MmGlYC+*|LKOL8Nt-rWf*G zCF)-Hg822&xXEAT)e_pofldGV#5mE|Ll7G|R;0o2%y at cN!V at a382W)*5X5n~c+PU$ z)Q<pC+?}g|t9W?8U`W~6wtABw(t3^l9WL<<CPn8llL!P#N>8TBL!;t=$`f<kKe3<zPOxu!HLH`Rr8XW=b9>;WHIVq~t*YwF6={BSk(*W!P_8gRZRqPvu6$IOmf<fG_g}L! zS37o<gl+#vwk4bT58K*pSj@{j|2NxOulN_+dgl6ITZ|yT-S#NxlS5DL4;NkMhsEy0 z4yPkKhVYXf>1<;25)~}4TVb@!pzN#VXFGH2UX?^L(>l-xSPOJY9~lRj8fW8B<M95L z!?%wnxMR{0DPn+nP=+p?j{RhLt(w1k&$tp;Ur*EF{|hqE{s_Lv#iQw}5M0bY$<7$} ztF=Diy)j**3Gaw249616q)y@@U|0YLt at agry)=z=;<o8>ZFxCIEE%;gP}vKY;a(j2 zMIqd}U!0sX!eTlwCZ}v;Al81~0E=8WofE6zi(V^%UXf7En#hMg(Bq>g%Flogv!EaQ zz<<IY_`iMR!z7pyZgWbH^hHM;M}mlwB)T9DEkRT<jF0uvh}&9xxyJZ00}{?TZl`8U z=zGH^Rbi5%B<0`iZSmpZ;r;Z~N-}seu$CZI`UT}!Pe~<r-Ii_t=Ee#1{QT_XJLXbM zpt3-t(&^{n!Lej?dRtX-3wn8Zp_6ne_vFh5S-ebcfzo+-d3{&FoWO1JE2*Mfdt8F& z;~&uh9U2)f<Lq_y&vh=c*fV?uYVy3J43bU-5o#8ypu^YrH$4}rOA$g)_+)b!onzMc zQ+{ul-cE*@RI-}RVogr^gop;gwUPDc4YgKLu5y+Ju6Ubr=f~F}G-f`5&d<*;W5Rsg ziynrgiG2hzzqQZoWZjFs=BVP2v9+hh>puAKCR)towARub;yoU{=UN<q&bWMXq$MA# z&(zP!hLlI;ADG^hH;AilH%su%K$Vx0goF!E)(GDSO!nT$FL)vr9{GYN((H~8pKSfl zYYgsB&oXa2yxFj#(VuuT-uQ;%ZdFo9$GFNaP-1^qyvEX9+1xke$okP8?MlQnEI*ju zC at ciNdU_3CanBl$AG01Cr`tYp9aXK2f(mODIw4YQUc9^>Sk6h_x?et9Oc%Kypn=S| z2T88KPv~}%@|?U@{WDWJN~tS{6V4YVbWaOOr{7Ym4SaAXI<1}`=JXowJsSARIp#7( ztS3C9XFxtS#9cRHo3Bz<MCF;cH&zs594BJ0y9{kzNgGF=DT~w<3SDGC>j?|hgRY3T z+O-#Ay#?;;tovT37C?>-$%8J38GNc22U)dS9a;M-=UDn_xJ&Gv=|aYHt77m2=R$`x zm5tiaEq0umZazVAzbEN~L}~}HkTEwOm}+g8|30aS+i1$yX~lf6*1k4Gb3|NzQvuDV zN_UoOqzh^ydLTmb!gd*N7_C<+TE4+qZUUhSWKF-tgTzdD#eClR20++;_wRA8J6Rpr zF^^235p`5w%Z}%)RIg8up323y0!?zdlh>ow)4Zq;b$m|Q9<ig|m5rBvn_`r?@<rTq z3=0gtj49JOiy^s+biG(?kFj95vz<szHV=M;PL8qHX`m;+?>7{8FYBN>#@sTa_sJG~ zu3O&(7n-{(N}s^4urcmNl}Cm)GpxqFH_k(YLHixU!+I94>_?^tirC~pKdUPu8*-b` zoaJFqK4b0;?Xa)b0;P}GCZN?Yc3NFzO}grE at oo8~C&Rus<s{i)F0iHGh3)Wqnhk66 z;ZW4$j(&xIGg2BCmG34ex#gij%G{!ZpQrP->%T6 at e^#ZA3>WhM?<t;Zk1#Yf#*(c_ zhwQ^6uJrFsNG1G#+fn`#7ykOqw=Dwo(Lxj;9gra%kT4yP{suMe0kBO)M4$-h!vLX7 zxtCKJYk*P$iNyc%BAj->JM6rWJLDK^aC_)#m3y$$S#-i1a>^(gnmogLqkfp{aKRX> z<<=ddhx6+Ub-t)IO7^KUaIKhl;c4)jXX|>82I at 7QdZ}`p=I(oD`@9S;ceU!yzKuC` zUg&`q4?TQW_!iGVJ|?T4z{QKz#<%D3hr_P7uBvB(#fP#7{>pi`mn at O_T>M3=|1RzM z;jcyi|13T7^T9loH}fc$e)#th7XLlGx$ggG4gANoK880tIv$S_E*L)y)!`dLe>gi5 z<c=`ju<r2*?_!&o1pnmZyLy$SrCFN=5(?B*U`}dkk3KyX+}FVWR&4RTKHr`0A5P}_ zdGByO{5jllDl7*xd3@*rDI7mVyfb-&-rx3Ti{<`#o6-B}dVh10w$tb3p6jBT&E)g# zi<s!#OMOmqj@(_>C)Vlr%6q*#g=g2~qQu4X&8KV~<?Hgj&pJ3Ax`ktvX6Nl*y!Mud zWuB*Jg!@*TE-m$TUIZD49$)^vS9zG+#k}P5`Mp1Q9ns9ZJzniTbhwAKme9cpb9N9M zGYP-vkX?thw_uu->55}6-g%t-vLL3D6T`pte2t#`0~*?_((8Kn1;TK?ILVkyUlYqD zO)_cZ67xJTzO=z9<g7wv4sA}Q7lmI$X=yw0h~Q-3u-E&D at D_++4woJ)10R3EuGEgzFDeuMF{8=7@>zU;9!D>K^;0!n03G{fw+D>BpV*Zssk)uvd8+zM)9wV)P4Sla25_r7 zy0-H3juP=bpsQrRJ;hCqZDNBi7%-a$-jBGSiSK}Wh40C4KKMJ`jY~Z5qFUcRy678H zeygw&DR`47n@)S#L`!uZ-=b^cXFPY<@hWXcrKLSUb6<>a)poH5Z+x%j7kV-AOyRTs z7JI at 9bXb2Q=_Ib>^PFN$IToBPov^?hzPKOayOw_4$DUxTB-&*<lhaf1naTxsxw|;A z!`{TpAV@#fdgjR~M0B<)9FBZ>l<5Y=4_*+F`_Mt$4Tc)GPB}6 at jpz*tJ%@rWYD-=@ zQ%i4;Tk-$f&xDixA$8qv;@Yl<r#Xm<o#uwwXJ9p_*J!`LP<_(aA;8N}<^5zCJ$Jz& zEw;B5P<hn6V{<`NHrQBZ_5<+enovdCv*}gqsa{NAe}M;8x0uS&<?7X|;Z$06fBy9y z`cS2ij}oNHTQQS(69S-oCirsb9vAGL1)*_VJ`*sA-eyK%;di^6r9I$bv8HQupz=I> zZMQx9g9kYuw!5zPhUjMWz5iSpBe`x?qY$Ej&(ZYS>>V^pkb(N5mX+$XFxsJtw`}_~ zclRS#b(s*T{zSZw#seA`9bS9$`vWmqmf)94rIm+Mwk3M&JK*s}yi8j<)%PF40J)ja z{3vt8Tb7*lhOQXwoO at -+;`=W26T2;(B)2MWB~#4Gm$jbR+$2A$+=XMxx+VY at HfH_V zxG4BOMqND at r#t-1>C(v1!ww}~n4A&-)}!`R<vH=Mdd3Za3B)L+stFUhTV>K=yqTC; zdJNBn<a?#=e_xw0{heV?SwCIAS*58^|B*s<TE%}qBv^`P at wX+=IH;t4_<Crl?&byO z_hpB$yvuEYZ2kEz{RNw;QeiPE;8C{xQo+P^kq|mo2ePDUu&MRF%FIZ->Uk{Z5F2RG zk^K<i1x&pi7bs%NIlh(fyI~I*GOxRKyB;+jpK)1q8ymiD4phODc-T`rbVv%kWUm0u zFCI$d{}<NYGAOPfS{FqUBsc^~&_J+Y!JWY&A$SN5!3pjTgG+D^5Fi8yBv^2F8GL{M zgF6g9_#h*X^UgW<zFYO)t^4Cub=CgSUA?PUum0Bhx_hmb!OiE&E<TstJ<cF;%ekV{ z9xU9v99FSH8D;-L<X at N!{TV;JPwE(;)f=LyJYLUlequU4bH{fpaf03-1q)h3B}XbG z?BvCVb at CI3uV6tc`XQOwrx4#46#^AUk{7lCQgWc=)b+1+$H(ReK&TVhV+7F{wf__{ z2|R-;7~HDAkgmzEkJQVVyQcRSlrCVRMQ0jciI|@}v at W3qP4$rGW2eV3x~o5E$2C)Q z%^uJc4XOLjzSkVkp-DV4(VK-{K?k>7*<XZF6)P_2(1Oj1$wIp}qY1+xscU`>|G~;2 zB~g^){eO-G{ugjvJ&z9HbIe<T$m~evg3;26lc~WPg%i8&G+~obcLkU)5Hh>oyZZiB z)|I1`)ipEL0d)Vpc;4)<m;m&}dQ^(j#vqK0nBXle!}bS;@i~cb<P2Dm(yrphs>@C) zo?!e&fUB-0^mK6!iDp02Z=|dh=`3(}SttxFc)V=k4Q2Lik(&AFcs0qJ!*FHt!{hPV zsmm^{=EehTPDbxI`5Q%uRSe5VK=C<O^-+QU4J@!j`>u~WncFPiU74QGVDQ05tc`d6 zw;jbML@@YdxMd4VQ|k_RoJ<(v!n$p*hr6aCL|g{F<uHGU@^lH(5B_M!=4bZk*r#(V zpCF@}KzEdX`=_f~h%YLx8o9Q=5=ixqqFK0t`L^|Z#pEY-?9IWWu$}3kc0s{cB+gkL zCZc-c3C at S>9D#$=`EL0+T|PD|yI8(c2gVPT_kJ};#46>m#_{{^q;*sDdM&_C@|qj! zvOd#^z2xdE)@E8=KLg1`)qvM6fpGNj={DdVr1|NfL;9}8Xwm#~atKZTP|VWpV}k%} z?)$V(YMAQ}q4VpLDF0k{d#o9L2t8VIl}sYN`&&54UvF0@?)J$nQ>8IPCdb(Pv3-k% zX0tAw{zW0B;D6h~4qy*-e+j1DlGfa1yv+dXf-Lml``7?AO`bcNiDArVB$s3RNMRls zSq8M#)GgzhU?y!of2n!wR+?1v)RL;p<#h<vS#V_+G01g4AXAX$eEJ)av)VSne#N$r z-q0k<)U5qWgGL+4+HQ+Jz1&SZO9R|5=_sS(04sIRVSUtV;QE-3z?~qmUIMqc8>}Qf zMHIj~AGPj&$Ejd-K4*y8s5CfzQsSP|P(A9eqk`lq;_ at csAW<_Rd9bh4`bWlIy7I<s zp{TCgtme4p+<i&fnOxdGNbU0C)@QK71`)Sxg8b$&{54+)v#}7wD4mpd9;koVa=*$y z^YHK_Us8ItdH2GPZs~}^?LpF2R^~o0WBA(v&PS8kBqSGuLTx&Z^cz^tNJY at MZk4n5 z^qMUSqr2GprgvGCeo6ei^*OM{A0*=DN`+Ikzqg1wk)M$6AQa{`aCDo~XNCh>zWrk~ zH5h!{ZLG5U<ou4_xBPqIDX0yLe)(!UkY_8x^{SI at MVH<hl4(9x0GotFjG}G at c4z4& zzkFmX^nJ5F>3bj3oRcnrGmFz!1_IeZs+!VuQJO{DxSr$3YYxe)hix!cqeSBn^RXK1 zgZb*_lJh#Q{O|MUSFPi|ri*CN|C;36_8&(yrr;GvhQ*V23EnAPTsCDNOe at G?lk?#) zOjkLxWa!^hNof_GqI$r0j02zJnp&!PNhvthm4A3MlPgv7YmHNWT4+P8w8VO;*6F8h zO3VW9!eXfg5R(*J1)}><P_4qBLg9A{4IlNLP*yRW2Z-~FbR+5wU(jTdS&HeHcB{rz zKEHdCN-JJssjp0bYv69?CV`alpX<xZ#L3=Is6vlAflimjH78f}LgGRhD5%!C$u+MD zi+#)8^0?~c=fC)|Q;+=5Ho)UU8{1kmW%9nrv$weAP626!o^osEb&v68e@{tf{6uT# zkDH6%oazN9o>u8pvtGX7>TKy&sHUhybT6Aj at tc<lL*AJnwQnFHwT?gpj{k2ki+MBJ z!4)?|(O++uq^H{K&wasXVRUhUTS6P|F4co$>uHQ at BS4~rZf>j^Iidg}ZfrgET^zv$ zRwD|>j${D;)O^6Z5^_zb%U~sm=HW^63Ku%Az-g2>x?lRZ=Cb>6#p6eP9^8E*y=%PQ zR7M6pW<4ED!_|3<0PnsG`p^+|y|r=u_6FU~k3jv0i+UR6glzt56WV-LeV1e>5mgOo zJ8$}$U+`HU0_PSS)7%DBbf#jOW_LX`5r5DMyM>&FOc?(ycGN`UJ?P(kIaaZv3>o6w z#-ktLkt!he{nf#XOcrz>56&dnE&#Io{P8~Xef_C6t<vRX`n1pH1xKAnU0WZzrCK-% zCh)s6R##HLC4Lm`m|zZ8n+9iGR*A{;;jZ at P+u!Xgf#-fOX0ykOANm4-YLYX45*L27 zXKhcVvW|mfn at E<e>IcA`)s!)1cc1Pz{I`ZEaoepPK}>czD at m8ZcS1}amoD?dy}JJt zZTe75EuDNIfP3YXEdS3&<WsQC4ZJnBpsM0R2g%XAaL_-txrYA<wQe(dWAu@(=qOTX z^??y)0kr;EWg~#QmWJeVIXAok?*VV+ud~~du?j!BM^@`1fDklxJBoNc<3K8}A9f3@ zGG+ryBY?K(B;%lHG at Rrb?)f+1R13=aLS=t<f3f#ZaG((+YErPGKF39L&;dp5_Mm^+ zJ?U$^>vaQbQR?;u->n;iIw6t~@Tgk!XD7gaqvn4bx&Po3XYft3!0E+ at tJK~Q3UuX7 zXFX_U{R`P=*AF-Tkuu({zx&s}n7GFst6c^Kqw!!EGb9h91tYpX-r^G~@RRf3$2Hwn zeO)X!iw82z++YXSv#JZ<!0Wl_dj`^&dD_*wm=6z6?xZW6_4f}ih6TLMOKuV?(P9fV zS-S^?4z2}&_9fanN8s9+;{EOVdTr4S(77WTiS)&tmAUFCK4z)@5&V03j0$qytRzu+ zthrpIDJg}nM0 at 5V{Il~;i)MrKFqiVW9OHsR?h{UH=Yks5)1qPQVlNavQlqMiDqXqC zjr9xe!^dwDI&Y)(a&~^hVA?s?NDuZKc;~4J6j;R$P4oKx(Xa*Vd-ZiZfLHOdRJwdc zKj_~`h`Y3TQ5S~)pDy+Gm2>FgBIX1Lo>j90N_IqHdX>Q}b)^ON9)e0|YQg>u8cXKE znl-03kh_e%)XwGPn+ at cd*N2Vox*~<{pB2z2;|_GT$OgeIma&7CzmFtfj-LR1aH4ur zgEEEZrbFY9*Cxy-`eWm3rn{GwqbP)?WS0QDY}fI&Y>1Z%?Ic2?tpf1}8o0aa9X5(O z6vcGrkEh(v(KcPz($8o71f>;t(5+6|4KM|l1{BVCGUg*wN0uRiQ-h{HP^#3^KP#(# zzB2_^s}f7uGE4qnA7{PjoFw+O!%u*h-W>+Uv&R2Pace^U_vH2etoA=C?y?x6vhM$~ zjj8IAlIMGQN}xJoSVO<;Cs;6d7*m2r{u3kR{?3yo+Two{zjs|gG-??JN at hgUx3lXd z1!iw9-kojsyLSHvU;G1K>as)Xi~k|)e+cUUZ{3__p<3IUlIC35fz>MdM1e9Ph=uvN z_o!2}6Y&1(0J847-i1V5?2ZBNf8J0x)?9GD;hWs0fu?F8O{$l`wM(vd=|1_!UyRJ> zYAwL;C-YH!5_dop;tnEmt%>Go%^*w>7qA3CKca at 8=Ri<S)K`v^tbk^UC9GZAo8ujG zfs5Ok{T(p>jy$lDFx9h>5^lHy65f#Ml8BbU7`2k-KVBR`SE4lUd|`z9{yS#C3LYlN zQWH0F++buq0Av3lv%tH5%2WN01(K#`dL*N24*%BUe`}Zq@@adu9Cw|tYwkSog%GXd zy at m2@U^JaD`0mVDW^VVuX=u2{NpkPJXA1G>&aSI;USbM}<{vrC{V!SiDbaw|(^dXL z%Fvgtd@#d{)q4h$L&r9e>uSHqvHcSVT=1TqYW`W)O;>vs{4yT_UN}z<iuNyndv^`+ zc4i{b(Wpx*6Vz3`1-SoLk~$mG_h7l7ddKmAB_Et}{~9o9dWWqJbuCFSNk$HLaWC_o ztS^;jUo<mrX)nu;u7`*)dIC6u<0iRVnP{E5j-lVL2o~%Nm{^W|o<g;u4J7F|cFpul zgmC$S9IA`c<Ha1a(RJ^u^6ju{G`6>W=SG(^ASpP|G+~N2WH at -r#~hA+FL~q#bse{R ze{*zYXqvWGe*~0mI>6>VuHeksbae+RWFflK0m17svY-cp!k)?XZx`%52#lS7BWR9J z{Zs(>=02~kwj=&(aG4r<zjlCg6}ODvHrPhvgBr@{1|RKcejm-b(m{QP-1Vb;j*Zm- z#&W@>03M|8&B<=#tn>6-Dl%9~W!P$0Ei$v4KRC9d%zO9TZ|_6E+AjtMJyic&!v82* zR>sG92q~FvI}_=f&=*$Sj7`Dk_3B;m1f7(?enh{Wo!!4f#Kt`SJ~1c~y3%vSBX4$e z>1b{T7{B;YqYU_7TwlS2&Rm7~ybTIkNSdNu07`?(RJ*l?PM7VVp2yAGd?0(qh1BzR zL?AEZN(eP1F!cg@?_yRK9M%Lg+Pfub^H(f5%Dx02H(v_x#~z at e1|z^yw7$>TRcV<f zJuT-6^FyuG+ex}HAH$9Gg+T&BG}Pz<78J74YR<|Be#$+01#~kB9UE!&pZxn+!#6c@ zAj#(!O+CLk>3NMXKfq}g2cYRIw8mFzgjd^5PK-OZ{e#vPv1t0C*8_=S`Lp2F+d?~x zormtR(b^AzJAnUNE^i5;H0B$Qf?Yk(Xqkqz?OUuu+U1oY>f3;wmlY$oSmqJ=2oUux z!bBIfO%Nni&55=Q3QHawg^G6d{I^oO at HS?89Yxbw0LcMP18_5i?aXyDAIGZ7g-(|0 zjYnbFJfxg*q8kLI1kE70%d}0ceU4|9)=qa;z+Sdy2Q{v|@4K!*W}Az9Dc<eTg3o!q zhh`jt0pl0on|<$Rg}uL=mbpaQ at 7H}APV=O4q9LUHH8Dh8j-sY$KBs?Hw8o#2noBo# zQ!c at s5a>m2WCe^MRb_PjD5(}F7cvmwl|t5H=Ci&dzzGCM>N^j4TnpzT=v{ZLZW!we zQSSnd0ry?sl2bKL;Q at Z|guqs|1<<R9D4W&*Ues?yJ2D^fk9u~HdAjD2IsmVTT37iI z&*v|9de2qtAn21ou9;-)<}@IL!Rf(Q3KJ<Etg_m9yreu-o?>>-$#|U~)^r^3j^1rY zr8^TrP_wOej8QrNeKK$&aB*baW*A2BkgJjjOyw6i04-P5fZc1#a=v&w+frwz%XIU0 z&!JX>E2}4tF1}ZX6j&Vp_l*6`HTG`k&f_{0z18(`uk42%@6A`;_)kVbpV4;$*1}VP z$-y*DMZ4c$8r(sBPX?P(mwd(n>$`u~f1kk>&(LAXcSg(UXFTqFS%CHWbLs9wDYCKg zkfwyZ7#8IE;$9Vcaj#vb>EEKVBRXN3*&THo at E6mgs#|;C6<>U4z~dM9ZR}}PnahNs zu_WC|nd_beCMQsqq=n}*q>N`lG#<ebI7wT(UX!Ogb5gc?-!5Cz*SNcWU8uGL6KC8% zMa=)`9%)Gj%8*DDy7USjP(q)X8>7wN0FRu#{#rR7_bbTkxR;=HQ4NV7(r-yYcv5u$ zD7lo&&*bSEmsjXM8EH6lRqCQc1O$}4+Xhu!c_QHZsFnX=t^zmw#u9Q&27zl|S04`D z=>4EgfVYtN4r&&(aKZY<ZNMIAIyoo8s at wEeeO-|svDy8hQ_Mxjk4%y&5C;Xs_O2E! z5yDvbYwX`*u^Fb*k1r&HE>Pi@;x+ZZsSET$;E-k$$>+-eACyZ{_DTB<G)=^2+ at o}T z8rglRXQ><Fb618cHfx3J5o(HRavTIna^2~I4^*xYLP3B9+Y`nH^c1}54FKeklnvJp z0Ska#2Q^Sxi-n_)XrPM{M?*ralPoHr-=G(#^D!$U>(0+r<3(<coqG(>#^}}es3>Gg z$fPIlHu(~^|MzKhigSd}Vw2{|35+sGo&jBDjVQQ)-||6k7jeI#dM$-f%Ol;x{;1Vk znBM<b^8ba2|A~xmJ9r1QsIo&yo-m@`%un*ms+epQcJHjHjh?NMu6w8%puaVG3IMli zIo3-rplwO-kB*zE+Qc%F64+(7(hOv`vO0(-wJRUAkuNQaH<sM5lJYNn{o)9YE#aK$ z-AAV_=A&vsnaQa>lhjOWEBw%;IrR<^Qb#<SLK_|dP#)}F_^wbq`;s1 at W|pMXRuU2? zegUr4hSgRZRzs9q#j=ioWF#7Z-4IC$>Gx9Eu;q1B5zny~#(CR7n!kqJ8ZGF+t{tU- zO2RkUe9%B{8H}nOW_xn7ADF43?My<ppaQ{pA}7JK_1(>zFwRzn6&F*@_6LtOdNbN_ zc)deRNHlZvX&|H9UhCGKfVgj{NCw>;-xM!hVE~WMiNpgJ5`-?ktWytM)6Zr=CO^D4 zY^^bZSB)Mv{`}0^oIrFkQ{p6^9MwS%%{(b+%AuR90kdd=^#Zu|d-c!&$x|f7oo5ns z#X2{H!RLHKqd6}|F&`@WhSv~ULCfVM at z38z^6FM>EcjQ*0eUqks=1D<KXoli10 at bD z-dODk&J2_vDq!)#sX6!t at jFe~o~!aqHW=x4tVz(VWc+lJhv1uowtK&qc0D9iL3W=> z#m}{WU`H3%U4E#%kRaJnG_4a^aj3M-&$+Ps at a^bHKt5j$*FvXpU{cOHeVfPGs=}3e zwIRg)SIFkRaXVdLvVVL>arMQ7|4V$Ur^5kq-DPW6?N_O5lK)P9VUZQJp&;?>N{WCH z&j9`Ij0e@~@0Z7ypJFWh1ko5j!ta@?AjN$c7*GEn=kWDz|7R}h|Gw3u0}C;B()Fgp zJ-ccA@^9~|gou>M&=l*XE56_v+e=2KS8QEmEMzpaOs6_8SBB<^ma5w`)n2E*NX5 at 1 zcuCX#mePO?V%jz)ezM>IA!d;x%?u5<(mp>zH at wB&?3KyqzAM;C_nbr{z<hVRfz{D< z6~z6zbr(j*rz=)E%X at 5`T?geto#*w>osDV#C4KQMkO1cxVgK;A)`(W_t>0}a*%298 zm_td0cUHLj*-PiLHx+yTBrQzdvs^E2u5IU1S)JLL-FsQs6>@bNBT(P2xib%S+Y@=0 zn3w!+!G9^LjjLumr46SjHS;VgyLY*phEkphfkphrb!-1N at b+~F18Y8?@K?JqT`3Ah zdT~89SO`Zy;(>l>73pDh>Q4K<%byr`cCP$I0GTD>E;4CWV&c3I^F`6Lo_+2D2CS8G zsr6^H!fcv1EJi?AX5(x}Sk0}OuUE!~@+LA{KA|W`YlqJx#8P at +l`*hk{pEVJCm>2| zrg0 at 5!u(>uef6Oz!P;5+6{kOl^|q!Xp~p?+P2UCD1Eq{72t>bH0rj343D+3TI~=T% z*bL>bJM>RhE0yb;hxrZ@*9^}~zAkHKtg!=G-zsM at d$dy|XU`W!hy^+Gyl>BrHyQ^P zd>KQ}eEkYDE&pU%PM4)EZb|KEVSVZo(EZ6Y`uF;SZM~~*@&=L^TYj1n&&=%i+)O*; z=m)8qK^*jkz->lUxz6!I1$Ph1QM~+RV;Scc?`bEKZc(v3Wae+z+S=8OT#5wiO{-mzs;o7nmhG?0ysGl}ScKk-z>oOrt5 at 5o!tS3B%25l=WkU|dya+M&hXFoqCl~X`H*;AM zr at HyKLQS?3-BEC~lwg%K`e>+bGkIY%{(VbOJ!|H<If>nw(gpo(G4a6Z&A2TP-s}AQ zyFXFp*B60<h)yzmOn#`_apFN$5DF}M?rd(jL2LH)(ESC<QDoM{G<(#*I3y%xU?D$g z at t6^HNh;i#r$r^w17KUDwbFU-X32k3A%5=6&K&?($ocZHQSy{hKcBh(DPDrwt$j}@ ziv?dnV^9@?{J9M_7DZFTd4tyYQy|c1IVt^7sP5F?MXVtH=ftr*ijBh!61ED{tb#)> z*ML;yLKUVHj2}Fib0lji{yvbZg<xsoKYlUtM#f6p=es~W40sNt&L&GR9_)0Eh6WLb z<h|?0J)KyQJ8#t|i_IZJ^xntv2sc}J)ZX%WaWWRvIW+!<T0ds at xqj~RO?!r`02AMx z=)+gn(05!NWZ0vD^A;OJhEI4q;z!G03Cm=Q0D&`6GiHmr3tt|UW{t$=mxzV%{A=#S zD0;RGxS>|zbM!qv?SR;*GSR}6v+PI;X5(WXJ$WlRg_*G65!SPt#lcqFVj9s|Hh(l& z)SFo_wL*7i-C*I1{J~SMAhL54YKWYI4ml)($eS4+P^94$^UFFijezVqI>?5)GEpg? z?PTR6J-;SAghTLJm$_NU3YqbEPu2NT16*!ViQrH4AUyw;-CorpM^a1BLS-&Cawh&$ zX?g##yKi2?HH7E)%jEx1^>5u->*;k;b`z&tF1p6r*_^y<NB^FdslWVhknpZPMUwvi ze%;{zv%}O=)Kg%fQg$S)WeNl14fX%rMVLK%gxCKy%liKwZ~tFwA3->ntL2zu{w7V8 zn>=oSIaT#F)r-e3ORB+Z@)vQ52?+^_+&Mt)hwrBa1qXMt=-F5!&jT5~KnVU{URXQt z$31AUNCC!DeJaloMEP?}aX*%u>EKgGjP<CH{!2^xjj(5=m`%@UrwU&8`mUxg)<*W8 zPXu`)&J|oSGV at mDxaQmio4TAdDW7ln<;!kz9K1cVXszJ_!12j{tbF7yF;B#<5e;kc zG|69H1AjA<cjD(nD3D!d&XACB%{ne~oGSZkFpFJhS!*ebn~PHo&&X)vyk&E$5Nb(& z=gfsVJ#tC$JzZ9zPWBl5dz+ZEfhnc^C&C?{WcoQiS50<Zlxlh~;eAncuT4=iJ<vV5 zwK^mu+?bQMSlB8ePK0~@zGbkdH{6-Hfc}ZM=8s!gxwxCj?LVXxA1w(Vpaap|qA?&r zUXZTdm-p0-vx$<4@@C*W58WJtfLjkcNsPCe`)91Kh6(fLjitRF#yP&0oCgtv5WQ3g zMifB<gQ%$PA#E6FQ)6{bUK_GGe{y+LR-WOlz5x$RPI?d?X62Rtr7`lAfW}dR2H!DH zqo>0;OniX^0mXV#<{hRt7$i_0y~rv#4I>N7tDtW&Ro=9Kq;Y}?{^%&Ns_I+4Rky<) zl4-x?<n#JspKkl at dJccO#UNT{bd;`~d`xL<@M4>jGHX_fg!@3`##3l;vj;dYoENZR zc?Kx?`JVA?<Hm$m>V+nqI;$oNhv<&ThC~^aG=Bb{L*&1BTtm5HcwdAnQBwt8%7-7G zB6*Y8>JbKq!*}vl2Kj8DZ|^%Pyq?&!^N!w-Bg(<}g1j^iHXIpXz^oJ?pNIe8wOhU> zrZff;==c03c>)1?35m~WD)rv0uc-NxU0&|zpm*F-J1v>P8_Ji&+76~uuB^sd7Sl+~ zSP>+R0l8uKgw!VW9{_2&p{qScsB!@{;;o42W>^)Y$b04UY!&0PsHeU at oVj3805{!^ ztZ&k at L>w3O4bZPu3g_{sqmD9w>-~`rOAauSdP?cgRgxuE-w31FF9FIQ{cyrauOeTQ zh1ED}-H7EWHK#aV+~PYtCYw8-h1{=&Rus_5grL%*cULwRqEp*&4&=q}8 at KSI3Fb?% z#Pq5v)aZy6`h6N4ERRS&5bW<l6*{nBq5d^biwK|$iIOGG)D8q%yt7Z4vTwIxijL=$ zeTTlNB0aQHUtg%;)k=A9Mrvl7nBS3JPt^NSM5`xxaxr;afk|XN9`XK2VG@@lPB88h z&ng;a(rtQe4hFS%Rj2S at 2CI3IL*>s}`3c7EQCw=t_vQQ61__L&lJ5tKlVDbOv3{@f z%M_;}&1)p21wSbaK7WBQFddg4O_RzxjVC{Nxcqf~9acVM1`(f(gayc}fD3+TOH&TH z*pluzMk*fORN6>BlPX8vQd#^%$Z$7q{Vd3H7=k&*yp=CBcH_9-dfiQr(G~;xk-B^{ z?uHa1bQyaw=KeXuU?}|#|K11Oc(YHl$m at 5l>XPt~=;~4UzAF?gTzTHRfmYq1^Zp%o zes~m<olIc6QAS000)bc@(_}`+85>c*kdToAsms1E7Qe(oVpVRv{^xE=iCKgZEUg+v zMd<is3MDu+O4GJob9YeJ=GCp8E)5LF<i-~r0^u~Sw<C`ap`JtoGAY|X1#g>RYbzqg zzozXn%d-h}J|r$A{wcpBs{&9ra}Xx7`L6PcDzJpe2jYdB*8F=0*~-?N)yJwM6wR68 z2Rb;0gxh3TskC={P>q4^7^k)s7kFvOrLV at +8dgq^@CId9^;bc)>g3oDZ+Ameu(uyh z_IEnoPMY8>UHAc0E~|aO?&}&xKM7=5o(vI1L?&#=D`n&7lyYW<x3T#z$OU`t0^}bK z2 at H>&Ir{Y9xow7x)Lw+16SM?%3S at KbBR5P0ns1m+);Lp~R>Yd;y_{&C()G$3 at yd6G z7Q<+sWZIlZ#V1DS=&oOd4MjN1SbuvLc7Sq1U0twi5LrZ95ByXSY-LT1?qI3l1nhT! zUq8k4WTaci$2J$1rl>nHqyx$8u<$rCyQ^sNOxcj5n4z{+y?A|_tn<Hl!0CbvqK8vE z<HKUJ>f$*s!oXi&eC4LC+}|;O<07dV-g`f!L?u5|8%;lN<<uQ=J9%0QB^t{&j!5G3 zv?#P|c}GdDgeS1e9e_Q<zeMd7Mk|r#_+jWDbg~zxXySx!I0uhpw>VyfbB}H|kX&@s z^=xd=#k%~qWWV`rGc!=u<67&R4C#<#pKpRAq_eAtfTe}R(SX|4Kb3r52?Wm_mis*+ z-zVPZtxo!Pc}+-5y4C#2Kc}>mAv^u#>V=q9jm+nBELr9*k2#TGC2rVm1l&eZ4CH7% z?>v#=ba?-#UwQxjw(P!DQcD$m6V!~PF|7&AM~Dh5n;gtGwciJ5FHrsnc(oZ0!o~Nd zR1K9mMPL5%cFV0>y1D+iSlsR^sKpt3+hDw5HYc(@zjV3%nTaRYnvHz(jdT<1K+mYH zVVYF8Sz5$G^JjCB{POkTAba|j at uR1L3q>-akpfIFwAx7T-O&(HTuN|KJppo#7{RUK z+2zo#oFgsY_!aS)p!_7PK2xFW;^xVhB)v3FOr3+2WZ4gc>o_yjk at 4s_daPzpnX{#o z0EMz at x{mwbI=cQ=<xYm(?OV73UE7z$ous;JP3KA#Ipiv7^VLkSMAMs>U1Jp9gafuu z7bNIqM=Nwxb9k{Y7GYoiiu9d#)b@)cIi&1jmRaqoXu4_g5Ru+jiO{Q3&miwtMuBSi zBk%W?^?D|csU+IogCe@}zamF`r0fEcwiEWBoHL!H@%WYBxI5?YNTw6LyGVSFAxZ?m zUSrtOJmxU;AX>Dx0X+kcDC3M$6Yb{U&)iR!q8}ql7F4rH8OM4pjzOU1qWw}CnjumQ z?xM_=8bNeCt>Uo}UVN+4`RGtJ=8U`h+3|v?8*Lb%C1N;XO|23q1wP11JY4oVOp;`) z1HgdPuJoWu6sdR9!WRA9VUZKva$qJMi5rO=(SbIZQ%7It)N?u)M}lN}6a`rr`icoV z%-M;c?@)d8BURoc6Y&bYqdYo^E~GZwHIemo;7dkN&&;0F58!dB;VM3g#tm8>&Y%xo z=KSpk7rj#6*TG896o&(x`p#cJSN%su%mvfHqc^7%IPUhuwZdGk;kocoP5s3C<3)XG z?A1&3<m`MhduS>wAt#C>m|(*dzwSiBbicA}S)@$a-pRK%x<fW$CSWK~q)p2_2SA9~ zM5J^?JF`kNWncgEX1%pIqTlD|o>~PV--G-Cv-%9G&R((ya(;eK4Sh0ITjbh(#A&C4 z<;>Lox>C5Cn<+yn!Vkd#_#;8lWY?p2)EGsr+#ytubJ)X#zrR6+ciFh!+OH&(5Qg(A ztKJ<z>a_C>H|1Kc`kFYlkjn6JJJwUeS%={dhYBwGuhF{yl8SpIm+xCLPK|(v8|bEY ztl<^UAX{cx at _rBVPeW3CY4&%~$VvJLv9soVn!xrP=UCbgd?Aso$uA=MUZIjf4`|+P zd06$v!t}VDba}xow4>HAXN)i?;K|jQgl!xxOJ60>)xK50z#;4w)bTEee}3VMAcY)9 z&|R4isV)B?Hbv<?k%n4mZ0?7iiHes?yoE>qjsP<ri>CeV^146FSX`+tP`pl|tWN^4 zwzk6JiE0MmhBMnCUt)JMBDAV8V%<p at j=b4KIU=9Z-RVinV-=-2F$E|e`9YF!>cf7< ztLMSTE(o}Tv}_4KUC;lxaSTso&(mnTvK-IgD|)S at k=gp^nJTs%<jdNFHi2}wHxDD< z$31O1Me+3F@)^6iWBrq}4OT-VShY!L;gZE{Y00*5ie{CAM>)yZ^!e{wZ)WlBdHIC^ zw}|n|c^{|JDko`z2-0K*%8?es<9(2SA>~S!uopHm>embz0mNA;A}pYQ3-N~@rcPVi z6)#i%q1zE89q-{mD3pkOcYIiec+O{sB*|6k at gPU_glI+6{Bn_BH~vv=VrNVlSX2>{ zX7{pq+i)4%N2gGqoi;k=S)j7bUuS;U8fHQu0oJN-7cTY(^qgc0y=Xbx>r^Pp at 7`+Z zwtwnvAwgJDfy?Sm+~o-y+5M9DpscW`!v1rGxmxG%=Zs>iG!ff2w&$?cAuqzTNhz)O zM(C at gzp@d at u#~&u74$xRQ9G4TzFJUqGRtRT>R at V%LPs(kjV<&K_Uw>%dawE%FZ3}( z!#*VB89}ZUzdg}V%j_+E3Lh`h+r}X*{th01BUdFGa_z>+VIM*)I81kI)?Udw`0R5` z+g^aK8H>AHuS}XR<#(S3r^$J%!gY#DevsizVqwhL9l^hyzEo#CB`B8?jUm*GZ<ZK7 z88wDGi+G>-+$61nBn6Z98l{I3r at r(DWxfe64Eql?=-d0`>?b89f^KT4N%fy4O{Ed# z6 at iz$7+wU`%thFjE?&7W0TdfYiPm4v|5}bKh}2(7{~cAruYd7_p^9OSIEp*8ly<sW zbNE@^_v^Q<_9&m2u}6lHCdnY(2D?`O#9B&m1J4`%6YGH}!|2)R6UtYmA)*)a*jb## zQ9Diy9r0^Bk)ykk7!@E|BD3k?{auL(SuK34A!V0;v=ecg!yfx<^mIa`_#lS0w_jzP ze}2B%Iry~5%%R%lWTx|<F7hp*LI7qw=;VVzv>@{PuwKMXq`IWp(=C)4Wr%^*-_E2^ zObg7H`##tzs!zR{H=#uQUoRasAZo~u;Q;Q~MW{!F^yx}cv_Y_lf;_3d$Z|VIit;*j zxyh+umUE!cD^qdwW_uN6<-L&0!Se+Q;rIVMBYneH%n1J|7Q*ezNx~Da5&~|*+nb8l zkz(k~4LYr(4Abm at eCo5yHvT4BztXJ`Y79i<dodQPF4iz`7e#fmm2#l<Wj5{VIyQY< zrz<@?R at Qg$ZJf5JR?T)Rd9FF-c-SNp08h|gUSJ?4FsKXtRJgvZB_?=G#xKyF!=k%x zc{<#p2=FvCX$qyC&U#Tc?$ld(BXkvB0uJ|c)_(_y4plj+`K7S`a^~uopZt(K4R4v; z5u!bhOc4C?-kx at a8-xzM-@cD~sn(XO6AK?4IQvOC&^LTDtcm&gei#}xTGt+(EcNO# z(U`QLMZ<UTs>xzt<+kakQD{<+Uz~}KmrpL{jG58<lT`~74$M)8VWS)^rL5#5^eGen z*W9(@r$zQj8}R&Nf1I~)U5u0uuZI1JC$zD(NX83DPgrzh|JAYy)mRjYlVY(8j9?ZF z#BVgcqpVZ{i5ZOCzVnzHcqUX%k at d#E0BOkx2F8zd{CmmA5=Z3scXfJ2a!5euQJ#O| zF|W5?%x`Lnf=_<h!_w!z=_Os7;gvZ)xgu)ME!{5T*y;MgT^d^`Kof(2aDo+Z;SwB+ zDU#WA+JZ8jD4|Wxd)C;ySxb>qYI!kCq{)xxjP)39jn}y&#}zhGhixai2d$(j;S0x0 zT>l(A&j#EQB3tm*S*6%scm)aq5{mIEgEVkB-9*VOb7rxCr`rdBS&Nb{JBk#I`c8Pj zG%C!Z&a+s9>_V&_qa_(h at 7sLN5=U2TP8R*m;R)Sbmuf4WPQR;+K;s at y10Vj9N^#*h zGV{upm2cG!Xs&x{zLGV~<%llH6kvRGD-w>0Z&_?8ae66Os*7M=$UppW+8Jw*au@~8 zuQ1*ecD^aPB_?d^*2a)#_71*D9dZMId*hdAc{3N+cDkLt&GJQ^tNu>5-RM;cKB^g9 z9pbPtW0<j8NlBAh)G+g!0U-P}^M^Bz*P(Z;DN_t<l57%uHA;e5$X;wYqUBpryO;Md zwP26r{j<qb%@Te&K9BhBCtW#DpV1DHfpy*p_dJ at kvEwf*Yz{0>3>gF at +Fl#saadGY z at 5!#qum?OVc#abZ`9NA(Q(w7^MST?0^t)5UC}p}wEa)@skjN at C)^36UCjYv5C`rIm zc2c5KWuD*g_UYsYz~6fVGpq{&ISBwi-cMY~g>id6HJXA?^6b~Rga{u^7jniI;3vwu z7vUWvgx5GjC5L}u<7?W1(vJ3`IX%?syEQ$&2HJOS2ooRJMEayAAG(Qm at Mh_}_1RUT zhG6rAs+!K(h|^cKEap6SdXkF_hB!0*l_&M~VIBOwUUv-JKM3q)ak0uOrv=Y!$QeaY z8bMiU)J?s=<KId8pC(@d7_r5?jBz524_>7b+?O`K=4PC%{!rCylf|6;G~m}R>$|mR zxkJa5acVN19j8}<-uGe~OJV*L>qh_z^8)?BgHFx}IZK6^>w{~}yH_3o-H{eQON4c6 zCtT*Ui|b>_So)qzA%z6}lUGET|4{yz(Lo+gU#&+dgoSHA+3jYNX)#XjV0k8wp*jKT zTo3dqve|eFan$UGd>nCd=SbF5#Xg&8v`;1>Y+ua~BW>fB_4?a*Gu%HH{$V-L4X@!v zCW0}JZ{f|@2j;}**5>|%j4)uKBe&2gfy#Ima at tZ+hPxNc>*`3(j8v424ie2W=B1=- zRGe2hp_cnzNVdZg_XV_f;Dkoh#DNQo-pyA|QC;9|U9K at IcDr|)a;?$WDB)*bWSLj+ z at chV$_(ibv*XlQ2Uj05a)a<sq^urbTH}_ip5V9jug_L!LbacjTfkL`?Q4*e=Mk3kH zB at +GcGW}Y0_=%W2m81P3wBmhl5{pp@&*%G3VXkF4>SGp6;vO_))UPopPUqU5V;k{w z*k3x at Uobvn1Sq7xZpMEw%R2WONQQTdTXUp}QE9D4nJzWu7DIfE$$w({I?)_}B^wj0 zGiP10A<<W^lWG<FiPm?7sxN=7MRF+K*F at Dkj>!e_Zk$OSwv907z_<(RAbxT7 at _QQ1 z>6tL62)QcX&Goq91b<8mQ?0hnUV<Ydx69c4gMn&i70zhf8F6aF=osL+44Nj_+BW?O zCX`L29*976nkfM(-)A|;lRy7+;I%d!SgMfSnAbV3P>E&rx$|`K?P!z_gD`!6pP$rD z#HES2Ay)G$+G_IwGPM)Tzw}mw8Pf1-KKZinNc_;+NrF9#@PS{IxmQY6qX~=6lwd#@ ze3LBFBo2B-_3ngUk~w9B;r7(fPYw)G<H`2F2091X0~vD(t?7t<GMk=(A?W3!Ry at 5{ zUJJ(xJ4;Jn0invoU&wC}Jq|prOxnbM#``cdt+ROMpUn44XncK+Z>>_6Jyxo|h$=nb zy at eOO!~b-vB3-Y43w(v?A##xCJFO~sSxeJS^)Tbcd`=Hpj;AKXY%K~eX0a1_<5w!q zcvc+=a|~2Xsg}}DDZjxxS&^sGUQg77c9W=odO~&=6{u!^U1%mXt_-A%(<h>r+G+gI z6AeO2_`VMM>uMPKok!bLiej{4V(Hc9tKEXuhcjg`gS#wgu%K;`&Mhl_`?o|_%7Mqu zl8UErJZcoLFV0aUTw at wR$A%Mzh at 2!5qyufX2R8pSKc%D4?fn;agOL{q+Xxeh6`Sg{ z4mi_FNUN53?(Pi#$$DaP{j(d!Xg1L#G3_D?H=AqFIV^hrCRUh9+|~1!`jUS({<Yc@ zp6O-puO;48;(IH&^45N$sxhB(y5<+yewmY$*W|xaxF~kQq_O)z%!Ga`6juvu_Sc1D zl?Df)+!yQD9H-8XF&FR0Evr2xFm2n|`KA!zJ;e0e9rd!WP^PS{5i0>K5b1&UC7z(q zg4sZQCYu1MM6Gu!7bFVl;nfds%Vqb4PCyUc1lV(H3=hIBSi*LVnSN-iq?3=`DpxBH zdM~b6YIJ646%>X5Ue<mfx~u5h51$i;!o<q1j}ENuJU?y$NYq7wxe2k%^K;Xg7_&^m z9TzK~tlbtkc}+$-)p-7hmvCklfNTplTVmRnnBtjS5RT=o>;(E*tbcHAjo1DMbkg!w z6HPomc<ku3G!Dbef_sk99OY!mG26o*132$KioiL!BnAtn(?_l*n2G*ezL7X1jT&2v z=<hdc^Y*L+=eo<cioNMg+_w)^@k?O*YlwOrowG1jgnGzHpf00bkGRWzs*XVxy+W|@ zT}3=~p*^nVq?bZoHb0BL;6Cn~+y at ECPBwFz7?tPC%i#@d-&KR+R;M<4_l3hhq{gA8 zghnD at 7bccZe?2@(Dw-@?5nyVo9{5S*O}OrkR7~FDvQ19nTkapPDi(<38pam7I-oaE zJ4H7MYAtw$&L!WS^LvNZ6Z<{l^E)4d2^G?-N^%h$0&&mq7~#PAO_qp$H}=;J$|+;r zvae<W-xg4RiX{7GsQ-JR&()@i`}bG&Kk=&UZQbzCP!A;k<kr$YWduv^#G`)d=w`iK zC8aQIOI`=28OhU6*$)I|`PDV6Udj at QEE@)V(Pwmu^wp;5B_yNU3=a2qC!zM-s5-8H z^|_*+F~pzcCyyr0D#2XppPS~QcRvj>;VI7ZV`R^P9Vp!M@^OFgdD!%IVGs=Q=B=yj z&oElk<@7i+j?Y>oWTWmU6 at 3vtO;t9w&6o#ZpHuc+O*v`#&<BQuh}Cen9hgG;dzNP% z<)no31qI1vX!p!L;aVb{>Hbsdw$P(6-%o5OQJjRczati1WZhh0iO at RJ)$u^VN}nbP zf_q{b(0ya{TEAiH{)Fut3w_v(c?=u-v-gf~T}tDA)+o04?I%9~2{KIhRMS_+M-&M+ zy|E|VNsO{gmJ(FBb~76d2!O{%r5|Mi*vUliv}3~D$?_swle$_*5>BvK)V6eZFZdMF z+i^e5uh at aKA;XpBy9e8sj3xwIq{p9IngP};%hde-^%=X~>dPWSjbcUyregiKW^Pe` ze6^3Ll)9iqY<RGQm at 0lMTMr7IT<l)8FAwL?sn?_`B~+6X|ITJtzvm|}gD|HuX&4e} z&g=!*!+NUwZZn$GaX^6`bk8wsa~T*UCFetwf83~@3W`oS=049F_m;wQyJ at r@P1 at a$ z<x(gIzQ`@X%OOnE*(6DYs|U0WB}2PKX*pdmW<v3P?>)JhWpYx&CRU-R^`CI+jFBK8 zPes2=Tsui~WvrDymXb3`O2{=4Nwz-QM=Jl?aA({A7mY+|#~E)m@=H0EpRQ{3%dDZZ zby<Us!Y8LPVV;;Dy@#A^dau(gbLE2NT8{Qks0t<;Q2g6S+P6J&fs7++cj=?wXrKRU z>+o`z#=QVdSyO#@C+$&yPe$@nOULf=0d#5p!LmiCzW9J>u;7T)2~e?>l2O3<>hHX9 zMVxZq9-iwwl)(238<wNlV-^(-FIhK)zQ8|t9r0zL{fu9jYPO1wOWl)+xC9%rCkmGL zeotrP{)YWI5K-x^{|%>4txVL8nzt4ZH5p&1u>P)_N;@KL(yokEX8We&?LjI%_Hr at C z3bCdZcFH|Sn8PE|Xg!C*Pdk;=h)M>pG(_cxoDG8p&-L~l+QIN at MKpV+%SH0u1 at Nzx zS*y9mZzh;3raAK^6)8R6hQ`hf4aS<j#OhbJhHOYz^rD0xGvQ%X>2w6CWb}Xz^!Z6r zMk_U8ShdwoUet8Xb?x~IB@%(8R&sJy=_|94P9~tX$Gf2FE0<R>-}8>DhZwpT9amH- z8+tNb=^ZpOQwFHhvW-cMt*W at RV1m6*c&`-=;vQeE6*h2rPM6zTbc2;Axfa|sTfu6e z3Fr(FV7psgpgV2BRrYXj_(?|dlRio;HjltxZggme`c17qDLz?IJw;sT?-|l}DKli> z;7`)U`C7}o!!0?l!;I>kXe5pZJvTduTbab_ at PvDM-e2d+grL7PgnbW7nY#S;PAbJQ z|Ae@&i70llWZUegF2pa_IDQ|uZr+nPv`R&hx at D89XPYA$gDWnZS*f_SUe#qjTFyLg z(?t0%fze&(;tST9aoYH_ff>LWTIh4*lgdipd<cVi;G$>|9UXZqDf89p+X}-Iobzhg zblc!>rA;Gf=%AL8LyhzBl8*#TdzgVfw)+WeX3ayRtH#)O{3<_S<IPR&S7AE5cq_n9 z2gXA5E=@*dhHbuRV`DZz&3yW$R{k_QH<PCkhwDe8pwz?ubQ2!d!~Kl32m8phWB-WW z+ri6G6MQQ*K5G22GDDTw_N5e5bRzk50Gkyv;TsSK_xdz&1>Nj_qEzV4k?W89&G@>b zj?Vq_uEh^ggMp6KjSy0FFRG+Vr at C~CZ*L^fKFvPre4P20-EIF%GHGADZ;y=T$HQE9 z?AJ)Z{l5eBcvGr3xdy#`;EEkJ$>lx3%l%J5tn&%??oaQZ#&E;F%OzJYG)@uMRp|3q z7527EP+kGk<JDF`3|r=RU%5 at 4*oH3U{(-KerY<r)o2u{%TvlYhHF(Ski?;sDZCLyg z${m%h?#Tuf$uY?DrQ%_mWS}xU>53BMD6Ps-5l^iQw1R|<&sTyT?ZMuvWbx0c13I6z zv-?n&Fy`z at Jj@fzM*3FHC!JCekgkc9^B5cRGyWz at dc=3P{e3tz7+%58f3>R2lDcka z5E14^S>pcurD^txXVRm8$8Frl`i70J2&Yyyf?l!1_OgGbRW4>R$JR50uyc&NJYr3z z8zpE6rkl;A#*>6fu-GeosD$JjW9n#H$B&YksT}0WC64{JT at NvQg&dpOQQAGEImdIM zZYI7$ysZft+~BK_BVN4-dzPiP>kJRatR<B(L$B%^{&bIKZp0*~DBY5x!JCd&{#rMA z^u`LewNv7y-?DFHP{~ArZ&fxc(#BrL?(goxJ?7rZo^`i4v;i at m`Dd)(r$DgBhe**b zC(#}%BLhHR2p+`Q7aA%$rr0TLb6}6QlJ-UXnaxbRg6NK5Hb+;^eh=CwA`{T=MTiUi z<~Z*JXsSHV)D{$qBC<WQvZ`;=a&^Q07;0z{k)_X3EW-#w%T{@98wkaIKKr2ZYq7vB z6EA)wa at zv7ojdr~iNU1ASUlY7K|thkOOF^xs4im5-S+jOV+?~mkGg~`3a3C}YW`g4 z_KTDv+~r9ftcc~-50O1pPox?k4DBK@{`0KP{5QC_d7rjH+v|I;bDWRHn1cEE`R5-o ze*4pitq>x0OFSY^3 at XTTEhWG9XwX88<W>*dO23yn;f;$4*0*^;4mugq?GquPiFaKq zC~Mor7|}PQ17;htS-!Zwq^E>|oS$YHJ1>4$z>SPK6t<=2KoF|W at 60c1e8KKcGBlX- zn<}R$-J6px6ME)9ph}~eDz#JaHYhh43Z$bDyeb_h#Tz$9-^k-j0Im5`nT-}TUvsJX z!M}{BNy9w9?Y?h8h0fajiXA3=8nXVySSNrznx-QccSwb at fThMKH9L4orWBwb;>K9x z3H|{nKs(m2$-yCN{T_pj1A~)}vRUuWf at IA6&OBQHNRzp<&)kZ%`#aa;X_&tg{yv`D z*We!H>tj<VFC#|GiYfMQp}qv6ivM0Ts^i9PQr#NZnu|%X1~Fhzh?yVf#JQ1cUGhgq zZJ$Q!qk5d2*CW2Af3*b&6(Bp>B|0z0!${K2i)S- at m>!bpAJjJ_9SbDfCgy>4jKo`X ziRSZno1P8}N$$R;ua#qpgXz#eDck)kh#-&$Zc7^Wx&6NyF_S3iS=ZK^`K#Ht+|RDd zLFl&jt&prC^>~Jefrn>?nK}(|r9xXGT(6Qdf at MRzV;ufkdF3n2-fvuM at eUetApOvg zq~sr+kbp*jDEZqVeFNo{;x1QO>;&4*=9+lH0OI(tuc2 at 8fPbl~Nqeot%5{nlRce3Q zG3LG9xS=4#`t>ne at 95?2MPz6DllXk!DrP>R`nCDwN2=QO_*9VgXXB at Vn)T^V+N_3M zYD_b+o47IqmjkPy9cy!w1R7+o!UQwJq^j3IpH9M${rwKOUnxA>%dxEE{c(urWIGSp z?Y(6uj-2T=VS*G+f={-O?7X>2Cp(&3a(#LDsIJxpmrL*3&QCP{o@^O#<XI6#B>mfR zy;dhvJWKT)eeu(xnFYb}HqeTwcev+_wb5HqUqK#|qSPo<?qI at 5q@8;q8T#OdB;YV& zjj3&1fcl0`_iTPuwZyUiXen at ql6nmvdSlhov4`j42(QmDheJ{_&nl+i-7JBMT=Jw+ zIj^=r2wlDoJ2ZBG^5<Lej4EC;T+_nj{=%Fgg_ChEnVe%mSOiz*Q>5_Fk!cBzdwxvh zfZHzz_Gcb7;*A~3io=zhArge!`xI at 3+2ShBE63@60%@gpJOEFeEDsA6W`7^O`Y<;O zNga~MXLF&C=Y9hb->I3#<qA#MsP9|TpP>PXECaa5F8IqQZ<lOr5<45xtwUVX+;^L* zYF=Ty0 at Z1msdCD6xi%gRr}9=0bl|1VHc6}cx4#f=&~4yR$Lf5x`Dik)#Qck`nkLC| z*2~-}B7;^~@YaNx?*yh&31XZYomsMxdU4aE#O=pO8^mPE<frJ#VM}WDl;;s86W^Y~ z9puKXL~*)|7 at zH!$`A;3+F9N_8=yp<Uwh&U=<9e=s at Y+mh^*o5L5bKs#oQTb1I|Bw zG|te;Gxi<8nBaUDpDlhX>{pt!qVIrQB4WvS<)XnApp`bTltHnD->XJyw^i4>_E9N; z8 at CU$_YQOfs4opXFw+5+E3TGGH$2fP^)?IWuePd5E2|&JEoD<A?syW%{zX*iR+n<@ zeJ9;|M)C=pYU!TdZ(5a&b~<CShwx1+54`?~UtwRR?$hFn7$Dst45&Dv;H4;<f)o3n ze<vkt5Eo8vaz<wjtZ4?bMpTks)!Kkaids0Fp19!BKL_T>&oxx<Ez(DCT=9E+em|OU zQ}H^-N~nA2`_kpq>Kp6GOnH`9!E0z68IY%ivwcx3`cOsC$_&b|mo4Tke%aBONxRh& zyB-eKJMfQ*k(ab3U^YzoB0aBIMj$=9MHk*HlzQ@&ttcsN4HDF)fJ~neY#)H<+L<nd zAW(Vwb`Ci9y6+71h|^P<`Q?O_8Gs%_I1utc#OBJ8+)nm^lS83z%g3|H&8$@~5h;2Y zpGNNwrbLs6lIzO~ol-B*1MxSDAi|+9<>M1FaUXee^<5w1QT-A!!8IL*9ecxp(B at _g zXKvj0b%Azv!6QB)oQI|))YE&OuK>Qc`*4H2xUjwbZwxBg%706pUWq0}>wTXOQgGR% zvW3-0N$|=#yR%mJ?#E=*K6*F*ba1G>0l2(b$r3gD7V<|O^KIkfBuXqQbP;y!{st9_ zyJ+tiUH!J59MD%q&V+9Q{E+F!7jd5&V=e6TD>t-~>g(JSJE0Ze;WRJ-_5_t at 1|tC2 z*OV!{Ysbv_=j0Fcx2MVc$BV72z%|Un3R^)tc$_QNGzv^_M(QhJcGSU)k+~Y!O7q8> zrJj=J6*$^!BltJ><C84<%4$A%$$gOq8RSA)5kXQ9iSk at ee(YEGiN$`APUewpz^gaF z7p8NP=JRtpyiD at V%-V(1yVRQ=Gd+8;!KJ(WuY)^qt^lKkZz^N!6GqWPJC~Fc(ZV=h zNp+7a6GP$F8gzd)#zw>K&P)@HqUu<@OVacqaR0yBJNIxX(>{(%Qj6pi(YB`1dWAVV zjA at 22&L-;+B{jwvr(tG{sTm?m=c06Etcod<$~h~9a#$gU4p at h<CCVzt3X$0nt9GyV z+V^_?*z0=#c%DDzy63(=zu$d7pXWROJ at +*(g^;VtT-#;Vn3?XFUIO#e=`FL~2k2*A znwN7edz;_ppWj<4>{F+w1z9C2N6s7%ZN71;MMWys!Ck*u_P1tT at eg&5M}Ph-$~l2o zvAuXuSvmzl>YD9YUS0V-hHy#tT5B%rQ+fRW;nj(RRo^x3;eE7FeRz6Ot*6t0ckBAo zt)sgV#+&T;<t;lccB{JG6u!8eu#$iJmFVMRhtL&uaLMOoKmO3x#a%Bdt$J#1<Ml4t zqq6yAO#2Iy=|1^pwCi`b6Z_4*UZ30PmC_qdc#tt_6Es=gF!<notDurJyj9~x9H%9z at X)^H#OU(bgYpqgdifm<7V_04UU#l!&X!iSW*(mG7&3a;Mduqi&K1=QJ6(Fo>`#nK z!I9g|n{yQKiZX)Yhmpekjj=^rN|Y+Fd@|~p|6o{8{B(`wm7}72FCns~zq?x;KQN$Q zSe&h%`Y?$s()Q!OYz<<KAv`)-;_JB-iD at TDX>zWuoD!z4Yi6!|nVol1?fBmI>9u#? z7omP{yjC}JXH{+Uq$s*yk33!PQ9gblC-VP)xb{cU%I;)!K6kTlQbGc)9O$-#vxDS_ zqcTI_6knzf4bBT$cwrxJ#$!>abQ%ZZL-P-05TGM>??EAfz67X;Aqh!hS<(UmZ6nw; z*NAOy)CfAF2Dud_Y#0^4d914UN63ht0 at d(h*eR1OP{4 at dz`HXPr1gQD^f{-1g zA0U=YHVt9`N5QB_i~+>J2#z*Jn;0AELtH5wh&_b?K^sHRNTm1!jYFYu1}Mnl1vQls zkML|?Kb#BEdT~whHv%+(!(rhN2rick=VIVYwm$-8Vq$_oq7i5`OiaMS!WkS255@@7 zT4?fTA0jP`$_`|40+|fRd|!$Wb1#Pgh0ZUubS>T-g|)O0BWzKiSS5l-VIfd(Bx0$v zxDYR%#96Xw6b_T^#$*PYF5JF#Ae+Wzvgu(EOIHkjzVa{7msP*i(})xf%~b3I3qu;i zkS1<uBu*^G(Ae{<`UU83<s_zWpkMfZDL262P}s%tub{<pJYrtNS7JU}pTDQS&Hpc9 zzSJdOti9~u&yU5Iil7D4LTC(5nAjQWug-j_I6o#kgu*cm459eb5G;m29`R-JANRMg zYjG^Zu|zE8^3Sa=J<5M&@WuPT(te>SxCkJ*pe|4sAOnD4FkPT7Kn4K8V7fqEfD8bF z!E}MT02u%TgXscw0Wtsx2Ga%V0%QOX45kaz1;_v(7)%$a3y=XoFqke-7a#+GU@%>v zE<gqV!C<;TU4RS#g28lwx&Rpf1cT`UbpbK}2nN#y>H=f{5DcaZ)CI@@AQ(&+s0)w* zKromtP!}KrfM76Ppe{fL0Ks6oKwW?g0D}K9T{2%zde9i+;~iY_ISzA)aeWC1DYhNa z+|Bm*+cr{w*LIcrW1`~8MjJovbNsqZ{A=IX9lhutyRTnOLnd~`jm}J&Co+eFRs{`0 zb=}iW!c{W!3Un at dJ3LnHJp6ru><uW~r`4L+X|N(M-qWIM)6+V~f&JPeyVWo?w#Mh6 zD%boc;HRr*LPxfYlxo$i8 at 9^WFX%ZsQYCU|ziI4D94<0u2~39Dg}vB!>XtcqgHj5O z1*^^p*139G+Z1+RF6j$@Z<NqKdU*nNHYxvTTvnk?W!C!23Zu$+l;j*zL+!B7DYt#6 zx(3%bXlIixJWNm5ydT}~)BvOC9U<dX12HF}(!6=8S?RLm)R?mbr=D%jd134B-#RGe zg^C at PKT&KoS88bIb0DG``-YIOWpdkR>aAun?ZeF|tVX<iHLgU*UCCFK3DuF?1`FHS zam=#1?4sX at r%;%~>T7E~(`J}m!PUHi(bLVYHpHmNNw4(m+GU$~y|xo`?53n(s}vEo zYx%^5-q8TFsG&U&4Th$zV~1sK><bP2+T&Yjg*F0;%)VGF_I8z<mE(F%Pa>$nYn%$# zNFLF{^d>kqmSK6i>=H&hc3U*H{a%H#0{X%xix7vT<beCNO0QiG6mp`g51#Q~hMk_+ zh&K&5Re(S5*!=F-=$4vy(~^61eH9dm>xps#DQ96sK_^6JHe08wEyc^i2C<?4S$y}) zl%25^+Q at z6?p)N9p|Rpz(z3_WS<eoYj_JZ7$r>7d^jVC%v8nX^$$MA&8Z_^|9t;u& zpOun~U#C^Jx5~%ydY7!Nx?<JU#~$I~ZxiuKQR(iEN2E9S(3`)BkX*Bz1q<b0Ro*f< z9I92H8^Gq3s>TjxiZa%w1{3A%W3IGL?QX<(kI55a;sa=T>GVUx8p&{N6NB<|O~VHE zn~7UDAGEwtlHK)l%Am`QxO^#R`QF`Tb|p#GF5g`qY<G%&bv=_FAtUhs`|aG=YRRmzB7NEKQ&n^xTBe;hFTm_J%jD}Po;X&d;M_2DJ2G?{A_42cmZiPA$aZpytc)AdncJH2 zVR!@4r05q?c7nw&$F|k<kQ)1GsHc?TQK3*l`Ij~Pl;Y8x(mH-<IjPjjAuPj_;{wAu zr^1Yjy;N!ZypNQ`xB;~{C)0h at vtUGZPXX)AI9%1<P9i^D#YS6t=g%iP|Kom(M`I0H z+ZUrdICFwR-vY+e{egz_h1knK<v?W4uj+g<<r(cGn%)rS6y2C6o1+-_DYh*lFi{}q zS^TJ;q|3K1e$%(o$Y1E*a*MhK=~e4ytvX<@lkN<iiXvgp+>XTO9gh=9nUbHHm3e-v z-(R7mIdOaQIRAz1OoX8vcWl?QsG47o<Tk5uR!>zv`t6Ry!HNp+phnk6J~5%LO^CC0 z7i$r2)^U`PidPeQBG}x95wdK3Bl*%s|1)pr5`tMXhQrc_yRIszT*xQodF#+ZWH!$T z@>BZq-Um%J@;(f&jOicy=n+#?_PWJdvy~ov-RNURprXHv3boVas%CI~&!^WD<OhVG b&>~4K#J!RyhDhQ39}w7CZ6jt|c*p($EuLSu literal 0 HcmV?d00001 diff --git a/wui/src/public/javascripts/jquery.jgrowl.js b/wui/src/public/javascripts/jquery.jgrowl.js new file mode 100644 index 0000000..b803de8 --- /dev/null +++ b/wui/src/public/javascripts/jquery.jgrowl.js @@ -0,0 +1,204 @@ +/** + * jGrowl 1.1.0 + * + * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) + * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. + * + * Written by Stan Lemon <stanlemon at mac.com> + * Last updated: 2008.06.13 + * + * jGrowl is a jQuery plugin implementing unobtrusive userland notifications. These + * notifications function similarly to the Growl Framework available for + * Mac OS X (http://growl.info). + * + * Changes in 1.1.0 + * - Multiple container and instances. + * - Standard $.jGrowl() now wraps $.fn.jGrowl() by first establishing a generic jGrowl container. + * - Instance methods of a jGrowl container can be called by $.fn.jGrowl(methodName) + * - Added glue preferenced, which allows notifications to be inserted before or after nodes in the container + * - Added new log callback which is called before anything is done for the notification + * - Corner's attribute are now applied on an individual notification basis. + * + * Changes in 1.0.4 + * - Various CSS fixes so that jGrowl renders correctly in IE6. + * + * Changes in 1.0.3 + * - Fixed bug with options persisting across notifications + * - Fixed theme application bug + * - Simplified some selectors and manipulations. + * - Added beforeOpen and beforeClose callbacks + * - Reorganized some lines of code to be more readable + * - Removed unnecessary this.defaults context + * - If corners plugin is present, it's now customizable. + * - Customizable open animation. + * - Customizable close animation. + * - Customizable animation easing. + * - Added customizable positioning (top-left, top-right, bottom-left, bottom-right, center) + * + * Changes in 1.0.2 + * - All CSS styling is now external. + * - Added a theme parameter which specifies a secondary class for styling, such + * that notifications can be customized in appearance on a per message basis. + * - Notification life span is now customizable on a per message basis. + * - Added the ability to disable the global closer, enabled by default. + * - Added callbacks for when a notification is opened or closed. + * - Added callback for the global closer. + * - Customizable animation speed. + * - jGrowl now set itself up and tears itself down. + * + * Changes in 1.0.1: + * - Removed dependency on metadata plugin in favor of .data() + * - Namespaced all events + * + * @todo Group by header. + */ +(function($) { + + /** jGrowl Wrapper - Establish a base jGrowl Container for compatibility with older releases. **/ + $.jGrowl = function( m , o ) { + // To maintain compatibility with older version that only supported one instance we'll create the base container. + if ( $('#jGrowl').size() == 0 ) $('<div id="jGrowl"></div>').addClass($.jGrowl.defaults.position).appendTo('body'); + // Create a notification on the container. + $('#jGrowl').jGrowl(m,o); + }; + + + /** Raise jGrowl Notification on a jGrowl Container **/ + $.fn.jGrowl = function( m , o ) { + if ( $.isFunction(this.each) ) { + var args = arguments; + + return this.each(function() { + var self = this; + + /** Create a jGrowl Instance on the Container if it does not exist **/ + if ( $(this).data('jGrowl.instance') == undefined ) { + $(this).data('jGrowl.instance', new $.fn.jGrowl()); + $(this).data('jGrowl.instance').startup( this ); + } + + /** Optionally call jGrowl instance methods, or just raise a normal notification **/ + if ( $.isFunction($(this).data('jGrowl.instance')[m]) ) { + $(this).data('jGrowl.instance')[m].apply( $(this).data('jGrowl.instance') , $.makeArray(args).slice(1) ); + } else { + $(this).data('jGrowl.instance').notification( m , o ); + } + }); + }; + }; + + $.extend( $.fn.jGrowl.prototype , { + + /** Default JGrowl Settings **/ + defaults: { + header: '', + sticky: false, + position: 'center', + glue: 'after', + theme: 'default', + corners: '10px', + check: 500, + life: 10000, + speed: 'normal', + easing: 'swing', + closer: true, + log: function(e,m,o) {}, + beforeOpen: function(e,m,o) {}, + open: function(e,m,o) {}, + beforeClose: function(e,m,o) {}, + close: function(e,m,o) {}, + animateOpen: { + opacity: 'show' + }, + animateClose: { + opacity: 'hide' + } + }, + + /** jGrowl Container Node **/ + element: null, + + /** Interval Function **/ + interval: null, + + /** Create a Notification **/ + notification: function( message , o ) { + var self = this; + var o = $.extend({}, this.defaults, o); + + o.log.apply( this.element , [this.element,message,o] ); + + var notification = $('<div class="jGrowl-notification"><div class="close">×</div><div class="header">' + o.header + '</div><div class="message">' + message + '</div></div>') + .data("jGrowl", o).addClass(o.theme).children('div.close').bind("click.jGrowl", function() { + $(this).unbind('click.jGrowl').parent().trigger('jGrowl.beforeClose').animate(o.animateClose, o.speed, o.easing, function() { + $(this).trigger('jGrowl.close').remove(); + }); + }).parent(); + + ( o.glue == 'after' ) ? $('div.jGrowl-notification:last', this.element).after(notification) : $('div.jGrowl-notification:first', this.element).before(notification); + + /** Notification Actions **/ + $(notification).bind("mouseover.jGrowl", function() { + $(this).data("jGrowl").pause = true; + }).bind("mouseout.jGrowl", function() { + $(this).data("jGrowl").pause = false; + }).bind('jGrowl.beforeOpen', function() { + o.beforeOpen.apply( self.element , [self.element,message,o] ); + }).bind('jGrowl.open', function() { + o.open.apply( self.element , [self.element,message,o] ); + }).bind('jGrowl.beforeClose', function() { + o.beforeClose.apply( self.element , [self.element,message,o] ); + }).bind('jGrowl.close', function() { + o.close.apply( self.element , [self.element,message,o] ); + }).trigger('jGrowl.beforeOpen').animate(o.animateOpen, o.speed, o.easing, function() { + $(this).data("jGrowl").created = new Date(); + }).trigger('jGrowl.open'); + + /** Optional Corners Plugin **/ + if ( $.fn.corner != undefined ) $(notification).corner( o.corners ); + + /** Add a Global Closer if more than one notification exists **/ + if ( $('div.jGrowl-notification:parent', this.element).size() > 1 && $('div.jGrowl-closer', this.element).size() == 0 && this.defaults.closer != false ) { + $('<div class="jGrowl-closer">[ close all ]</div>').addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen, this.defaults.speed, this.defaults.easing).bind("click.jGrowl", function() { + $(this).siblings().children('div.close').trigger("click.jGrowl"); + + if ( $.isFunction( self.defaults.closer ) ) self.defaults.closer.apply( $(this).parent()[0] , [$(this).parent()[0]] ); + }); + }; + }, + + /** Update the jGrowl Container, removing old jGrowl notifications **/ + update: function() { + $(this.element).find('div.jGrowl-notification:parent').each( function() { + if ( $(this).data("jGrowl") != undefined && $(this).data("jGrowl").created != undefined && ($(this).data("jGrowl").created.getTime() + $(this).data("jGrowl").life) < (new Date()).getTime() && $(this).data("jGrowl").sticky != true && + ($(this).data("jGrowl").pause == undefined || $(this).data("jGrowl").pause != true) ) { + $(this).children('div.close').trigger('click.jGrowl'); + } + }); + + if ( $(this.element).find('div.jGrowl-notification:parent').size() < 2 ) { + $(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose, this.defaults.speed, this.defaults.easing, function() { + $(this).remove(); + }); + }; + }, + + /** Setup the jGrowl Notification Container **/ + startup: function(e) { + this.element = $(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>'); + this.interval = setInterval( function() { jQuery(e).data('jGrowl.instance').update(); }, this.defaults.check); + + if ($.browser.msie && parseInt($.browser.version) < 7) $(this.element).addClass('ie6'); + }, + + /** Shutdown jGrowl, removing it and clearing the interval **/ + shutdown: function() { + $(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove(); + clearInterval( this.interval ); + } + }); + + /** Reference the Defaults Object for compatibility with older versions of jGrowl **/ + $.jGrowl.defaults = $.fn.jGrowl.prototype.defaults; + +})(jQuery); \ No newline at end of file diff --git a/wui/src/public/javascripts/ovirt.js b/wui/src/public/javascripts/ovirt.js index e0aa222..829738f 100644 --- a/wui/src/public/javascripts/ovirt.js +++ b/wui/src/public/javascripts/ovirt.js @@ -21,7 +21,7 @@ function get_selected_checkboxes(formid) function validate_selected(selected_array, name) { if (selected_array.length == 0) { - alert("Please select at least one " + name + " to continue") + $.jGrowl("Please select at least one " + name + " to continue") return false } else { return true @@ -43,7 +43,7 @@ function add_hosts(url) $('.tab_nav li.current a').click() } if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -63,7 +63,7 @@ function add_storage(url) $('.tab_nav li.current a').click() } if (data.alert) { - alert(data.alert); + $.jGrowl(data.alert); } }, 'json'); } @@ -86,7 +86,7 @@ function ajax_validation(response, status) } } if (response.alert) { - alert(response.alert) + $.jGrowl(response.alert) } } } diff --git a/wui/src/public/stylesheets/jquery.jgrowl.css b/wui/src/public/stylesheets/jquery.jgrowl.css new file mode 100644 index 0000000..7f558f1 --- /dev/null +++ b/wui/src/public/stylesheets/jquery.jgrowl.css @@ -0,0 +1,125 @@ + +div.jGrowl { + padding: 10px; + z-index: 9999; +} + +/** Special IE6 Style Positioning **/ +div.ie6 { + position: absolute; +} + +div.ie6.top-right { + right: auto; + bottom: auto; + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.top-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-right { + left: expression( ( 0 - jGrowl.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.ie6.bottom-left { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 - jGrowl.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); +} + +div.id6.center { + left: expression( ( 0 + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' ); + top: expression( ( 0 + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' ); + width: 100%; +} + +/** Normal Style Positions **/ +body > div.jGrowl { + position: fixed; +} + +body > div.jGrowl.top-left { + left: 0px; + top: 0px; +} + +body > div.jGrowl.top-right { + right: 0px; + top: 0px; +} + +body > div.jGrowl.bottom-left { + left: 0px; + bottom: 0px; +} + +body > div.jGrowl.bottom-right { + right: 0px; + bottom: 0px; +} + +body > div.jGrowl.center { + top: 0px; + width: 50%; + left: 25%; +} + +/** Cross Browser Styling **/ +div.center div.jGrowl-notification, div.center div.jGrowl-closer { + margin-left: auto; + margin-right: auto; +} + +div.jGrowl div.jGrowl-notification, div.jGrowl div.jGrowl-closer { + background-color: #FFFFCC; + background-image: url(../images/icon_conf_message.png); + background-repeat: no-repeat; + color: #333333; + opacity: .95; + filter: alpha(opacity = 85); + zoom: 1; + width: 380px; + padding: 10px 10px 10px 40px; + margin-top: 5px; + margin-bottom: 5px; + font-family: Tahoma, Arial, Helvetica, sans-serif; + font-size: 12px; + text-align: left; + display: none; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border:#E7A543 solid 1px; +} + +div.jGrowl div.jGrowl-notification { + min-height: 18px; + +} + +div.jGrowl div.jGrowl-notification div.header { + font-weight: bold; + font-size: 10px; +} + +div.jGrowl div.jGrowl-notification div.close { + float: right; + font-weight: bold; + font-size: 12px; + cursor: pointer; + padding: 0 0 10px 12px; +} + +div.jGrowl div.jGrowl-closer { + height: 15px; + padding-top: 4px; + padding-bottom: 4px; + cursor: pointer; + font-size: 11px; + font-weight: bold; + text-align: center; + background-image:none; +} -- 1.5.5.1
Jason Guiditta
2008-Jul-16 18:55 UTC
[Ovirt-devel] [PATCH] incorporated tallen's notification UI enhancements.
On Tue, 2008-07-15 at 16:12 -0400, Scott Seago wrote:> <div class="jGrowl-notification"><div class="close">×</div><div > class="header">' + o.header + '</div><div class="message">' + message > + '</div></div>'ACK, though I would like to see a packed or min version of this new js. -j