From e4a88c348fe7f795c77f4a60273856ee1ef4d534 Mon Sep 17 00:00:00 2001 From: Chrysostomos Kolovos Date: Wed, 12 Mar 2014 12:52:32 +0200 Subject: [PATCH] Chrysostomos for scheduler --- plugins/scheduler/__init__.py | 42 - plugins/scheduler/static/css/scheduler.css | 141 -- plugins/scheduler/static/js/raphael-1.5.2.js | 7 - plugins/scheduler/static/js/raphael.js | 1 - plugins/scheduler/static/js/scheduler.js | 736 -------- plugins/scheduler/template/scheduler.html | 49 - plugins/scheduler2/__init__.py | 74 + plugins/scheduler2/asdf.txt | 0 plugins/scheduler2/static/css/scheduler2.css | 246 +++ .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_75_ffffff_1x400.png | Bin 0 -> 107 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../ui-bg_inset-soft_95_fef1ec_1x100.png | Bin 0 -> 123 bytes .../slider/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../slider/images/ui-icons_f6cf3b_256x240.png | Bin 0 -> 8884 bytes .../slider/jquery-ui-1.10.3.slider.min.css | 1614 +++++++++++++++++ .../scheduler2/static/img/closed-lock-15.png | Bin 0 -> 1094 bytes plugins/scheduler2/static/img/closed-lock.png | Bin 0 -> 2963 bytes plugins/scheduler2/static/img/loading.gif | Bin 0 -> 7050 bytes plugins/scheduler2/static/img/nitos_topo.png | Bin 0 -> 102626 bytes .../scheduler2/static/img/opened-lock-15.png | Bin 0 -> 1167 bytes plugins/scheduler2/static/img/opened-lock.png | Bin 0 -> 3264 bytes .../scheduler2/static/img/podcast-15-w.png | Bin 0 -> 350 bytes plugins/scheduler2/static/img/podcast-15.png | Bin 0 -> 1177 bytes plugins/scheduler2/static/img/podcast.png | Bin 0 -> 2185 bytes plugins/scheduler2/static/img/pushpin-1.png | Bin 0 -> 1898 bytes plugins/scheduler2/static/img/tools-15.png | Bin 0 -> 1149 bytes plugins/scheduler2/static/img/tools.png | Bin 0 -> 1887 bytes .../scheduler2/static/js/scheduler-helpers.js | 32 + plugins/scheduler2/static/js/scheduler2.js | 314 ++++ .../scheduler2/static/js/selectRangeWorker.js | 1 + .../js/slider/jquery-ui-1.10.3.slider.min.js | 6 + .../scheduler2/static/js/table-selector.js | 167 ++ plugins/scheduler2/templates/scheduler.html | 102 ++ portal/sliceview.py | 41 +- 43 files changed, 2585 insertions(+), 988 deletions(-) delete mode 100644 plugins/scheduler/__init__.py delete mode 100644 plugins/scheduler/static/css/scheduler.css delete mode 100644 plugins/scheduler/static/js/raphael-1.5.2.js delete mode 120000 plugins/scheduler/static/js/raphael.js delete mode 100644 plugins/scheduler/static/js/scheduler.js delete mode 100644 plugins/scheduler/template/scheduler.html create mode 100755 plugins/scheduler2/__init__.py mode change 100644 => 100755 plugins/scheduler2/asdf.txt create mode 100755 plugins/scheduler2/static/css/scheduler2.css create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_ffffff_1x400.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-bg_inset-soft_95_fef1ec_1x100.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_2e83ff_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_888888_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_cd0a0a_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/images/ui-icons_f6cf3b_256x240.png create mode 100755 plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css create mode 100755 plugins/scheduler2/static/img/closed-lock-15.png create mode 100755 plugins/scheduler2/static/img/closed-lock.png create mode 100755 plugins/scheduler2/static/img/loading.gif create mode 100755 plugins/scheduler2/static/img/nitos_topo.png create mode 100755 plugins/scheduler2/static/img/opened-lock-15.png create mode 100755 plugins/scheduler2/static/img/opened-lock.png create mode 100755 plugins/scheduler2/static/img/podcast-15-w.png create mode 100755 plugins/scheduler2/static/img/podcast-15.png create mode 100755 plugins/scheduler2/static/img/podcast.png create mode 100755 plugins/scheduler2/static/img/pushpin-1.png create mode 100755 plugins/scheduler2/static/img/tools-15.png create mode 100755 plugins/scheduler2/static/img/tools.png create mode 100755 plugins/scheduler2/static/js/scheduler-helpers.js create mode 100755 plugins/scheduler2/static/js/scheduler2.js create mode 100755 plugins/scheduler2/static/js/selectRangeWorker.js create mode 100755 plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js create mode 100755 plugins/scheduler2/static/js/table-selector.js create mode 100755 plugins/scheduler2/templates/scheduler.html mode change 100644 => 100755 portal/sliceview.py diff --git a/plugins/scheduler/__init__.py b/plugins/scheduler/__init__.py deleted file mode 100644 index caaaa521..00000000 --- a/plugins/scheduler/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -from unfold.plugin import Plugin - -class Scheduler(Plugin): - - # set checkboxes if a final column with checkboxes is desired - # pass columns as the initial set of columns - # if None then this is taken from the query's fields - # latitude,longitude, zoom : the starting point - def __init__ (self, query, query_all_resources, query_lease = None, **settings): - Plugin.__init__ (self, **settings) - self.query=query - self.query_all_resources = query_all_resources - self.query_all_resources_uuid = query_all_resources.query_uuid - self.query_lease = query_lease - self.query_lease_uuid = query_lease.query_uuid if query_lease else None - - def template_file (self): - return "scheduler.html" - - def template_env (self, request): - env={} - return env - - def requirements (self): - reqs = { - 'js_files' : [ "js/scheduler.js", - #"//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js", - "js/raphael.js", - "js/manifold.js", "js/manifold-query.js", - "js/spin-presets.js", "js/spin.min.js", "js/jquery.spin.js", - "js/unfold-helper.js", - "js/jquery-ui-timepicker-addon.js", "js/jquery-ui-sliderAccess.js", - ], - 'css_files' : [ "css/scheduler.css", - "css/jquery-ui-timepicker-addon.css", - ], - } - return reqs - - # the list of things passed to the js plugin - def json_settings_list (self): - return ['plugin_uuid','query_uuid', 'query_lease_uuid', 'query_all_resources_uuid'] diff --git a/plugins/scheduler/static/css/scheduler.css b/plugins/scheduler/static/css/scheduler.css deleted file mode 100644 index fbaede02..00000000 --- a/plugins/scheduler/static/css/scheduler.css +++ /dev/null @@ -1,141 +0,0 @@ -/* - $Id: toggle.css 12435 2009-03-11 15:07:00Z thierry $ - */ - -/* this class is used to store data that needs to get passed to javascript code */ -/* these elements are not meant to be rendered */ -.hidden { - display: none; -} -.center { - text-align: center; -} - -.scrollx { - overflow-x:scroll; - height: 340px; -} -.scrolly { -overflow-y : scroll; -} -/* space around various messages */ -div.my-slice-renewal { - margin: 30px; -} - -/* toggles for the nodes sections */ -div#toggle-container-my-slice-persons-current, -div#toggle-container-my-slice-nodes-current { - background: #f0f0f0; -} - -div#toggle-container-my-slice-persons-add, -div#toggle-container-my-slice-nodes-add { - background: #f0e0e0; -} - -/* the scheduler area */ -div#toggle-container-my-slice-nodes-reserve { - background: #def; -} - -/* where the graphics go */ -div#leases_area { - /* padding: 10px 25px; */ -} - -/* don't display the scheduler data table - not quite sure this works */ -table#leases_data { - display: none; -} - -/* the various controls for the scheduler */ -/* upper section, with selection mode */ -#leases_modes { padding: 10px; text-align: center; color: #333; } - -#leases_buttons { padding: 0px 10px 10px 10px; } -#leases_refresh { position: relative; left: 30%;} -#leases_submit { position: relative; left: 60%; } - - -/* column configuation style */ - -div#toggle-container-my-slice-nodes-configuration { - background: #f8f8f8; -} - -OPTION.out{background-color:white; color:black} -OPTION.in{background-color:#CAE8EA; color:#4f6b72} - -div.out{background-color:white; color:black} -div.in{background-color:#CAE8EA; color:#4f6b72} -div.selected{background-color:gray; color:black} -div.invisible{display:none} - -div.toggle-info { - padding: 10px 20px; - background-color: #cae8ea; - margin: 10px 10px; - -} - -div#scrolldiv { - border : solid 2px grey; - padding:4px; - width:300px; - height:180px; - overflow:auto; -} - -th,td.top { - vertical-align: top; - text-align: left; - padding:10px; -} - -td.smallright { - text-align: right; - width:20px; -} - -table.center { - margin-left:auto; - margin-right:auto; -} - -table.columnlist { - width:280px; -} - -td.header { - background-color: #CAE8EA; - text-align: center; - width:30px; -} - -span.header { - font-weight: bold; - color: #3399CC; -} - -a.source-url{ - font-weight: bold; -} - -span.gray{ - color: #555555; -} - -span.short { - height:10px; -} - -span.column-title { - font-size: 12px; - font-weight: bold; -} - -span.column-detail { - font-size: 11px; - font-style: italic; -} diff --git a/plugins/scheduler/static/js/raphael-1.5.2.js b/plugins/scheduler/static/js/raphael-1.5.2.js deleted file mode 100644 index e5e71261..00000000 --- a/plugins/scheduler/static/js/raphael-1.5.2.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Raphael 1.5.2 - JavaScript Vector Library - * - * Copyright (c) 2010 Dmitry Baranovskiy (http://raphaeljs.com) - * Licensed under the MIT (http://raphaeljs.com/license.html) license. - */ -(function(){function a(){if(a.is(arguments[0],G)){var b=arguments[0],d=bV[m](a,b.splice(0,3+a.is(b[0],E))),e=d.set();for(var g=0,h=b[w];g";bg=bf.firstChild;bg.style.behavior="url(#default#VML)";if(!(bg&&typeof bg.adj=="object"))return a.type=null;bf=null}a.svg=!(a.vml=a.type=="VML");j[e]=a[e];k=j[e];a._id=0;a._oid=0;a.fn={};a.is=function(a,b){b=x.call(b);if(b=="finite")return!O[f](+a);return b=="null"&&a===null||b==typeof a||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||J.call(a).slice(8,-1).toLowerCase()==b};a.angle=function(b,c,d,e,f,g){{if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return((h<0)*180+y.atan(-i/-h)*180/D+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)}};a.rad=function(a){return a%360*D/180};a.deg=function(a){return a*180/D%360};a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,G)){var e=b.length;while(e--)if(B(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(fb-d)return c-f+b}return c};function bh(){var a=[],b=0;for(;b<32;b++)a[b]=(~(~(y.random()*16)))[H](16);a[12]=4;a[16]=(a[16]&3|8)[H](16);return"r-"+a[v]("")}a.setWindow=function(a){h=a;g=h.document};var bi=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write("");e.close();d=e.body}catch(a){d=createPopup().document.body}var f=d.createTextRange();bi=bm(function(a){try{d.style.color=r(a)[Y](c,p);var b=f.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b[H](16)).slice(-6)}catch(a){return"none"}})}else{var h=g.createElement("i");h.title="Raphaël Colour Picker";h.style.display="none";g.body[l](h);bi=bm(function(a){h.style.color=a;return g.defaultView.getComputedStyle(h,p).getPropertyValue("color")})}return bi(b)},bj=function(){return"hsb("+[this.h,this.s,this.b]+")"},bk=function(){return"hsl("+[this.h,this.s,this.l]+")"},bl=function(){return this.hex};a.hsb2rgb=function(b,c,d,e){if(a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b){d=b.b;c=b.s;b=b.h;e=b.o}return a.hsl2rgb(b,c,d/2,e)};a.hsl2rgb=function(b,c,d,e){if(a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b){d=b.l;c=b.s;b=b.h}if(b>1||c>1||d>1){b/=360;c/=100;d/=100}var f={},g=["r","g","b"],h,i,j,k,l,m;if(c){d<0.5?h=d*(1+c):h=d+c-d*c;i=2*d-h;for(var n=0;n<3;n++){j=b+1/3*-(n-1);j<0&&j++;j>1&&j--;j*6<1?f[g[n]]=i+(h-i)*6*j:j*2<1?f[g[n]]=h:j*3<2?f[g[n]]=i+(h-i)*(2/3-j)*6:f[g[n]]=i}}else f={r:d,g:d,b:d};f.r*=255;f.g*=255;f.b*=255;f.hex="#"+(16777216|f.b|f.g<<8|f.r<<16).toString(16).slice(1);a.is(e,"finite")&&(f.opacity=e);f.toString=bl;return f};a.rgb2hsb=function(b,c,d){if(c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b){d=b.b;c=b.g;b=b.r}if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r;c=e.g;d=e.b}if(b>1||c>1||d>1){b/=255;c/=255;d/=255}var f=z(b,c,d),g=A(b,c,d),h,i,j=f;{if(g==f)return{h:0,s:0,b:f,toString:bj};var k=f-g;i=k/f;b==f?h=(c-d)/k:c==f?h=2+(d-b)/k:h=4+(b-c)/k;h/=6;h<0&&h++;h>1&&h--}return{h:h,s:i,b:j,toString:bj}};a.rgb2hsl=function(b,c,d){if(c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b){d=b.b;c=b.g;b=b.r}if(c==null&&a.is(b,F)){var e=a.getRGB(b);b=e.r;c=e.g;d=e.b}if(b>1||c>1||d>1){b/=255;c/=255;d/=255}var f=z(b,c,d),g=A(b,c,d),h,i,j=(f+g)/2,k;if(g==f)k={h:0,s:0,l:j};else{var l=f-g;i=j<0.5?l/(f+g):l/(2-f-g);b==f?h=(c-d)/l:c==f?h=2+(d-b)/l:h=4+(b-c)/l;h/=6;h<0&&h++;h>1&&h--;k={h:h,s:i,l:j}}k.toString=bk;return k};a._path2string=function(){return this.join(",")[Y](ba,"$1")};function bm(a,b,c){function d(){var g=Array[e].slice.call(arguments,0),h=g[v]("►"),i=d.cache=d.cache||{},j=d.count=d.count||[];if(i[f](h))return c?c(i[h]):i[h];j[w]>=1000&&delete i[j.shift()];j[L](h);i[h]=a[m](b,g);return c?c(i[h]):i[h]}return d}a.getRGB=bm(function(b){if(!b||!(!((b=r(b)).indexOf("-")+1)))return{r:-1,g:-1,b:-1,hex:"none",error:1};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none"};!(_[f](b.toLowerCase().substring(0,2))||b.charAt()=="#")&&(b=bi(b));var c,d,e,g,h,i,j,k=b.match(N);if(k){if(k[2]){g=T(k[2].substring(5),16);e=T(k[2].substring(3,5),16);d=T(k[2].substring(1,3),16)}if(k[3]){g=T((i=k[3].charAt(3))+i,16);e=T((i=k[3].charAt(2))+i,16);d=T((i=k[3].charAt(1))+i,16)}if(k[4]){j=k[4][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);k[1].toLowerCase().slice(0,4)=="rgba"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100)}if(k[5]){j=k[5][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360);k[1].toLowerCase().slice(0,4)=="hsba"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,g,h)}if(k[6]){j=k[6][s]($);d=S(j[0]);j[0].slice(-1)=="%"&&(d*=2.55);e=S(j[1]);j[1].slice(-1)=="%"&&(e*=2.55);g=S(j[2]);j[2].slice(-1)=="%"&&(g*=2.55);(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360);k[1].toLowerCase().slice(0,4)=="hsla"&&(h=S(j[3]));j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,g,h)}k={r:d,g:e,b:g};k.hex="#"+(16777216|g|e<<8|d<<16).toString(16).slice(1);a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1}},a);a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||0.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=0.075;if(b.h>1){b.h=0;b.s-=0.2;b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})}return c.hex};a.getColor.reset=function(){delete this.start};a.parsePathString=bm(function(b){if(!b)return null;var c={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},d=[];a.is(b,G)&&a.is(b[0],G)&&(d=bo(b));d[w]||r(b)[Y](bb,function(a,b,e){var f=[],g=x.call(b);e[Y](bc,function(a,b){b&&f[L](+b)});if(g=="m"&&f[w]>2){d[L]([b][n](f.splice(0,2)));g="l";b=b=="m"?"l":"L"}while(f[w]>=c[g]){d[L]([b][n](f.splice(0,c[g])));if(!c[g])break}});d[H]=a._path2string;return d});a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=C(j,3)*a+C(j,2)*3*i*c+j*3*i*i*e+C(i,3)*g,l=C(j,3)*b+C(j,2)*3*i*d+j*3*i*i*f+C(i,3)*h,m=a+2*i*(c-a)+i*i*(e-2*c+a),n=b+2*i*(d-b)+i*i*(f-2*d+b),o=c+2*i*(e-c)+i*i*(g-2*e+c),p=d+2*i*(f-d)+i*i*(h-2*f+d),q=(1-i)*a+i*c,r=(1-i)*b+i*d,s=(1-i)*e+i*g,t=(1-i)*f+i*h,u=90-y.atan((m-o)/(n-p))*180/D;(m>o||n1){x=y.sqrt(x);c=x*c;d=x*d}var z=c*c,A=d*d,C=(f==g?-1:1)*y.sqrt(B((z*A-z*u*u-A*t*t)/(z*u*u+A*t*t))),E=C*c*u/d+(a+h)/2,F=C*-d*t/c+(b+i)/2,G=y.asin(((b-F)/d).toFixed(9)),H=y.asin(((i-F)/d).toFixed(9));G=aH&&(G=G-D*2);!g&&H>G&&(H=H-D*2)}var I=H-G;if(B(I)>k){var J=H,K=h,L=i;H=G+k*(g&&H>G?1:-1);h=E+c*y.cos(H);i=F+d*y.sin(H);m=bt(h,i,c,d,e,0,g,K,L,[H,J,E,F])}I=H-G;var M=y.cos(G),N=y.sin(G),O=y.cos(H),P=y.sin(H),Q=y.tan(I/4),R=4/3*c*Q,S=4/3*d*Q,T=[a,b],U=[a+R*N,b-S*M],V=[h+R*P,i-S*O],W=[h,i];U[0]=2*T[0]-U[0];U[1]=2*T[1]-U[1];{if(j)return[U,V,W][n](m);m=[U,V,W][n](m)[v]()[s](",");var X=[];for(var Y=0,Z=m[w];Y"1e12"&&(l=0.5);B(n)>"1e12"&&(n=0.5);if(l>0&&l<1){q=bu(a,b,c,d,e,f,g,h,l);p[L](q.x);o[L](q.y)}if(n>0&&n<1){q=bu(a,b,c,d,e,f,g,h,n);p[L](q.x);o[L](q.y)}i=f-2*d+b-(h-2*f+d);j=2*(d-b)-2*(f-d);k=b-d;l=(-j+y.sqrt(j*j-4*i*k))/2/i;n=(-j-y.sqrt(j*j-4*i*k))/2/i;B(l)>"1e12"&&(l=0.5);B(n)>"1e12"&&(n=0.5);if(l>0&&l<1){q=bu(a,b,c,d,e,f,g,h,l);p[L](q.x);o[L](q.y)}if(n>0&&n<1){q=bu(a,b,c,d,e,f,g,h,n);p[L](q.x);o[L](q.y)}return{min:{x:A[m](0,p),y:A[m](0,o)},max:{x:z[m](0,p),y:z[m](0,o)}}}),bw=bm(function(a,b){var c=bq(a),d=b&&bq(b),e={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1];b.Y=a[2];break;case"A":a=["C"][n](bt[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x));d=b.y+(b.y-(b.by||b.y));a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x));b.qy=b.y+(b.y-(b.qy||b.y));a=["C"][n](bs(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1];b.qy=a[2];a=["C"][n](bs(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](br(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](br(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](br(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](br(b.x,b.y,b.X,b.Y));break}return a},h=function(a,b){if(a[b][w]>7){a[b].shift();var e=a[b];while(e[w])a.splice(b++,0,["C"][n](e.splice(0,6)));a.splice(b,1);k=z(c[w],d&&d[w]||0)}},i=function(a,b,e,f,g){if(a&&b&&a[g][0]=="M"&&b[g][0]!="M"){b.splice(g,0,["M",f.x,f.y]);e.bx=0;e.by=0;e.x=a[g][1];e.y=a[g][2];k=z(c[w],d&&d[w]||0)}};for(var j=0,k=z(c[w],d&&d[w]||0);j0.5)*2-1;C(e-0.5,2)+C(f-0.5,2)>0.25&&(f=y.sqrt(0.25-C(e-0.5,2))*g+0.5)&&f!=0.5&&(f=f.toFixed(5)-0.00001*g)}return p});b=b[s](/\s*\-\s*/);if(d=="linear"){var i=b.shift();i=-S(i);if(isNaN(i))return null;var j=[0,0,y.cos(i*D/180),y.sin(i*D/180)],k=1/(z(B(j[2]),B(j[3]))||1);j[2]*=k;j[3]*=k;if(j[2]<0){j[0]=-j[2];j[2]=0}if(j[3]<0){j[1]=-j[3];j[3]=0}}var m=bx(b);if(!m)return null;var n=a.getAttribute(I);n=n.match(/^url\(#(.*)\)$/);n&&c.defs.removeChild(g.getElementById(n[1]));var o=bG(d+"Gradient");o.id=bh();bG(o,d=="radial"?{fx:e,fy:f}:{x1:j[0],y1:j[1],x2:j[2],y2:j[3]});c.defs[l](o);for(var q=0,t=m[w];q1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(o);h[R](n,G.hex);n=="stroke"&&G[f]("opacity")&&bG(h,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity});break;case"gradient":(({circle:1,ellipse:1})[f](c.type)||r(o).charAt()!="r")&&bI(h,o,c.paper);break;case"opacity":i.gradient&&!i[f]("stroke-opacity")&&bG(h,{"stroke-opacity":o>1?o/100:o});case"fill-opacity":if(i.gradient){var H=g.getElementById(h.getAttribute(I)[Y](/^url\(#|\)$/g,p));if(H){var J=H.getElementsByTagName("stop");J[J[w]-1][R]("stop-opacity",o)}break}default:n=="font-size"&&(o=T(o,10)+"px");var K=n[Y](/(\-.)/g,function(a){return V.call(a.substring(1))});h.style[K]=o;h[R](n,o);break}}}bM(c,d);m?c.rotate(m.join(q)):S(j)&&c.rotate(j,true)},bL=1.2,bM=function(b,c){if(b.type!="text"||!(c[f]("text")||c[f]("font")||c[f]("font-size")||c[f]("x")||c[f]("y")))return;var d=b.attrs,e=b.node,h=e.firstChild?T(g.defaultView.getComputedStyle(e.firstChild,p).getPropertyValue("font-size"),10):10;if(c[f]("text")){d.text=c.text;while(e.firstChild)e.removeChild(e.firstChild);var i=r(c.text)[s]("\n");for(var j=0,k=i[w];jb.height&&(b.height=e.y+e.height-b.y);e.x+e.width-b.x>b.width&&(b.width=e.x+e.width-b.x)}}a&&this.hide();return b};bN[e].attr=function(b,c){if(this.removed)return this;if(b==null){var d={};for(var e in this.attrs)this.attrs[f](e)&&(d[e]=this.attrs[e]);this._.rt.deg&&(d.rotation=this.rotate());(this._.sx!=1||this._.sy!=1)&&(d.scale=this.scale());d.gradient&&d.fill=="none"&&(d.fill=d.gradient)&&delete d.gradient;return d}if(c==null&&a.is(b,F)){if(b=="translation")return cz.call(this);if(b=="rotation")return this.rotate();if(b=="scale")return this.scale();if(b==I&&this.attrs.fill=="none"&&this.attrs.gradient)return this.attrs.gradient;return this.attrs[b]}if(c==null&&a.is(b,G)){var g={};for(var h=0,i=b.length;h"));m.W=h.w=m.paper.span.offsetWidth;m.H=h.h=m.paper.span.offsetHeight;m.X=h.x;m.Y=h.y+Q(m.H/2);switch(h["text-anchor"]){case"start":m.node.style["v-text-align"]="left";m.bbx=Q(m.W/2);break;case"end":m.node.style["v-text-align"]="right";m.bbx=-Q(m.W/2);break;default:m.node.style["v-text-align"]="center";break}}};bI=function(a,b){a.attrs=a.attrs||{};var c=a.attrs,d,e="linear",f=".5 .5";a.attrs.gradient=b;b=r(b)[Y](bd,function(a,b,c){e="radial";if(b&&c){b=S(b);c=S(c);C(b-0.5,2)+C(c-0.5,2)>0.25&&(c=y.sqrt(0.25-C(b-0.5,2))*((c>0.5)*2-1)+0.5);f=b+q+c}return p});b=b[s](/\s*\-\s*/);if(e=="linear"){var g=b.shift();g=-S(g);if(isNaN(g))return null}var h=bx(b);if(!h)return null;a=a.shape||a.node;d=a.getElementsByTagName(I)[0]||cd(I);!d.parentNode&&a.appendChild(d);if(h[w]){d.on=true;d.method="none";d.color=h[0].color;d.color2=h[h[w]-1].color;var i=[];for(var j=0,k=h[w];j")}}catch(a){cd=function(a){return g.createElement("<"+a+" xmlns=\"urn:schemas-microsoft.com:vml\" class=\"rvml\">")}}bV=function(){var b=by[m](0,arguments),c=b.container,d=b.height,e,f=b.width,h=b.x,i=b.y;if(!c)throw new Error("VML container not found.");var k=new j,n=k.canvas=g.createElement("div"),o=n.style;h=h||0;i=i||0;f=f||512;d=d||342;f==+f&&(f+="px");d==+d&&(d+="px");k.width=1000;k.height=1000;k.coordsize=b_*1000+q+b_*1000;k.coordorigin="0 0";k.span=g.createElement("span");k.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";n[l](k.span);o.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d);if(c==1){g.body[l](n);o.left=h+"px";o.top=i+"px";o.position="absolute"}else c.firstChild?c.insertBefore(n,c.firstChild):c[l](n);bz.call(k,k,a.fn);return k};k.clear=function(){this.canvas.innerHTML=p;this.span=g.createElement("span");this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";this.canvas[l](this.span);this.bottom=this.top=null};k.remove=function(){this.canvas.parentNode.removeChild(this.canvas);for(var a in this)this[a]=bF(a);return true}}var ce=navigator.userAgent.match(/Version\\x2f(.*?)\s/);navigator.vendor=="Apple Computer, Inc."&&(ce&&ce[1]<4||navigator.platform.slice(0,2)=="iP")?k.safari=function(){var a=this.rect(-99,-99,this.width+99,this.height+99).attr({stroke:"none"});h.setTimeout(function(){a.remove()})}:k.safari=function(){};var cf=function(){this.returnValue=false},cg=function(){return this.originalEvent.preventDefault()},ch=function(){this.cancelBubble=true},ci=function(){return this.originalEvent.stopPropagation()},cj=(function(){{if(g.addEventListener)return function(a,b,c,d){var e=o&&u[b]?u[b]:b,g=function(e){if(o&&u[f](b))for(var g=0,h=e.targetTouches&&e.targetTouches.length;g1&&(a=Array[e].splice.call(arguments,0,arguments[w]));return new cC(a)};k.setSize=bU;k.top=k.bottom=null;k.raphael=a;function co(){return this.x+q+this.y}bO.resetScale=function(){if(this.removed)return this;this._.sx=1;this._.sy=1;this.attrs.scale="1 1"};bO.scale=function(a,b,c,d){if(this.removed)return this;if(a==null&&b==null)return{x:this._.sx,y:this._.sy,toString:co};b=b||a;!(+b)&&(b=a);var e,f,g,h,i=this.attrs;if(a!=0){var j=this.getBBox(),k=j.x+j.width/2,l=j.y+j.height/2,m=B(a/this._.sx),o=B(b/this._.sy);c=+c||c==0?c:k;d=+d||d==0?d:l;var r=this._.sx>0,s=this._.sy>0,t=~(~(a/B(a))),u=~(~(b/B(b))),x=m*t,y=o*u,z=this.node.style,A=c+B(k-c)*x*(k>c==r?1:-1),C=d+B(l-d)*y*(l>d==s?1:-1),D=a*t>b*u?o:m;switch(this.type){case"rect":case"image":var E=i.width*m,F=i.height*o;this.attr({height:F,r:i.r*D,width:E,x:A-E/2,y:C-F/2});break;case"circle":case"ellipse":this.attr({rx:i.rx*m,ry:i.ry*o,r:i.r*D,cx:A,cy:C});break;case"text":this.attr({x:A,y:C});break;case"path":var G=bp(i.path),H=true,I=r?x:m,J=s?y:o;for(var K=0,L=G[w];Kr)p=n.data[r*l];else{p=a.findDotsAtSegment(b,c,d,e,f,g,h,i,r/l);n.data[r]=p}r&&(k+=C(C(o.x-p.x,2)+C(o.y-p.y,2),0.5));if(j!=null&&k>=j)return p;o=p}if(j==null)return k},cr=function(b,c){return function(d,e,f){d=bw(d);var g,h,i,j,k="",l={},m,n=0;for(var o=0,p=d.length;oe){if(c&&!l.start){m=cq(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);k+=["C",m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k;k=["M",m.x,m.y+"C",m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]][v]();n+=j;g=+i[5];h=+i[6];continue}if(!b&&!c){m=cq(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j;g=+i[5];h=+i[6]}k+=i}l.end=k;m=b?n:c?l:a.findDotsAtSegment(g,h,i[1],i[2],i[3],i[4],i[5],i[6],1);m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cs=cr(1),ct=cr(),cu=cr(0,1);bO.getTotalLength=function(){if(this.type!="path")return;if(this.node.getTotalLength)return this.node.getTotalLength();return cs(this.attrs.path)};bO.getPointAtLength=function(a){if(this.type!="path")return;return ct(this.attrs.path,a)};bO.getSubpath=function(a,b){if(this.type!="path")return;if(B(this.getTotalLength()-b)<"1e-6")return cu(this.attrs.path,a).end;var c=cu(this.attrs.path,b,1);return a?cu(c,a).end:c};a.easing_formulas={linear:function(a){return a},"<":function(a){return C(a,3)},">":function(a){return C(a-1,3)+1},"<>":function(a){a=a*2;if(a<1)return C(a,3)/2;a-=2;return(C(a,3)+2)/2},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==0||a==1)return a;var b=0.3,c=b/4;return C(2,-10*a)*y.sin((a-c)*(2*D)/b)+1},bounce:function(a){var b=7.5625,c=2.75,d;if(a<1/c)d=b*a*a;else if(a<2/c){a-=1.5/c;d=b*a*a+0.75}else if(a<2.5/c){a-=2.25/c;d=b*a*a+0.9375}else{a-=2.625/c;d=b*a*a+0.984375}return d}};var cv=[],cw=function(){var b=+(new Date);for(var c=0;cd)return d;while(cf?c=e:d=e;e=(d-c)/2+c}return e}return n(a,1/(200*f))}bO.onAnimation=function(a){this._run=a||0;return this};bO.animate=function(c,d,e,g){var h=this;h.timeouts=h.timeouts||[];if(a.is(e,"function")||!e)g=e||null;if(h.removed){g&&g.call(h);return h}var i={},j={},k=false,l={};for(var m in c)if(c[f](m)){if(X[f](m)||h.paper.customAttributes[f](m)){k=true;i[m]=h.attr(m);i[m]==null&&(i[m]=W[m]);j[m]=c[m];switch(X[m]){case"along":var n=cs(c[m]),o=ct(c[m],n*!(!c.back)),p=h.getBBox();l[m]=n/d;l.tx=p.x;l.ty=p.y;l.sx=o.x;l.sy=o.y;j.rot=c.rot;j.back=c.back;j.len=n;c.rot&&(l.r=S(h.rotate())||0);break;case E:l[m]=(j[m]-i[m])/d;break;case"colour":i[m]=a.getRGB(i[m]);var q=a.getRGB(j[m]);l[m]={r:(q.r-i[m].r)/d,g:(q.g-i[m].g)/d,b:(q.b-i[m].b)/d};break;case"path":var t=bw(i[m],j[m]);i[m]=t[0];var u=t[1];l[m]=[];for(var v=0,x=i[m][w];v= lease[1]) && (timestamp < (lease[1] + lease[2] * 1800)))) { - result = lease; - return false; // stop each - } - }); - -/* - $.each(Array(scheduler.myLeases, scheduler.allLeases), function(i, array) { - $.each(array, function(i, lease) { - if (lease[0] == urn) { - if ((timestamp >= lease[1]) && (timestamp < (lease[1] + lease[2] * 1800))) { - result = lease; - - return false; - } - } - }); - if (result) - return false; - }); -*/ - return result; - }, - - /* Iterative search through raphael.js objects, no forEach, no getById in the current version */ - _lease_element_find: function(urn, start_time) - { - var date = new Date(start_time*1000); - var pos = this._paper.top; - while (pos) { - if (pos.key == urn + "-" + date) - return pos; - pos = pos.prev; - } - return null; - }, - - /** - * @brief Draw - */ - _draw: function() - { - var canvas_id = this._canvas_id; - var o = this.options; - - var total_width = o.x_nodelabel + this.nb_grains() * this.options.leases_w; - var total_height = 2 * o.y_header /* the timelabels */ - + 2 * o.y_sep /* extra space */ - + o.y_node /* all-nodes & timebuttons row */ - + (this._resources.length) * (o.y_node + o.y_sep); /* the regular nodes and preceding space */ - - /* reuse for paper if exists with same size, or (re-)create otherwise */ - var paper; - if (this._paper == null) { - paper = Raphael (canvas_id, total_width + o.x_sep, total_height); - } else if (this._paper.width==total_width && this._paper.height==total_height) { - paper=this._paper; - paper.clear(); - } else { - $("#"+canvas_id)[0].innerHTML=""; - //this.elmt().html(); - paper = Raphael (canvas_id, total_width + o.x_sep, total_height); - } - this._paper = paper; - - /* the path for the triangle-shaped buttons */ - var timebutton_path = "M1,0L"+(this.options.leases_w-1)+",0L"+(this.options.leases_w/2)+","+o.y_header+"L1,0"; - - var axisx = this._axisx; - var axisy = this._resources; - - /* maintain the list of nodelabels for the 'all nodes' button */ - this._nodelabels = []; - - - /* create the time slots legend */ - var top = 0; - var left = o.x_nodelabel; - - var daymarker_height = 2*o.y_header + 2*o.y_sep + (axisy.length + 1) * (o.y_node + o.y_sep); - var daymarker_path = "M0,0L0," + daymarker_height; - - var half_daymarker_off= 2*o.y_header + o.y_sep; - var half_daymarker_path="M0," + half_daymarker_off + "L0," + daymarker_height; - - var col=0; - for (var i=0, len = axisx.length; i < len; ++i) { - /* pick the printable part */ - var timelabel = axisx[i][1]; - var y = top + o.y_header; - if (col % 2 == 0) - y += o.y_header; - col +=1; - /* display time label */ - var timelabel = paper.text(left, y, timelabel).attr(txt_timelabel).attr({"text-anchor": "middle"}); - /* draw vertical line */ - var path_spec = "M" + left + " " + (y+o.y_header / 2) + "L" + left + " " + this.total_height; - var rule = paper.path(path_spec).attr(attr_rules); - /* show a day marker when relevant */ - var timestamp = parseInt(axisx[i][0]); - if ((timestamp % (24 * 3600)) == 0) { - paper.path(daymarker_path).attr({'translation': left + ',' + top}).attr(attr_daymarker); - } else if ( (timestamp%(12*3600))==0) { - paper.path(half_daymarker_path).attr({'translation': left + ',' + top}).attr(attr_daymarker); - } - left += o.leases_w; - } - - ////////// the row with the timeslot buttons (the one labeled 'All nodes') - this.granularity = this.min_granularity; // XXX axisx[1][0]-axisx[0][0]; - - // move two lines down - top += 2 * o.y_header + 2 * o.y_sep; - left = o.x_nodelabel; - // all nodes buttons - var allnodes = paper.text(o.x_nodelabel - o.x_sep, top + o.y_node / 2, "All nodes").attr(txt_allnodes) - .attr({"font-size": o.y_node, "text-anchor": "end", "baseline": "bottom"}); - //allnodes.scheduler = this; - allnodes.click(this._allnodes_click); // XXX click - - // timeslot buttons [it's the triangles above the slots] - for (var i = 0, len = axisx.length; i < len; ++i) { - var timebutton = paper.path(timebutton_path).attr({'translation':left + ',' + top}).attr(attr_timebutton); - timebutton.from_time = axisx[i][0]; - timebutton.scheduler = this; - timebutton.click(this._timebutton_click); - left += (o.leases_w); - } - - //////// the body of the scheduler : loop on nodes - top += o.y_node + o.y_sep; - - var data_index = 0; - this.leases = []; /* XXX ??? XXX */ - - for (var i = 0, len = axisy.length; i < len; ++i) { - var urn = axisy[i][0]; - var nodename = axisy[i][1]; - var type = axisy[i][2]; - left = 0; - /* - * MODIFIED font-size - var nodelabel = paper.text(o.x_nodelabel-x_sep,top+y_node/2,nodename).attr(txt_nodelabel) - .attr ({"font-size":y_node, "text-anchor":"end","baseline":"bottom"}); - */ - var nodelabel = paper.text(o.x_nodelabel - o.x_sep, top + o.y_node / 3, nodename).attr(txt_nodelabel) - .attr({"font-size": "12px", "text-anchor": "end","baseline": "bottom"}); - - this._nodelabel_select(nodelabel, 1); // By default we select all nodes - nodelabel.scheduler = this; - nodelabel.click(this._nodelabel_click); //click action works here - this._nodelabels.push(nodelabel); - - // lease_methods.init_free(nodelabel.click, lease_methods.click_mine); - //lease_methods.init_free(nodelabel.lease); - - left += o.x_nodelabel; - - // data index contains the full array of leases - // not the same amount of grains per node - - // NOTE: remembering the previous lease might help for long leases. - var grain=0; - while (grain < this.nb_grains()) { - - if (l = this._lease_find(urn, this._initial_timestamp + grain * 1800)) { - slicename = l.slice_id; - } else { - slicename = ""; - } - - //lease_id = this.data[data_index][0]; - //slicename = this.data[data_index][1]; - /* Duration should not be the lease duration, but the grain */ - var duration = 1; // this.data[data_index][2]; - - var lease = paper.rect(left, top, o.leases_w * duration, o.y_node, o.radius); - lease.scheduler = this; // we record a pointer to the scheduler in the lease element - //lease.lease_id=lease_id; - lease.nodename = nodename; - lease.urn = urn; - lease.nodelabel = nodelabel; - - if (slicename == "") { - lease.initial = "free"; - this._lease_init_free(lease); - } else if (slicename == o.slicename) { - lease.initial = "mine"; - this._lease_init_mine(lease); - } else { - lease.initial = "other"; - this._lease_init_other(lease, slicename); - } - - lease.from_time = axisx[grain % this.nb_grains()][0]; - grain += duration; - lease.until_time = axisx[grain % this.nb_grains()][0]; - - /* We set a key to the lease element to find it later in the paper thanks to this._lease_element_find() */ - lease.key = urn + '-' + lease.from_time; - - // and vice versa - this._lease_elements.push(lease); - // move on with the loop - left += o.leases_w * duration; - data_index += 1; - } - top += o.y_node + o.y_sep; - }; - }, /* _draw */ - - _init_axisx: function(currentDate) - { - this._axisx = Array(); - - if(currentDate == "") { - // creating timestamp of the current time - currentDate = new Date().getTime() / 1000; - } - this._initial_timestamp = currentDate; - //console.log(currentDate); - - // round it by granularity (becomes an Int) - var rounded = Math.round(currentDate / this.min_granularity) * this.min_granularity; - // Convert Int to Date - rounded = new Date(rounded * 1000); - // get hours and minutes in a 24h format 00:00 - var roundedHours = (rounded.getHours() < 10 ? '0' : '') + rounded.getHours(); - var roundedMinutes = (rounded.getMinutes() < 10 ? '0' : '') + rounded.getMinutes(); - - this._axisx.push(Array(rounded, roundedHours + ":" + roundedMinutes)); - - // Generate as many slots as we need - for(i = 0; i < this.options.leases_slots; i++) { - rounded = this.min_granularity + (rounded.getTime() / 1000); - rounded = new Date(rounded * 1000); - roundedHours = (rounded.getHours() < 10 ? '0' : '') + rounded.getHours(); - roundedMinutes = (rounded.getMinutes() < 10 ? '0' : '') + rounded.getMinutes(); - - this._axisx.push(Array(rounded, roundedHours + ":" + roundedMinutes)); - } - }, - - clear: function () - { - for (var i=0, len = this.leases.length; i0) ? 1 : 0; - for (var i=0, len=this._nodelabels.length; i= until_time) { - if (scan.current == "free") - relevant_free.push(scan); - else if (scan.current == "mine") - relevant_mine.push(scan); - } - } - // window.console.log("Found " + relevant_free.length + " free and " + relevant_mine.length + " mine"); - /* decide what to do, whether book or release */ - if (relevant_mine.length == 0 && relevant_free.length == 0) { - alert ("Nothing to do in this timeslot on the selected nodes"); - return; - } - // if at least one is free, let's book - if (relevant_free.length > 0) { - for (var i = 0, len = relevant_free.length; i < len; ++i) { - var lease = relevant_free[i]; - scheduler._lease_init_mine(lease, scheduler._lease_click_free); - } - // otherwise we unselect - } else { - for (var i = 0, len = relevant_mine.length; i < len; ++i) { - var lease = relevant_mine[i]; - scheduler._lease_init_free(lease, scheduler._lease_click_mine); - } - } - }, /* _timebutton_click */ - - /* --------------------------------------------------------------------- - * The nodelabel buttons - */ - - // set selected mode and render visually - _nodelabel_select: function (nodelabel, flag) - { - nodelabel.selected = flag; - nodelabel.attr({'font-weight': (flag ? 'bold' : 'normal')}); - // TODO - // - // loop on axis x and select each timebutton - // for (var i=0, len=axisx.length; i < len; ++i) - // figure out how to use timebutton_methods.click(); - - }, - - // toggle selected - _nodelabel_click: function (event) - { - this.scheduler._nodelabel_select( this, ! this.selected ); - }, - - - /* --------------------------------------------------------------------- - * The lease buttons - */ - _lease_init_free: function (lease, unclick) - { - var o = lease.scheduler.options; - lease.current = "free"; - // set color - lease.animate((lease.initial == "free") ? attr_lease_free_free : attr_lease_mine_free, o.anim_delay); - // keep track of the current status - // record action - lease.click(this._lease_click_free); - if (unclick) lease.unclick(unclick); - }, - - // find out all the currently free leases that overlap this one - _lease_click_free: function (event) - { - var scheduler = this.scheduler; - - scheduler._lease_init_mine(this, scheduler._lease_click_free); - //publish - //this.from_time - //this.urn - //this.until_time - var urn = this.urn - var start_time = this.from_time.getTime() / 1000; - var end_time = this.until_time.getTime() / 1000; - var duration = (end_time - start_time) / 1800; // XXX HARDCODED LEASE GRAIN - - /* Add a new lease : XXX should be replaced by a dictionary */ - /* - // Do we have a lease with the same urn just before or just after ? - //var removeIdBefore = null; - //var removeIdAfter = null; - var remove_lease_before = null; - var remove_lease_after = null; - // It is important to group leases, while this is technically - // equivalent, some testbeds such as IotLab limit the number of - // leases a user can have. - // XXX we might have several leases before or after if they have - // XXX not been grouped like this tool does - $.each(scheduler._leases, function(i, lease) { - if (lease[0] == urn) { - if (lease[1] + lease[2] * 1800 == start_time) { // XXX HARDCODED LEASE GRAIN - // Merge with previous lease - // removeIdBefore = i; - remove_lease_before = lease; - start_time = lease[1]; - duration += lease[2]; - } - if (lease[1] == end_time) { - // Merge with following lease - // removeIdAfter = i; - remove_lease_after = lease; - duration += lease[2]; - } - } - }); - //if (removeIdBefore != null) { - // scheduler._leases.splice(removeIdBefore , 1); - // if (removeIdAfter != null) - // removeIdAfter -= 1; - //} - //if (removeIdAfter != null) { - // scheduler._leases.splice(removeIdAfter , 1); - //} - - // We add the new lease, no need to push - var new_lease = [this.urn, start_time, duration]; - - // We send events, manifold will inform us about the change and we will react accordingly - /* - if (remove_lease_before != null) - manifold.raise_event(scheduler.options.query_lease_uuid, SET_REMOVED, remove_lease_before); - if (remove_lease_after != null) - manifold.raise_event(scheduler.options.query_lease_uuid, SET_REMOVED, remove_lease_after); - */ - manifold.raise_event(scheduler.options.query_lease_uuid, SET_ADD, new_lease); - //scheduler._leases.push([this.urn, start_time, duration]); - - //console.log(scheduler._leases); - //jQuery.publish('/update-set/' + scheduler.options.query_uuid, [scheduler._leases]); - - /* We need to inform manifold about the whole diff, in addition to maintaining our own structure */ - event.preventDefault(); - }, - - _lease_init_mine: function (lease, unclick) - { - var o = lease.scheduler.options; - lease.current = "mine"; - lease.animate((lease.initial == "mine") ? attr_lease_mine_mine : attr_lease_free_mine, o.anim_delay); - lease.click(this._lease_click_mine); - if (unclick) - lease.unclick(unclick); - }, - - /* TODO: remove selected lease from array _leases and publish change */ - _lease_click_mine: function (event) - { - var scheduler = this.scheduler; - // this lease was originally free but is now marked for booking - // we free just this lease - //console.log('this is mine'); - scheduler._lease_init_free(this, scheduler._lease_click_mine); - event.preventDefault(); - }, - - - lease_init_other: function (lease, slicename) - { - lease.animate (attr_lease_other,anim_delay); - /* a text obj to display the name of the slice that owns that lease */ - var otherslicelabel = lease.scheduler.paper.text (lease.attr("x")+lease.attr("width")/2, - // xxx - lease.attr("y")+lease.attr("height")/2,slicename).attr(txt_otherslice); - /* hide it right away */ - otherslicelabel.hide(); - /* record it */ - lease.label=otherslicelabel; - lease.hover ( function (e) {this.label.toFront();this.label.show();}, - function (e) {this.label.hide();} ); - } - - }); - - $.plugin('Scheduler', Scheduler); - -})(jQuery); diff --git a/plugins/scheduler/template/scheduler.html b/plugins/scheduler/template/scheduler.html deleted file mode 100644 index cd2e9c8e..00000000 --- a/plugins/scheduler/template/scheduler.html +++ /dev/null @@ -1,49 +0,0 @@ -
- - - - -

Date:

- -

Search:

- - - - - - -
- - -
diff --git a/plugins/scheduler2/__init__.py b/plugins/scheduler2/__init__.py new file mode 100755 index 00000000..a1057a4c --- /dev/null +++ b/plugins/scheduler2/__init__.py @@ -0,0 +1,74 @@ +from unfold.plugin import Plugin +import datetime +from datetime import timedelta + +class Scheduler2 (Plugin): + + + def __init__ (self, query, query_all_resources, query_lease = None, **settings): + Plugin.__init__ (self, **settings) + + self.query=query + self.query_all_resources = query_all_resources + self.query_all_resources_uuid = query_all_resources.query_uuid + self.query_lease = query_lease + query_lease.query_uuid if query_lease else None + + #granularity in minutes + granularity = 10 + #self.time_slots = [] + self.time_slots = self.createTimeSlots(granularity) + self.nodes = [ + ['Grid Nodes' , ['node016', 'node017', 'node018', 'node019', 'node020', 'node021', 'node029', 'node030', 'node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031','node031',]], + ['Other Nodes' , ['node022', 'node023', 'node024','node025', 'node026', 'node027', 'node028',]] + ] + + def template_file (self): + return "scheduler.html" + + def requirements (self): + reqs = { + 'js_files' : [ + 'js/scheduler2.js', + 'js/slider/jquery-ui-1.10.3.slider.min.js', + 'js/scheduler-helpers.js', + 'js/table-selector.js', + ], + 'css_files': [ + 'css/scheduler2.css', + 'css/slider/jquery-ui-1.10.3.slider.min.css', + ] + } + return reqs + + # the list of things passed to the js plugin + def json_settings_list (self): + # query_uuid will pass self.query results to the javascript + # and will be available as "record" in : + # on_new_record: function(record) + return ['plugin_uuid', 'domid', 'query_uuid', 'time_slots', 'nodes', 'query_lease_uuid', 'query_all_resources_uuid'] + + + def export_json_settings (self): + return True + + #Creates an Array with the timespans depending on granularity + def createTimeSlots (this, granularity): + #return type + time_slots = [] + #init times + time_s = datetime.time(0,00) + time_f = datetime.time(23,59) + now = datetime.datetime.now() + #calc diffs + dt_s = datetime.datetime.combine(now,time_s) + dt_f = datetime.datetime.combine(now,time_f) + #loop + while (dt_s < dt_f): + tmp = dt_s + dt_s = dt_s + datetime.timedelta(minutes=granularity) + ts = str(tmp.hour).zfill(2) + ':' + str(tmp.minute).zfill(2) + '-' + str(dt_s.hour).zfill(2) + ':' + str(dt_s.minute).zfill(2) + time_slots.append(ts) + #return + return time_slots + diff --git a/plugins/scheduler2/asdf.txt b/plugins/scheduler2/asdf.txt old mode 100644 new mode 100755 diff --git a/plugins/scheduler2/static/css/scheduler2.css b/plugins/scheduler2/static/css/scheduler2.css new file mode 100755 index 00000000..11334334 --- /dev/null +++ b/plugins/scheduler2/static/css/scheduler2.css @@ -0,0 +1,246 @@ +/* +# +# Copyright (c) 2012 NITLab, University of Thessaly, CERTH, Greece +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +# +# +# This is a MySlice plugin for the NITOS Scheduler +# NITOScheduler v8 +# +*/ +.m-t { + margin-top:5px; +} +.m-b { + margin-bottom:5px; +} +.m-none { + margin:0; +} + +.form-control { + padding-right: 30px; +} + +.form-control + .glyphicon { + position: absolute; + right: 0; + padding: 8px 27px; +} + +#time-range { + margin-top:10px; +} +#TopologyModal .modal-dialog { + width: 700px; +} +#TopologyModal .modal-body { + position: relative; + overflow-y: auto; + max-height: 100%; + padding: 15px; +} +#TopologyModal .modal-header, #TopologyModal .modal-body, #TopologyModal .modal-footer { + background: none repeat scroll 0 0 #FFFFFF; +} +#TopologyModal .modal-header { + border-radius: 11px 11px 0 0; +} +#TopologyModal .modal-body { + border-radius: 0 0 11px 11px; +} + +#scheduler .table { + background:#fff; +} + +#scheduler .control-label { + margin-top: 5px; +} +#lbltime { + display: inline-block; + font-size: 1.2em; + margin-top: 0; + padding: 6px; +} + +/** tables css **/ +#ShedulerNodes-scroll-container { + float: left; + overflow-x: scroll; + overflow-y: hidden; + width: 15%; +} +#ShedulerNodes { + border-collapse: collapse; + border-spacing: 0; + max-width: 500px; + width: 450px; + margin-top:55px; +} + +#ShedulerNodes th{ + height: 60px; +} + +#ShedulerNodes td{ + background: url("../img/podcast-15-w.png") no-repeat scroll 3px 50% #30196D; + border: 1px solid #CDCDCD; + color: #FFFFFF; + height: 27px; + padding: 0 3px 0 19px; +} + +#ShedulerNodes td.verticalIndex { + padding: 0 2px !important; +} + +#ShedulerNodes td .verticalText { + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + margin-left: -30px; + position: absolute; + transform: rotate(-90deg); +} + +#reservation-table-scroll-container { + overflow-x: scroll; + overflow-y: visible; + padding-bottom: 1px; + width:85%; +} + + +#scheduler-reservation-table { + border-spacing:0; + border-collapse:collapse; + margin-bottom: 0 !important; + overflow: auto; + width: 100%; +} + +#scheduler-reservation-table tr{ + background-color: #A6C9E2 ; +} + +#scheduler-reservation-table tr.even{ + background-color: #E0E0E0 ; +} + +/*background: url("../img/opened-lock-15.png") no-repeat scroll 50% 50% transparent;*/ +#scheduler-reservation-table td { + border: 1px solid #FFFFFF; + cursor: pointer; + height: 27px; + padding: 3px 0 2px; + text-align: center; + width: 25px; +} + +#scheduler-reservation-table td img{ + height: 15px; +} + +#scheduler-reservation-table td.fixed, #scheduler-reservation-table th.fixed{ + position:absolute; + width:4em; + top:auto; + border-right: 2px none black; +} + +#scheduler-reservation-table td.info, #scheduler-reservation-table th { + background: #30196D; + font-weight:normal; + color: #fff; + height: 25px; + padding: 0 3px; + width: auto; +} + +#scheduler-reservation-table th span { + display: block; + line-height: 3px; + margin: 0 auto; + padding: 0 5px; + width: 3px; +} + +#scheduler-reservation-table td.free { +} + +#scheduler-reservation-table td.closed { + background: url("../img/closed-lock-15.png") no-repeat scroll 50% 50% #DD4444; + cursor: not-allowed; +} + +#scheduler-reservation-table td.maintenance { + background: url("../img/tools-15.png") no-repeat scroll 50% 50% #EDA428; +} + +#scheduler-reservation-table td.free:hover ,#scheduler-reservation-table td.selected, #scheduler-reservation-table td.selected_tmp { + background: #25BA25; +} + +td.no-image { + background-image: none !important; + padding: 0 !important; +} + + +/*legend*/ + +.legend ol { + font-size: 0.8em; + list-style: none; + padding: 0; +} + +.legend ol li{ + background: #a6c9e2; /* Old browsers */ + background: -moz-linear-gradient(left, #a6c9e2 28px, #e0e0e0 28px); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, right top, color-stop(28px,#a6c9e2), color-stop(28px,#e0e0e0)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* Opera 11.10+ */ + background: -ms-linear-gradient(left, #a6c9e2 28px,#e0e0e0 28px); /* IE10+ */ + background: linear-gradient(to right, #a6c9e2 28px,#e0e0e0 28px); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a6c9e2', endColorstr='#e0e0e0',GradientType=1 ); /* IE6-9 */ + + padding: 3px 0 3px 30px; + width: 109px; +} + +.legend ol li.free{ + +} + +.legend ol li.closed{ + background: url("../img/closed-lock-15.png") no-repeat scroll 8px 50% #DD4444; +} + +.legend ol li.maintenance { + background: url("../img/tools-15.png") no-repeat scroll 8px 50% #EDA428; +} + +.legend ol li.selected { + background: #25BA25; +} diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png b/plugins/scheduler2/static/css/slider/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0y~yV9;P-U`XL$V_;zTl2TN~z`#)L>EalY(fIb9A>#oB z0S3bZ`zM)4s+63#z$ean)A;imdFy!gdm8$> literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png b/plugins/scheduler2/static/css/slider/images/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmV-#0FeKQP)A_imNInB0E88qd3L$(;RrLvs7wFwdZf^+TIW`^96B~roj1>R? N002ovPDHLkV1n!zAd>(9 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/plugins/scheduler2/static/css/slider/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 zcmV-r0Gj`aP)0EGXEP)8vNF!1D}z$MqqneEtr deEaG%*#L`p3$k0dg{lAm002ovPDHLkV1m&EEYko0 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_222222_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png b/plugins/scheduler2/static/css/slider/images/ui-icons_454545_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css b/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css new file mode 100755 index 00000000..3b7a2c17 --- /dev/null +++ b/plugins/scheduler2/static/css/slider/jquery-ui-1.10.3.slider.min.css @@ -0,0 +1,1614 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */ + + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { + border: 0; clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; +} +.ui-helper-clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.ui-helper-clearfix { + /*display: inline-block; */ + display:block; + min-height: 0; /* support: IE7 */ +} +/* required comment for clearfix to work in Opera \*/ +* html .ui-helper-clearfix { + height:1%; +} + +/* end clearfix */ +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* + * jQuery UI Resizable 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://api.jqueryui.com/resizable/ + */ + +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + z-index: 99999; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +/* + * jQuery UI Selectable 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/selectable/ + */ +.ui-selectable-helper { + position: absolute; + z-index: 100; + border:1px dotted black; +} + +/* + * jQuery UI CSS Framework 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size:13px; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #404040; } +.ui-widget-content a { color: #404040; } +.ui-widget-header { + font-weight:bold; + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border:1px solid #666; + + } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + + } + + +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { + background-position: 0 -15px; + color: #333; + text-decoration: none; + } + +.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ + + +.ui-state-highlight p, .ui-state-error p, .ui-state-default p{ + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin:7px 15px; +} +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + + + position: relative; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + + +} +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { + + + position: relative; + margin-bottom: 18px; + color: #ffffff; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + + +} +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } +.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f6cf3b_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + -khtml-border-top-left-radius: 4px; + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + -khtml-border-top-right-radius: 4px; + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + -khtml-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + -khtml-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; +} + + +/* Overlays */ + +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30; + filter:Alpha(Opacity=30); +} + +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30;filter:Alpha(Opacity=30); + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; +} + +/* + * jQuery UI Accordion 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/accordion/ + */ + +/* IE/Win - Fix animation bug - #4615 */ + +.ui-accordion { + width: 100%; +} +.ui-accordion .ui-accordion-header { + cursor: pointer; + position: relative; + margin-top: 1px; + zoom: 1; + font-weight:bold; +} +.ui-accordion .ui-accordion-li-fix { + display: inline; +} +.ui-accordion .ui-accordion-header-active { + border-bottom: 0 !important; +} +.ui-accordion .ui-accordion-header a { + display: block; + font-size: 1em; + padding: .5em .5em .5em 1.7em; +} +.ui-accordion-icons .ui-accordion-header a { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + margin-top: -2px; + position: relative; + top: 1px; + margin-bottom: 2px; + overflow: auto; + display: none; + zoom: 1; +} +.ui-accordion .ui-accordion-content-active { + display: block; +} + +/* + * jQuery UI Autocomplete 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/autocomplete/ + */ + +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} + +/* + * jQuery UI Button 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ + +.ui-button { + + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + margin: 0; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; +} /* the overflow property removes extra width in IE */ + +.ui-button-primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + + +.ui-button-success{ + color:#ffffff; + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.ui-button-error{ + color:#ffffff; + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} + +.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ +button.ui-button-icon-only { } /* button elements seem to need a little more width */ +.ui-button-icons-only { width: 3.4em; } +button.ui-button-icons-only { width: 3.7em; } + +/*button text element */ + +.ui-button .ui-button-text { display: block; } +.ui-button-text-only .ui-button-text { } +.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; /*tempfix*/ display:none;} +.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } +.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } +.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } +/* no icon support for input elements, provide padding by default */ +/* input.ui-button { padding: .4em 1em; } */ + +/*button icon element(s) */ +.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { top: 50%; margin-top:-3px; margin-bottom:3px; } +.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } +.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } +.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } +.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + +/*button sets*/ + + +.ui-buttonset { margin-right: 7px; } +.ui-buttonset .ui-state-active { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +.ui-buttonset .ui-button { margin-left: 0; margin-right: -.4em; } + +/* workarounds */ +button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + +/* + * jQuery UI Menu 1.10.0 + * +* Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ + +.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float:left; outline: none; } +.ui-menu .ui-menu { margin-top: -3px; position: absolute; } +.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1;float: left;clear: left; width: 100%; } +.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } +.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; } +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: 0; + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +/* Fix problem with border in ui-state-active */ +.ui-menu .ui-menu-item a.ui-state-active { + padding: 1px .4em; +} + +.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } +.ui-menu .ui-state-disabled a { cursor: default; } + +/* icon support */ +.ui-menu-icons { position: relative; } +.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; } + +/* left-aligned */ +.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; } + +/* right-aligned */ +.ui-menu .ui-menu-icon { position: static; float: right; } + +.ui-menu { width: 200px; margin-bottom: 2em; } + + +/* + * jQuery UI spinner 1.10.0 + * +* Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ + +.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } +.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; } +.ui-spinner{} +.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } +.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */ +.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */ +.ui-spinner-up { top: 0; } +.ui-spinner-down { bottom: 0; } + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position:-65px -16px; +} + +/* + * jQuery UI Dialog 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + width: 300px; + overflow: hidden; + outline: 0; + background-clip: padding-box; + background-color: #FFFFFF; + border: 1px solid rgba(0, 0, 0, 0.3); + border-radius: 6px 6px 6px 6px; + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + /*left: 50%; + margin-left: -280px;*/ + outline: medium none; + position: fixed; + /*top: 10%; + width: 560px;*/ + z-index: 1050; +} +.ui-dialog .ui-dialog-titlebar { /*padding: .4em 1em;*/ + position: relative; + padding:5px 15px; + border:0px 0px 0px 1px solid; + border-color: white; + padding: 5px 15px; + font-size: 18px; + text-decoration:none; + background:none; + -moz-border-radius-bottomright: 0px; + -webkit-border-bottom-right-radius: 0px; + -khtml-border-bottom-right-radius: 0px; + + -moz-border-radius-bottomleft: 0px; + -webkit-border-bottom-left-radius: 0px; + -khtml-border-bottom-left-radius: 0px; + border-bottom-left-radius: 0px; + border-bottom:1px solid #ccc; +} +.ui-dialog .ui-dialog-title { + float: left; + color:#404040; + font-weight:bold; + margin-top:5px; + margin-bottom:5px; + padding:5px; + text-overflow: ellipsis; + overflow: hidden; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 19px; + margin: -20px 0 0 0; + padding: 1px; + height: 18px; + font-size: 20px; + font-weight: bold; + line-height: 13.5px; + text-shadow: 0 1px 0 #ffffff; + filter: alpha(opacity=25); + -khtml-opacity: 0.25; + -moz-opacity: 0.25; + opacity: 0.25; + background:none; + border-width: 0; + border:none; + box-shadow: none; +} + +.ui-dialog .ui-dialog-titlebar-close span { + display: block; + margin: 1px; + text-indent: 9999px; +} + +.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 1px; filter: alpha(opacity=90); + -khtml-opacity: 0.90; + -moz-opacity: 0.90; + opacity: 0.90; +} + +.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } + +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin: .5em 0 0 0; + background-color: #f5f5f5; + padding: 5px 15px 5px; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + zoom: 1; + margin-bottom: 0; + +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } +.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } +.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } +.ui-draggable .ui-dialog-titlebar { cursor: move; } + +.ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{ + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); +} +/* + * jQuery UI Slider 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; + + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + +} + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } + +/* + * jQuery UI Tabs 1.9.2 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/tabs/ + */ + .ui-tabs .ui-tabs-nav{ background:none; border-color: #ddd;border-style: solid;border-width: 0 0 1px;} +.ui-tabs { position: relative; padding: .2em; zoom: 1; border:0px;} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + + +.ui-tabs .ui-tabs-nav li:hover, .ui-tabs .ui-tabs-nav li a:hover{ + background:whiteSmoke; + border-bottom:1px solid #ddd; + padding-bottom:0px; + color:#00438A; +} + +.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; border-bottom:1px solid #DDD; } +.ui-tabs .ui-tabs-nav li { text-decoration: none; list-style: none; float: left; position: relative; top: 1px; padding: 0px 0px 1px 0px; white-space: nowrap; background:none; border:0px; } + +.ui-tabs-nav .ui-state-default{ + -webkit-box-shadow: 0px 0px 0px #ffffff; /* Saf3-4, iOS 4.0.2 - 4.2, Android 2.3+ */ + -moz-box-shadow: 0px 0px 0px #ffffff; /* FF3.5 - 3.6 */ + box-shadow: 0px 0px 0px #ffffff; /* Opera 10.5, IE9, FF4+, Chrome 6+, iOS 5 */ +} +.ui-tabs .ui-tabs-nav li a { + float: left; + text-decoration: none; + cursor: text; + padding: 0 15px; + margin-right: 2px; + line-height: 34px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + + + } + +.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: 0; padding-bottom: 0px; outline:none;} +.ui-tabs .ui-tabs-nav li.ui-tabs-active , .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: #ffffff; + cursor: default; + color:gray; + outline:none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a{background-color: #ffffff;outline:none;border:none;} +.ui-tabs .ui-tabs-nav li.ui-tabs-active:hover{ + background:#ffffff; + outline:none; + margin-bottom:0px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; } +.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; color:#0069D6; background:none; font-weight:normal; margin-bottom:-1px;} +/* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } +.ui-tabs-panel .ui-button{text-decoration:none;} +.ui-tabs .ui-tabs-hide { display: none !important; } + + +/* IE fix for background inheritance from ui-widget*/ +.ui-tabs .ui-tabs-nav li{ + filter:none; +} + +/* + * jQuery UI Tooltip 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/tooltip/ + */ +.ui-tooltip { + padding:8px; + position:absolute; + z-index:9999; + max-width: 300px; + -o-box-shadow: 0 0 5px #ddd; + -moz-box-shadow: 0 0 5px #ddd; + -webkit-box-shadow: 0 0 5px #ddd; + /*box-shadow: 0 2px 5px #ddd;*/ + box-shadow: inset 0 1px 0 #ffffff; +} + +body .ui-tooltip { border-width:2px; } + +/* + * jQuery UI Datepicker 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/datepicker/ + */ +.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } +.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; border:0px; font-weight: bold; width: 100%; padding: 4px 0; background-color: #f5f5f5; color: #808080; } +.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } + +.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { /*top: 1px;*/ } +.ui-datepicker .ui-datepicker-prev { left:2px; } +.ui-datepicker .ui-datepicker-next { right:2px; } + +.ui-datepicker .ui-datepicker-prev-hover { /*left:1px;*/ } +.ui-datepicker .ui-datepicker-next-hover { /*right:1px;*/ } + +.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } +.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } +.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } +.ui-datepicker select.ui-datepicker-month-year {width: 100%;} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { width: 49%;} +.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } +.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } +.ui-datepicker td { border: 0; padding: 1px; } +.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } +.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } +.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { width:auto; } +.ui-datepicker-multi .ui-datepicker-group { float:left; } +.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } +.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } +.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } +.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } +.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + +/* RTL support */ +.ui-datepicker-rtl { direction: rtl; } +.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } +.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } +.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } +.ui-datepicker-rtl .ui-datepicker-group { float:right; } +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + +/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ +.ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display/**/: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ +} + +.ui-datepicker th{ + font-weight: bold; + color: gray; +} + +.ui-datepicker-today a:hover{ + background-color: #808080; + color: #ffffff; + +} +.ui-datepicker-today a{ + background-color: #BFBFBF; + cursor: pointer; + padding: 0 4px; + margin-bottom:0px; + +} + + +.ui-datepicker td a{ + margin-bottom:0px; + border:0px; +} + +.ui-datepicker td:hover{ + color: #ffffff; +} + +.ui-datepicker td .ui-state-default { + border:0px; + background:none; + margin-bottom:0px; + padding:5px; + color:gray; + text-align: center; + filter:none; +} + + +.ui-datepicker td .ui-state-active{ + background:#BFBFBF; + margin-bottom:0px; + font-size:normal; + text-shadow: 0px; + color: #ffffff; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.ui-datepicker td .ui-state-hover { + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +/* + * jQuery UI Progressbar 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { height:2em; text-align: left; } +.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; + +/*this can be removed if ui-widget-header is blue*/ + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + + +/*** Input field styling from Bootstrap **/ + input, textarea { + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +input:focus, textarea:focus { + outline: 0; + border-color: rgba(82, 168, 236, 0.8); + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6); +} +input[type=file]:focus, input[type=checkbox]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: 1px dotted #666; +} + +input[type="text"], +input[type="password"], +.ui-autocomplete-input, +textarea, +.uneditable-input { + display: inline-block; + padding: 4px; + font-size: 13px; + line-height: 18px; + color: #808080; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + + + +/**Toolbar**/ + +.ui-toolbar{ + padding: 7px 14px; + margin: 0 0 18px; + background-color: #f5f5f5; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + + +/***Dialog fixes**/ + +.ui-dialog-buttonset .ui-button:nth-child(2){ + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + -ms-transition: 0.1s linear all; + -o-transition: 0.1s linear all; + transition: 0.1s linear all; + overflow: visible; +} + + + +/***Wijmo Theming**/ + +div.wijmo-wijmenu{ + padding:0 20px; + background-color: #222; + background-color: #222222; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222)); + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} + +.wijmo-wijmenu .ui-state-default{ + box-shadow: none; + color:#BFBFBF; +} + +.wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text{ + color:#BFBFBF; +} + +.wijmo-wijmenu .ui-state-hover{ + background: #444; + background: rgba(255, 255, 255, 0.05); +} + +.wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text{ + color:#ffffff; +} + +div.wijmo-wijmenu .ui-widget-header h3{ + position: relative; + margin-top:1px; + padding:0; +} + +.wijmo-wijmenu h3 a{ + color: #FFFFFF; + display: block; + float: left; + font-size: 20px; + font-weight: 200; + line-height: 1; + margin-left: -20px; + margin-top:1px; + padding: 8px 20px 12px; +} + +.wijmo-wijmenu h3 a:hover{ + background-color: rgba(255, 255, 255, 0.05); + color: #FFFFFF; + text-decoration: none; +} + +.wijmo-wijmenu .ui-widget-header{ + border:0px; +} + +.wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{ + padding: 0.3em 0; +} + +div.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child{ + background: #333; + border:0; + margin:0; + padding: 6px 0; + width:160px; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +div.wijmo-wijmenu .wijmo-wijmenu-item{ + margin:0; + border:0; +} + +.wijmo-wijmenu a.wijmo-wijmenu-link{ + margin:0; + line-height: 19px; + padding: 10px 10px 11px; + border:0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius:0; +} + +div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link{ + display:block; + float:none; + padding: 4px 15px; + width:auto; +} + +div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text +{ + float:none; +} + +.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover { + background: #191919; +} + +.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator{ + padding: 5px 0; + background-image: none; + background-color: #222; + border-top: 1px solid #444; + border-bottom:0; + border-left:0; + border-right:0; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input { + -moz-transition: none 0s ease 0s; + background-color: rgba(255, 255, 255, 0.3); + border: 1px solid #111111; + border-radius: 4px 4px 4px 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.25); + color: rgba(255, 255, 255, 0.75); + font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; + line-height: 1; + margin: 5px 10px 0 10px; + padding: 4px 9px; + width:100px; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input:hover { + background-color: rgba(255, 255, 255, 0.5); + color: #FFFFFF; +} + +.wijmo-wijmenu .wijmo-wijmenu-item input:focus { + background-color: #FFFFFF; + border: 0 none; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + color: #404040; + outline: 0 none; + padding: 5px 10px; + text-shadow: 0 1px 0 #FFFFFF; +} + + +.wijmo-wijmenu .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + text-shadow:none; +} + + +.wijmo-wijmenu .ui-state-default{ + box-shadow: none; + color:#BFBFBF; + filter: none; +} + diff --git a/plugins/scheduler2/static/img/closed-lock-15.png b/plugins/scheduler2/static/img/closed-lock-15.png new file mode 100755 index 0000000000000000000000000000000000000000..5f52630ecaec8f06d690fedd88a1ee005a4725f8 GIT binary patch literal 1094 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 literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/nitos_topo.png b/plugins/scheduler2/static/img/nitos_topo.png new file mode 100755 index 0000000000000000000000000000000000000000..528407b0f60cafc1fe34a4bcc5780bb76c8a753e GIT binary patch literal 102626 zcmW*R1y>Z@76#yKa2Yv_{hk}m1)uHmllK5Olt zaL!r#yl>Pe4MiMG3QPb1fTOG=rv(5Yd;=mR zt>e9X;_sDhtmyG}Kel@HeXXhEx2`H@-R`#kFvPse>(KMG&EJPEucW(SkV;7`*wVEi>jMJA+U!iYzWq|5M=LI>>a zp$CQ{lVJxoprRWDMxyl9mv1e(w0`TQeHAy@1HN52&7omgW6aRaj{zc?q=NwytdJT# zin|dMd_zYDd~2A68l3`WK0yK+GISYgHCVr`(`%pFg1QBr)Wc7>9duzvB%o6opF)lq z0tKRf+wJbVK}wp1eqlpH0Wz_vV9>&@?5M21i3KIAv~LfCo#%twm(If3 zN{qZ2YV0I23WX307sXn=zXop!-ZkT)qA)PmOfEc65K{3GOcLmD&C>U6CBZgc7KuloARN}Iz9tf}kubl26# z-QC^W+k2zaKX*T@chiD*X?ZzQqojAUCi%+3Wsr9M;XMxyGIylX&CSi?1y_r$6VKah zrZuNFDaJC*5|b2y${~Obfx|NF7pUz7mGxc5$?|jc@q%yKH@F#UkUk+62U$g^Q%``W zlb9&L-P1E%rXV$y1b{`tZn~#c#xEe?@o=$O@E`gj9e#?~e)B_jkrWmA!f8`(YyElJ z(hrw|TLLwV=93F6O^!A>8$uax0U(iu#ee8cN;}|^<-5~ZPxkCmRdqJwREDpdzfi;F zjkTveRHj){E5{sG;6-a~x?CnMly35}Sh#?xsY%DEx9#3f0e&0jr>6oW1+7gXJ*M1b z71h;fpE%RpT2>bq^#rp{kB^U!j?BR;ua$1_*yuUKBVCHE1`n~3dSm0_P!WS#TU(PHKnotm z3zcPMJoCSF*mhl8%F4&(El-92_{Bjuo2vJpft0=FQo>Y&AynjfeRW-A>2jw9cVXQsb+%bECIZFLp?; z-L3bAu+G}@8KiTuPugc){pbTp>gZ|-7i`@5;Bsief}c)pTS&_1%?TtGmeOoxpI%A7PTMdz$` za9Lp^jP-yIFnNTE-wpMr83|0?b0y@{Lgk{wNs7!f?$7E>UZb7WPbWq>v8sGSApu<+ z&9F+&?{AX|xxW5XuAlgj4Q2GP_MZ)D{GIP}Eqj+jF0Hwf97~;)78Zo$3#X;%xP_uX z^AV4ClI{(MOD-bsv&K2*-i8;?#giN{mJe;^129Yx&8{@L6iZCi_@LZHH5JQ7>w}8hpq6u}=UMrXHHG zV9We}pJc4XQ@q&vN5my5mKP+i54j$?UgZ6G=k}!u78{!_bG?R_KaA|of!=GsB85cY z(XKX~=i@UFL@_1}>#(ILF)}15(cz~*$H)12PsT}Rn%%wi_4SR7sR5IC@LtJ5$l#pj zDns4>GdW(1gx@1&C zSe8*}Rdwwz#pqo>XEah?2|9%HryJxzZ}LXpc%r zNO*m|KVPhsRXJ>}x@5JrwM`uU)x$d}FZPV)MB#a|xG6I6vtN}+jPb-r%QPU62YX~C;&4o8Th^^E@}_dh%&%YFgDV6%-WM3mUQzC2PfP z_ibOgix_MFhmTZG1SR+BKPqoCIdyI@itwmv$UJ9_!y&lfS1loj>#ffjo|5x!w&Pyt}>6FvXLw98{PlY zrx6B&6&C}EFsa{cCR+)*@(|=rOiaXRXlZGMq>J=@QR&ENX}h+fKX7(FY#DK;jf0t) znd_JAH8r8<&vMC1jOMj^va+&lDZH95>kFGPgh%# zBEMGXAp|aQ7mcoXIyV3Nglh8?vQD(~HK& z{m0YOlO(49>FH^2Z*O^d*@BlG8&xytQ}#({I%T-d<+N5=^5i}a_hW@k;B;WrCic$fAuVjQ>clorH~EtR8b>%dj|HG4t#W`)&(a)Z z;cB1R_1YL!upR?ttiNA%gYXjD*f>@yFQCZ6y0x);c<|028tyP6YR|xC#4-J~{}&Y% z6%>R}*|;q{uw7bN8LLpZ>HLuXCAb7QmP_3=x@~1`t)xO8C0ATrJhoRYaX&n)OdrZx zmhKDI!3%%9-p`uq{WmWwD;t4JZNBF$Y(EjM!$us_uVKylyQ*h+EYzpWh!csMbGV*+ z=Y*)ju*q>ak!jc>F+)1=UxpuixYBrG!2NGjoo{t+{8__c8B`#@c3ACajC_S)z;qH*1lAA!2&zY%uzl^ zSvn^HVol@8O=fRn!*g6_#7P-yZf{>vUF~$f-qCrk$dKSIwmvD^Yrx06p6{q%#>r8o|=kR zVw@*$pIwko9jmX_4V;8it8 zcY6yzZ+mZ3i?^TDx?6!xp?5{V}9=l~`eac6KaG zOg6f^yL&>=KBTCCKp=JXSd6cE(zz!~mn(Ql;fwWFlUw~UP#+s}bA|+^>fJ)KK^78V`jFyQ>o)RO~;K$npZeCvVmAj7yWb?G~ zpSk&RM|VBXR((zz7rtVg%DFd}_%dX5Y@z6K%O>^%l-Z5y8epBTN|U$Z9V;+#pKe|K z@sE`sBqC7EFO`n_?G`4on%Im9Q4pe~M@W~031fif(+@9k@)dJxwegeVKQuLB_lv(r zpyE-BSzvw8N^<^Fuq^kxwsszN0@7j9v_9MqCK~LrMNb13IB0}iUb-ZmlTlIK_-}X^ zBL!04sj?7dw$a7)l;*C@biH1Ja)Y%-U=BseJ#^*O-*eN(!MasOKJA)T3~{m%xZ*cc zvX|as6tS6GqjC)IVin4(6dNZPl7`v!>-u*7C@Lx{Dk!wJwtAi}Tk3yhNZ@{qv*0C< z>E8pkj0xdlW0Ngh8JR9ZxQh!YwjGum$_fh$i;D+pMj}hK%IsHKUw_7M*0B%UCvSlB zKw_I!YS~>DOCuSFG7@QA#Hs-OD&i=)!rD?wd;pomzaVz`)Ib#LhrXF|eCfq$Q+|rL z`30e|R_9&w05-{-ahiiOi3f|cG%m*DnbT`SK7nD2-#~m}>AzmZD_`s!#zOVuc3pkI z;DJ8skdP2GJR1It&mlJCTn*nj#qCHZetH}n9cig#Ea9StxT%7}BO*#lN^qW>|1^1d zcyQ>~{VFU3xx2gj`T4oKH|Vib{Lum?m6ey5mzD7}YkBCF%pSUnbXW`%0RI18Y4`T_ zCM6{yAtCL$>Z_2WBOe_fZ(n+YK!vsF{pK#~?LPYl(}oZh=*X&{mzNi3THDi6`F`e) z@hqW|*~8S-)NLX9dQ{UD-i$b=+1hQ1yV3#vUj%B{-24skeesE5j4TMlEI7DduTb!_ zoolK(tEyn&%|!V}^P=jm>gw~UiJTSYl44__WR0Suqa#~8yVwpPwMMq+k6sQr6c#zp zg9BLVC9_zhoc!fxwzeaT!?;w!QgW%5a|;WTSwdVi&_VOsjV8oSNjdJ(il+7T^~dXd zJRF>U^IA}af~F>vwN-R8mz^X=uEBM8#F~G3Y6{SO|Eg8S&%G8+C|HXUZ-b9w>su(-|9ofp`Y+3d z6AF52YioNW@b<4CrReZ+BPb~-uw$QWwg*64aYu;asPn%^BG?UK69?)uNXfSf_LFqil!^Mq@jdj@Q zT=P45^OyygZV$wQv%YBRRNjW;P=2j6AjS;S_y$*!)8eBX1pw?3>ane5P0~+Ideta8 z8M{3LUrk<@d!T;Y%d>`fn1%?OLxD3g&@|LGE1HMhph-xI$$j12+xdB=ngW(+W_+z& zMPX%1hWgxTU!NQV@|G*^3v*aO%`YwnuebXY|79S<&b5b3^s{Py9st3+U8uBs5b{5< z>|8%4B)lucs&U$o0DBq>(LhVIShs^|K)G?saS}0K$8uJtr>EUT#QFHN*;0OIGw|_+ zvwPQB|4B#f&5~H!M?(zq7IV~34Z_oiRHF`Y)1{5K)CUd|$MmD3p-mdoJw}*OL|U7g znp#-wJWfL3tNRN}OExR8%LdJl((IAs*xb|X&lzBH^*v*3FiKezd1qyR6&}R?q<{sboChr9bqiq`Dx z?AqGelKtJko)9!#D(;~2kBhU14WBtB*R%YW|BSaR(|?f%xFOqAs;}}02nYxZFV4+1 zn)QZ%Vj+rEu(P$bwX>T&bQhzMr03e!f5dRx4habn5D+LVETpEUp6i}c8@;({NOt8! z+D+f*<>yaU18TlLuC1*R5)zgOUu)`_efB>9BAIKI>>rrDnx&&|+zUCbHiO407Cg$! zqBAlwCMG8K#r8jztjc`RmHBjQQZG3@EjeWx4piR3z?3<8nn{b0xY`tauu%mzn1`EM zGnmBx70D--MIoZ1H1B;fZtC#f6_<<~H$=smHLF(fF$J?0NvEq%>2aooM<_-_L?|i_ zsu_q9L@^RzfK(F8l8Lt5E$B30N#lm0_`sa?#l>d#LoLAU?CcyHR5k*aI7S}qX!oD; z@^aAuwHI1EakZhTjSa{!QyP`9bAI&o7eyy0Cl(@+4DI;IeKb_mv4%Wz`=vT2D%?C) zkL7gc>nihFJwwB1$Qr->TI*asuUiy0rJ()6!2x$gNl87HqC-zMXvQ16t5yQB?<8=b z?fw>iJxIAJ1fW-+%0_eTac(^^9HAr)Dm&&RPD(oDSdsZ5Qg_nveAl_XW*6|HZPq5X z|2Y0G5D}>lUn^W@GcL|qQ87y^piCz>Gnbr_=Jfo0qsC?XZ=d%N&fH&t#!08Vh3Qtrn;^YX^V+ad^>v0ifMzTCZc>HPxDM>}%*7#<#e z_2|b>F}{C2*Ij_ge{*wF@vY;@;+&e25(^no(-5=8ZGQrbtNnsJ0?FVwAt7OVeEyAi z)|6&oXlN+mz2Y8XEGk28Mn=og?{W94|Oj)cY3=5k9_wrc&EQT$7^7 zWptTtr^IUg#?t~Gv!izb6Ji+NTjR?*9`zQ*;-fD_;9~o{v3<+KRHWy#rWysZIZpW3 zPo{~Cy_-tHR5tddl1{fH=0&^-)RZ&_=gUp!QE0S~o6SK)o~FuzPI}|K-%djoV1#~c zVWN^q+&FSA71>6S^Y&}MjlAq^DoRR9YU30q+0!sa<=x_!7n(H(9<_+(!M(f0dwUDov%TRUxquTT@!|@K-I_PZ*v!0x=JfNxg*&Qy~stO z7t);di0MW0UG&Ns-M|Cko~MCyIs&54&y+{)XX zot@=IyM;=_v|)?5mg?#0>G1IIBU>?eN5A>>FM16gdJqVtt*t%xz0!&s6%8#md*@BQ zx<~Cbj#?BksQagU%$`Kl=}Hqb0S2gLGMcjxff0p8ls}pB2#QExz^kj&x)#Cw&ChVW z;~tsRt27oG!^2g3_w&URlHbx8uk2=GBClh_VAVTeWCE!x-1g2xFd!IWfMOu80Fz@t zA;+*}nia+Yg=YTu@89t^>Dh5Pwpdg)7+Xe#4?Kkrd^hr@`5+*`Cy+bFzh^172CoPgA$WlE0 z`y&t)zFmX+=(n!s+F~RjA^VYs$Bf~HkY=ynyjH6$o!U1VgPe-$uR$L6kXR0nn3!Kx zh{W;zJPZD3&a~r`6TkKAT&u6SkN$#Lr)OtX1Ef}#9|?w%ZBneR_=?(*&=KaRkgb4C z-xXFsvrBhhwbr|t;jFJs5aO&c+fq5+%I7C0{)CiLDKF2>gOA)^3pV&c7<7xsR8LPr z5faZ!TW2{ulQAl+4qA-v&jGlOjXHHVSC(+wklNCN-a$$eJ)wal>kj(%tDwNiuI= z?9g`A8G9_0O&g_CFa*qEBYdrz5qEsj2sesLNR_tLU5 z8_uL7HN_$=9!u(dM_!0#2dZ1|@qDFWr=L&bT4_dbETs^qA&i|0H?LpWEch>SFfndI zJR-h5SP?5KI9Os)K6aeM6teFt>$UO4sE+aW)M;#Iltd3}QHBAmt{GdjPgUSXMQ~RH zGt<2aTZ7!iT{`&-pt9E?@u)5uy`xcjrmGws60ZyJUL$PlglG!|pMiG5zHo$K2_ zRGVI%xpHl>C(B4mNT7)@d?fXnyH#9aj{y!lw$;Sz`xUY=H@Eu?ud^JTI1_nagW9bmB$%3MSE7KHxioX4+-;TF^7MUwD@MC=Tu~72 zvpeh{(9~6M_h(K!OYm#l36wAtEd?{pmNzoH8B~Y*OsCK3`2ARv%`2c$`DfHg={esA z;MaQJ+4|%(v*_A`w&NAF?|58KJ@hQ?+EpGq75<1wBokfLJg>gww4 z?QL&gQBq=coyt-0X{wgGP!8;EUaMCz!XO^dkqbUBgU@)ZEiW(sHZf))dU}42h=^!w zZS_1~KW%m7%^0)bEuL>yS$%lL6Z%nTyEq7ycq)wo?g6uKsf6({!!!!u65QOT-Tj0b z_QYRlsi?%{n<`f{jgw zo0@1yKiDKzyUkJE_E6Qv!EBJ20yrTA(vi_|hp07v5g5(M%NW*ByTQZ0xxc49{OEcx zCB1QP&pb81zP`Hn$-Od!S3?=uVItvvF>3Pd zMfcpJpl8g_URnrA!Y;;NexAJx6Z6l!T!J+}K`aagvke@9H*l)Q;oxGcdEQg4!yJ+< zmtr%XyxI7i*4v++u=&tJdbW3^G=NTCygIasSh1oaB5JFfKDh}pl;q?*9?}Yx_VAa- z47K8-qTNsqv5EOZuOsZU;hM$T+S;e5r}g#qTPCd!gvCK^$H_7>w4oEh8sD zbZqX=e+h?N6h)J>p$yd$>HgYBM~kN+LJfa0kIE=wR9T=SfzlB;=`YUzN&Dt*=2)CQj(d-NgL8{p zxzSE(giPm_Mt12S@b4U!VVrFLZTvO-%BJE!2pIFAZCtI1G;M1y`1rm*?gz zYX(}XHPqCowD~>8(sOeKwY|o~#yU`n{$5--vk*Nwa1UKxUJ`%!YUI*S%*V$^NJxl! zPfkU(+Uim6u(IhaoTJeMgJq)nOfF8qIn{cnhb;pmF{Vso!hm`tblr#&`3UsG^Ahut z@IFgjBVbW^+);;JrI6#Q-)0zT%h|`zLyUpSNOG74BjxZjr>-uKdk`f}+uwIuHi%*f zfsC}Tpzg1ITG}8s+BorCC6kxLG(9?r&rPBT?o|*m1TO4FcK(E<53ybF*xC25Sl{FN zsyde+A?F#msL^*O<;6ZU4Zw0nVf%vGx2dW3P*}&!SH!%bSu>M53yv_)q074MSII7` zw>7UYuaji?A`Uavo#iZ$9hZss=rvNB5hj43$Ge$BqPh`86ZB!%wN~d&Y!W^D?*3kv zQe<%Za&K>MU|>KE=q93Emo#iKv1{2{B}z&~PDaM<5^;zDR#81VI{INBgz*cK6^y%a ze}A@S_i`uhdzTIa6=PH$a*|_)seLVa+LV=*Ez)8o!%iLDJu3Uwi2M5bI`Ce2Ggruf z9as<$-P&wkD=Z=57+hh6os5f%OW_!!OrMb^Hpz!66@f>4c6PSj;#P9psxVOqg9#=L zr=QFnY8KzN)nRo-u}UE)B7bJ3&COl@I(C}J3Vr$(X2DJL&3h-`(eBLJ#!(9!2#t!$ zo-p=xh}a*uTeyfz&=E0&|3D>_wno@NFFtu{oY?PZxR|CtFEDei-Y6g>6xm+H0ZLt zyi7q!nU$G2p~TbDdh_4)UZ(TyBAArSt6QnkvVJKcAwf0*H)Ygv1%~6(-qNy^efRqM zI&4v=RhGV-3Of7Q)YN2<<1eGy;IIPgjlk2?&;aw2BLVWbGs!3^W8@eH`Kg3oANiR! z=f*4>fBk_uXjg*V$C!b@fx$sERMhbB@Vk>GK3?9d)`bqvq~UA{C9etf-fV56OmZ2e zA#=0ygT?y+1={)@xDq2NR95Nh^6^+ev6bva@+uWu-f@9S;*kw}Q>mgSFjNin7(L%?!zLjex>{L_5%S-vh5SG82192Jl z5L&z-k9Mw*Tlnn!1%NL%RnbGo)8GC47H~A2bJZrFsHG z-h+|^a$DYL$936&s>gzW@%Z<;*TYzQ*FlA&xVZT4bVZ1Vr`G2hoP-uTxLxd74}*E0 z?S0G%ytA+>v($Ifl-#(FWuFN`Lc2R%u@c*Pdiwr;k~XG)ul0uchwvB*)koL9beejf zpVQX-6qOY3-*0?>xY%@9fr&pI6b@U|!C}5tx zOiWb!?S9bK)*eg}g_zW!1|wU0Klt{_=B2s%yA=}0FrDPbBTC`2NSEwSa^Y#d?sVrW z4l1k%^q@c#{{(DBp^1>d`nNt8CI52!89!`lw!DY|mi{yXv~BZNKQNJi?=;#qZTOzA zGdD3a4+InEDSr(e3#-hKzwS#BVux%xsOnbZhO!s=6Tm!PF8i^6Ui^71ltioj`%4ON zJWT0i+x~j13Ey1-mFt$RTAU<)uu@?DNYI36gMto>2SpGv_73j4|IXtYB0xH(S-PJW zYT7M+56ihsDbhnyQ!$K}V3Z2zM?g$P_c~j8yIPph?4mVn9GPKPV-?Xbxa25OE7G!C zs1k^}@sp6`=jRs`^xPRr$Px9T5a%sKo?cwE)}omtBT5(jl^otyYu=B!aj&ST$P5H3 zC@A34h&9_SaMFiLuO$xeVAv^)qa>>osT65Bu(^$W(NDGXocI%lrCys+#(;qu(&l-( z+~j29;81CUXlk)+zml7seR6QX9oEI%ej-zV4;`G8eDh|VDj&&*lc$7Mx?QyrTmw@j@`*mQ!RM@O5glJ z*FO8iG*1~XV^#!mm@11#!+mTXwL^`BLX`MbYUrAN!#6}wd> zb~FyF2=7LOc(zP={xeljITD|GhBa|L&vD7IpjKLceL3sgFeMV2sT!7(W^g zhvQHRa@X6unzyFvPHVp}i&tWdd$%UK=NpT{-_HvCm6?&z@~{;XyW+Yt^zQvZx=Il) zwMc{KsX<6o_C*|!nOR*t<@{N}yrih8|DaP{Q!@*E9Dz%{+~MoRO~xPb$VbV?$2XeF zVc6-{!jt*>`r3JJm`aQrp)PO4kbsUF;uf@%knnC6`|$n`KN+YS$WyAMsu?fty<_;k z@Qp}QO|TKoxTLgE@q+(d(k_6G^k?6QF5SZX=p>>r%PNg@mHPSTx<_5IdCs zquj|mEKQ|gt{w@y&CzIePR79LprFeTw9jnluu8S|fXhFhSWsOX=BGq#o6_5Y2s3$;O)xCitYrzo~XlPdV4U4J-JGn@&dvHGiyMHl{XpjiMpVh^$+pkoQxL z*ATH5L=xFyAeaNu^FrSh*xB2+U;M$+zfQQE?(BGe3jZE(IqF-4tx#e5n{#@89*ilp zk2*J3SkVg7bhWE*e*k3;X6ENF6NAmo&Aq)JrV3<_7pj{aM9HuzjUpUid4;zA%uwRGWdwA+y{&fe*6yV1ys55;7 zfk513R5Ub>PEL}u_yZy(orrW&#OO>c!XIn5KizjR&hR-nRGkv#XUO3@JFwK~vRl#^ zlVUBoU+&7LPSk%*jSa&piB8JW63_}k!6H$!3g(}x(7vzYtIHZbzW}bK}w}DdzP;}{Oq}T1ofCkfPk?b=~DDy;7Vh~z(B6)Y5N!5Bpw`Q z16joYZ?7DMANV?BQl&t?kAl43lUy^9`?Q2xJdMsb+7~6it42toUWb-<5!vE=EAG}5 z^#6R1_gB%5%Kg)S`kI*?WqfW*qjsvhqk(CDB$kEpA|mNINq^`1CcarTEI0s#*26+s=B`C?+Ib4x` zLH(Zc8O*7tqR*M;zagX_V&&}cDj!J z3~0EkYuJS5dLK62OWHBkBA!W7J;}w>sOK zHPxNsL|WXm1G(^HtP>dtlhhZLI_M zXEtIGoXe;~6F`t(JP9%yE}5*M5RTKLH8n+YKULe$sYK=K=6rafDpIXCIo&Ce78}E0 zl{&NStc_b^zqyOMySuZqv$yxdzT{hr)`-X2-rk<&Xev4OTYAF*k5OPt^@P7om5dj0 zG~ef@D6hM-H9PZXK9LN~f}W3dorF)#JjF7Y)TLr z-jo8i48FGvk23x|BNn3HN4$esI@?nM{QMQ)I$AM(0Ayrj4ISZT}ai^ zS!DXXB>37%5q0nH*)t>Le&;t5{OP>TnosMT>Drrtd3D+?cy;o<#X8l_SH!Nq{He_` z6kk2VK#%bU9ENU4*5Ebc$^`=ck{k0)!l3~C4?qIBrL(GWu7KJO|4A7cH9ZphrV5nj zPb2RwZ36Lgs3dLNc%5zP9A01X zDX3x6!>R%#N@If^r1b-FRYrcHF8Z|7yFHeFLrf#`P1FF;`JfnQ4xu5$L}e)JqO%8O z9y|TOg=&a(P9wHIS!}hZ4p;j#Vc>^`gL}+4ug^3@AUOQA5H4&)LlR$NdgGzah=p6o ziHQnSTq*33j4l+UiW{WrSm8Eo?(tj=UM> z^U^!Q?>h;KDn*HpGkWaBjk)DikRPMkY$;-scJ}su1D!wiefrHW(@*{DG_jBoV`F1e zEi>wbdP{^u0=Kf~dM~G`%cA%Fkp>y78LIHq!?kT6;1tCWg- z_OM{$eD=n2=_wUZ1;}OGfCbL9s+GKdQP0UU(B zLkTGu^2}(HxLjJtgZq~zR@YA}?MQvc|Me1hC!RYd-a`L&$LzWBSh)B0;%9q^IZn)A zXp6{?;WO6rA+$8w#5Y$+LPA1V*gCm7B0M}4znG!Cqhl@7F|T+@{F~PbdM(vP#2GuV zrF>nb#pu8C+DYB$*gcKOsPhlRi=7>d79+u=i?LwpUi|Wb_azrmzmp^E1&@7lldpoY zIEBXbEiLH#?C83{vO@duB>gUu-s*NhZ>3?WD)HO`U$$&mg}&SyVJ))rHvn5+ zJ}$`FcGke{-X4?M0_KIe*Y|YI`#6ydcKn~Y&FGA^eI~9`Uk=MBO&V43{ZOU0_(ZrF& z%KOPynGP!o!26f$Nul_*!{X`LS-10!`#30caQpJ^?hcEyx!ap$@WWJ&Ia!N8p?dbQ znZYzUu~Sj9w7BNL1FsJu;P&=*G9ArEhY>NT8v`MeFyMAF zne{w=gAFDHWE=FmR58ZDSXFqf?iv>oKggtoQZq zo`;vn@Ffidc_iJ;TenLxWIpKb@(*}wtd92_jmjg{Hauu46%TlKNf#G@$16595X0_?O>_QuLa^nvi%&uxvy z>5A^b&5lK`J0EpjTVle7PH?&tclrKpI}R99A3R#!XO*eDliX=Vi-A03TY z@a~uT-0)nt~Z!1o#LXan%_v;QJJl&GlrUnp# z!k0AF*N4xpCp)}hFG3p3lz=*d~S+{fgh&)l=micd2NCYKvcr&@mga-K=1kSlceV+I|WY&bd8pJ*zTqb8X2kt5;(r7;G38U-zY^ zrPWoDXGq}dm*5Z)nYcUAN5+$(+z`#w6O$m1Z~em_3j73@=c-<5+vs@HHC(@i&&MpN zH8i2VZRAak@{bAM@fR9?P->1(=q!kv4^II^as*~f3`xYliv|W?4x{0nA4un|^`5`2>;`fv*Wk+jsN68R8mT(fGsq%v z!AZ?bHVtNFjwtZJqW>}aDVz2CW4qO%Dcx4Mtc+4n{7nl(iaC>6KWI~qeMTfJ;6i$S z6)UaAYMaDGi$J&7ay?PfcRS?#twdo_kS#j&Jv)LYKT$0rqY{AFJUH?z9fciGHsK_Z zX}`%GP!RiU0qox)Ne6hrO!M3=r<;4ZEO46HOZ|dd;0g`$;oOhNKqmWFQPYw zlT$3M=cgBTdbcHEF;dvR`WWj+-NI}{SdDb!~Q-6iAUOsZL0 z5xqEfJ4`l{HVlybmAh`4Ue$rM6kr5`IrIPqNj*XS;OD=j_VHmcoUNsejULX<&aSSm zgK^ZI=SbW+5t&(8>YxTtGrfV``qKUT=1KFuS^3>m@~tufj?jzXVWm3GG>4YIh`#S z*)KxB<`k=rE?xhf{uj*N*|p!B)<&19T@QDym3ZsE=Z&cjcF+bGJ-K}_g}RzroXnE> z2Xgj>Vn}6WxNbW;9W@G6nz=%We5D?ZFDyMi)zm~)_aF-Lu+kAyczeG}*!6Ggg8FUk zv8t=W@1+pljsoCUu7N2DkhXWW1=LyW9z_%F2ah{GXkd}B>$Q1SoOU32CbMaQ5$|N1^mh9X#krbNrBt{DtE4i_B*yVfwkr3##@kPYxUnYjDW% zdXc5)6!SWK+2{O~|6wIF6TniJu2)wF{`}D}K{%(9C6t>x7C{0l?9bo7f4l$h?sP@n zwz#aUte}8CMI}t8K&woLog~&q7}R*_mfkKFO<`N=UR((DFx+236~lr^9uQ-|6Uhw4xFQ$NX**bfoC z=q&fbnj}FF*ZTXZolw{I8lm`eRe-tbU146_9kn?Eu?tq5#x54>U#poZM8?Pl3v(c% z9zkFb?W_BwqQuYK)m1@Sfy)Jp|8$*+Q?zD)W^WgHQ!uNsEr+5;5v|1ik%n zZr|9wtjG^1vcz%o$dlq^^%TIFROBDd2$doF_INtkx?t3CZG3LRt8Kqrvy{h%nwj+> zkR!R0UpAijs>#u`i=E?s^<-$HR4^md$jm>c<1}L8YWF$m}p^qS>^e2ge@t1lm&FI^b!+sr(iuD9|XAYA3-rYN?kzPwA_adGxnKl_$`7KQF8hB}J}Sw?6MX80$)RCP40 zZlrPid>nUjY=;lXXp;JGQ_@c^$VBRle^PWiD&lh8R-PG<;7OumOR6KHQwr&WL*GCP zqVT%fE~{Mka zB3Z|e$&p=GMLVeIRvQ_TKuvw)Rjmmo|!IJfpXVlft6Vo8If$hVGYRl<+aU4zw-~ zxoyAYrQRXeBJ(5x)$ti8{0QQPpXC@5!o$N+ut?aAnrn)Rm=ct3?(aVo0hyU&X_Av? z>MCq?cYZ5P^5lWHlHDvR0tmlQp=cM@QrsB`If#-e6D28AB1RJ_VSsz^rx2_14d@N( zw1?3Gz7e`QcAXrN21$i=3V=PJfCr z3KSIoy87hp>}0hG>D=}_Pcrn>k+?qmtMe_MWQG`r`t^Fx@*CWI5aWAaZ~-#J%b@GqT;hinXUQxH)m9;Zf>*^NDm_W(LTlhYmys z0!jLWk$}zkV{|4+W#PqRnT@j?IKJ(!3l^Tg^fDO4*`}ELJZ;36^qStDKCG<2l9Fyb z{c#to%3xxAHyh=RBga24y82vrUL8Dz%)ou^E+XErnb6q@_krAdg`u70Wn^=%`NjA@ zTFS1#Lc>vuX7EoK8Nyokx<7maBKB-Z{|_@j%)eK>z^oW@^+neY432#Fj;~yHP4CiWW9hV(Bq2h8034<5 zY&N)icdGZ`@?}e3eg1`)3(2fCNDvFASuK?_Uqb*xfd#{|gDc;7`^Lu}T}I@x)WlJ( zN?-YciOe0KjZnJx=LFONnq)+U@CH}7xN z9JTC}j}li3fDI69mpI2zwKZ;b#_~NWXd!t2x9&W=WZ|Ose~^vk7D}+>GbD7)_R(Zi zhy|mewK?+Ex3u4UL;v zWZpVAH0eAGR>AY#2%CByx@WhDwWE_#Dvk~KXBlH=XtK{Mx)W@=H`ZmhPt{sli-|N z&2fySI7vEO1L9!s;Plu))@}U3UM>>?(Rj&?fuV{j=;~0=ohVDKDwZCNvXk?*A91yI zB?VROlE44a&TB7R+7fpZ6hlgV=DzT02VWy2BXxCkp-||STW+x|t5T_Cv)SI>-rnBc zO`A5|e*5jG$Y`GHqHGO_*(?sDtfq@_ue;@AV2@#9A$?vu%;Nh@NPN~%(Fr?WMc z^2&y~>u$LDlKT33Hb5?^S@zT!RZn0pkjJL?Ei)_N(wDz{@7KS&{^7?iv2E8^#2gkB z(MG-?P`1jhQi7=@gsqr@VbRgJQC8Y-xq(26*=EuN!AxASwCf3F!`k`vA4G-@$E1_g zBy}afbeaC>KZ@Fhp^tnd^6&$}Z+@fZ(krJ24iCKgHMNI&NLovLf6piXZR%w&3NKnE zeN!#Ycv|f7sS8#DS_%zeE3g2V<5nQHVCnphd8Hd~D3+DdEF=YjjvH`XVKX#*ZIL9f zFMSK*gscV)G^|({UA?@2!?uJaEX9%#`sMxQ-UCWV-rv`l&->r|PX7BpbSgy$R+t$i zWFYFrqEm|&*}(`{gMO#>p&D5L@I0?d1WYEAH8nLxu)x$E8F89Tn>NkN%%s!l6)RRW zH8oYu1dh{#IoUV%AJ`{_+&^uVnRGZE2)`|b;t(#LOIxS_A~rmr1d+Ni$#%2h3? z+8=u@4Rn*^P8t`gmJD-gXy3k&9dLHetT1W(*ucTzC!gGP z_0?CeT-i}y*P2SFW`i4Mf?$Z*V4`ZZ&&)aq^A^d%p!$(;_~wuO)6ZY^`b5u>Wj28s z3V`DYUvSa&gf9g{+gedD=r*-(&s#IsuWenu3Q&RtAV3;mDA%`?fGp3<4Bqp@^FSF$ zB2@v4>u;VK9W6Dsw*UL*`mVo0ZQR`Vox2zQ$7k#}y}tZ+ABiX>gw--Vn*FbD#y`1= zC9}4*RMKor4GqD9g=VnuMMYL@;SvBUWJmV*jPE;C=^wFeJF=)Py=Z>8tsPR3h6XFJ zf^ei0iQ17UnGMPSvCpQ@hLk2>&9IJNinDPzbI6UI|F$=++wfFe)q$y{wjUglsx*rZ?;M(6bgsKt*xyq zSFSWVcY}k2yLRo`wr!hbS*Bs1>F$$ECXbgzne$J|!fq#A7RbPK_|F3#sNefU2#(ur+@H?M>p#=gfmY{R64T-2w zCk_FqI~OV+w%X;U8|1v5*Mu3L%4 zcjdCXt~>uZZ+%n12`QzOB-@83C}K+rkdP1)BV(oh!2sA%B#21Z?tgzVRVYu~_EPu1 zzSS_Jynp@Fj77!2|9?V99DqS3fsn@GM;`SHB@qe;%odyz8>CuGCNO#A6D;2)p3LsK zlm&eYJ7+ipWV_TYw?6l>zkEks z%Y3CF4VTG+1M&eaAX$KrFBH6)k}z;7lp-ry@bW@moIniMt0! z?G2l+uq;PtXx1PGS*$VZI1yPCh{p?|ng={u_4+>zCX>t_$O7np#WWZhmAOvPTYilx@G?j}ZBctQv z<3&z;B5FA{3(2Gfv{X=m=4c?fcVHY2qf}he;eF)w7rg&Rd-qNSL_m7*0Kn#{iYyii zv0#)nVYUK*&-$e0^LfL4sMe=fUm71DpR3vZyEYBS^tO)0VpXj^v+WCo!tUL>P2n1j zQ}Q@>E{tN9tQKE;RbpOS*Ux^rzeA* zq#+fQgeJB%0J4M;TOdeC$EpZh0!ozGm_cCl>gUv6|D2)c-%_howkDPO@Q3z&`g88i zt!2oNhGLr|p_o@z(~}0QWkoEQiNTuLW}yXZNPFUu4O?FQ%4C0UlN2e)pb|`)lqL|f z=PDnds1(^dzP^6Po{RqH&hX-e%V_Dc_a_#dW! z`M`yWn*}VRStS6F0EA;(!C<%VZV1GpfAfwNmtCe+ML_tH{#V*1nh2tLw9MTJ)qfse z!L5{HW@A%~@T7@5q?A>?i5)w3Y}&NRNX0cZHXb-|PzVVK2peqDI7CYLcA=GL>LZrS z4N{?eVMpYH5j!#BVK;fO*b8HFY4>-&tf;K(+ofqX}Mwja=}ZlDm1tGiAVe(H1EzWSf{-1Vcjo}Lz;lYk{yKv&ovRpPL1O<}HZtZ{5G?+=>uwldU<;$yW z!p!f7hlfW-MsB?E#&eqMKH;#nU`ZZ8jF2s(?ekjN=6Rm3=rThGgtVj$DH+OxPb3BT zT3C`zYfPgyMJD6q0jW%_bN+dUk94OYB|}45mLvD?iN<4m+pW3vkLZUskALcuk>U*J ze9mQ!LE%_ztfQ$R9Gg|aBBLTbTl8U|)4l)pCEBw)Eo2Om*dKNxr3)9MqC(qtWfTpj z)AB8U>RT%Jr7y*^(=|f)+qNJ6z=xK8`QJRDT`eJKRu=1wo)-XEw)Q;f6IqSR7DYes zfkU@kzwg0E4{zD-j19|DL0Xa{Db+qNebptGU3cyL*7?FBA8ct$3rNz>phos=c@1Z3 zN=_Z2D5c8fG7(vpmC0n9nwrX%@-n@C`%9YPd3F{6B)I!3<*7f>;8? zLbE2YWlNiafCjVzGiwQ9X=1RJb6MIfn3c(2Dv~xc(S@&i#g?D^WF>Kkd<#}^x;Xs0 z*LuuO#SZ})VB(Pn1P}pyKndx(VLuTYYHnFn*8o(&j?u_t!@GtOBxbT>Bj5dYD@2k7 zk)I=yANgeP4KIv^BmV#U``-Wj_sqZj8`ali<1b~TMrU&lQzNW>U;Ea`oByo#!t=oJ z7*Z0RfE8`);~mnMrjJLknTi*{}FeN(mu~ z#i9`682Q{vrBW`JpSDMibx!RN6<-@~Edsr&p1EMkANYIgVoppvP=6BRO5o_5Sa84VyP_Ua(+6GMSuf zv}R^z_U_$#_0?CO5kPQCBgCXhXsx6Wwp}dcd%yA@!*_n4I}h5$Y{=FQP_R-eV#x(< zp_ja@`Sq`gCL39?0820laf~Lkc$vOy>*ntskd{=>d*XZB$3Mf`)BEkUkSk0@KbQ7Hmxsso@?217Jnlq!^eQB z;V~DdKsKSM^}XY}9ysvmfuTbK(VJ288M&mUvy8hBg>-Y!0yM2`AakQ4m z2ebyD?V~h(%}i1_iN@r-Wi8I&lh?+2UU~IRzj1YEui@-7#HOdGec$(e|9It?(b3V< z5uQIMrors?0|yS|^ZBc;y6Tw6ux;D6=H}*9Ds@&|hFKpNB*2pFslEI5{OLQ#9=op% zsFzNNG-+r}@QYU2D~$~eJicSsonLSI*vA{MzeQ@;0JC870H)Jk*$fB`N$>@vh638I zxo+`4fB4t$|0f#kn{UHX5?X4hwSc3vPXbKEFa@LG0)-w_fz(@WuW4N%)X{QtHhLbC zjhZtoUG$6rvNaf%CZC|E7cHy3@z%my-&Q-44cN}$e|%}gwHLkj1Ep_#S4`)iAZ#lz zK2w>Qk;x>OB*-`WmCTM|UlLf7RAJB_GT; zFeio>J~A@0a^=cnUdm>(r=x;(PE3R8EVgUcu1hYtq}n^sJh1-${)veRldU*wq$Wm5 z=zy^DJqLHa@WrM5yDuV{5L&QjX?R*V44X@uH~@+N$_|3xn?{QG|{dF^YMHEH+| zbS9LvqxGb$z?LAXK+?J5HGh(jp^cyV*RI_=&S!2S&o*K{f^5OcQWiV=^K#wdMAN(f z;{2O#b=cCRlnns^mJkfqf}u^}Nis14C?W_b@8sOPbFJo?3fp&k*BI5ko2 z2rZ?nWzhoZfY70xUT){sJ0Cf)^~*PZU|F&jzOUr0yqTC){^!|{$J7CS<<%RsW(3FvWA+j|9ou!*1?gfK#PuM>|n?VghePB4N*#DX?$z6r~fsJ z(zo4kogGd>gNe_De$w1wy7C@AeAvKw$6yVoBSL4LBNM)P^XB^c`i6#vxtV08)Yh$A z&pYot$8pXgsYx?CM7~$r_V#y+{k!K|NHA<|6IXn|fz}X{P(DKf5{0mBUyv_ueal<> zY7)&iJ&#EVqBCl9D>tPu*f9XS8xFAdFa+y32e|MK2@YX%0>WgS-V!9t3x z8#q#1E3Un6>8oD0;?hf^mIDn>YHczmFo!XSwbA{F%xjrW#!3@25y67lXM|TR3f*)= zW&6(PwylN#{z}&e|FPx2zF6HW01Xu+~D;AL2_kEs(D+5;Ik;wxu`tf^y@uE-8i#6I>u{g?G zuj0MuVDbDmXVTdv(H?VE3@*;(gLW_yj;~z07=VHkO*k*RddWreQyX_3c)Y83*LctP zlq;rXSn6Qd>xio7w6t7&HO17l-j#xl=hEeP&4zAWI9@q%4@^ zC=r>=UvtO2$ck0HkFLuwv1#YgJ#gUmHwH@i+)OFjwZCQmK7He@B5XzX?ulr@;9SHC zXEHj|5{x7in1#?_!B9rkg@h7pF{V}F15bRjZ+gIqI2^aM(B%0+wr4!0BDPiJCaaDd zzqdSA4w7X@_D>vo+pquS$G3evM79Ph1e?z$P3IIz#N%H&g+6N4UpS|yvFB^0MLZsl z#lkQ}ZeRrB^A^Ngo130{+0@A7bT(H~UL|C6I+jY*WD>Ceqzx8KN}|ND&!Hyk(Y=<> z=VxYSnE9C4!F208oklfh`4SD=bo1uTt5>hCN@AM_JUu;q@ZiDgufP7RM}tJ9wCei$ zH*0_(k;R&QjMX=UzISJQ@v`Ad&sSyL^n#m91a%4&?bs#CM%#%9(qyMKlLQ2V1(J0&7u8+2V$BtWe6Cn2XeEP|V}$~daL|^L zVZbRck$`2iX9-LU77S)$sR^#_Uh>8_u6y*+`O=E}$|h3dL+LxdVF3o?ijq`^x&R~r zkoHJKKi&rJv@9tao zg~LC-Cb8sWtKSoFtbf^Y*EdG)_uU|+Tkh}Q_TRgI`Hu6RFSI_2%R$gt$hq+eYr~mw zl6IJ0<&LJS04sU~D_UDvklsvcx@a*D+wfYV9kh_h?40PNVYBN~mix3?dosAIAfXR3I8nlR+} z=s@YoCmSF_RAwrd8BV6L=drD$llgq>!iN4~Tz75h)))ADp7gh_a{y4q7gjw``rh}- z<+4p=pG3caXKOQOd+Jq(FjN3ZOu|-V8?pr0Cuq$K9Sm6Mbh^2rrM0;sQ=bmUB2r2y zXfQ}wm@QI*00a|j1}oDZ#(W=R%}Z_z+;rV~-)9S2l(i*d+j8j@Ks82n)8dgbSJ)bRpA4LL7WH(425xBrQMKL6Fr zoTYDUdEvT)8$PrCj`yAa{ALP)3M7E~$hSHln5^VsSXqEJX__;)4SE*FWo^vD(SH-> z$QK_y{LPNzD)xKSnDA4SE%;oUhU(h(m15<&Hs&u{VE7^o0g%lVf@h>Hl-X9Z2?`C? z#E@)*d=`fPsLpjXF+DwPF1T7fQKgDcO-;pOvD1-|6=!AEs+}yx$HxyJKD=hlnyOJS z7j*dW;XKOkX^pe5Zc<6WQM^Zh5YT|4uct<=}^K-Lz(5Owb8+Y2k!Akw@!3#9Pi#Xb!f<+20_ql+iqqiLuZC& zlOtq+q35{D=Cm}rZ`Ca3@l+@}^D%q=`zn_&1Vhn!6RQ)MRRMBAj)0J}JkVLX0to?= z8y5gPr7Bxmc@$~o5sOaPDQ0s z*|~G)1s7akq<+tZY4?d|;Aw&yFX;A50$U7gSCu;kkiAGE-R5vEU_dXn4WR zA`;TRArkpEG+?oS4WCbYl4%y?#iT_=Vdiy9U;5XJZY$-A zPEk%(^nzIJ4CM+`T##x&Z&8O_>9`zo4~!nUvTpfN3IopAF(#0POJF9_(h~3mF|-Xi z!nwP89(i!)<{4Y+Jpc0^v&A~Xz-ci9xuEOr-Ow`bp#fo_UXTC7_&mRkpjh+Xj z1r;4f`avq>-0_@upu6XuU-n#j`GOC9q~@y2p+QWZfMvYm<4XNb;jbD^Z4Ipfn}k## zX)nG0CM%NK{)K=0{;%#^I5IXLNRlR5CL)_L&AQVM?rWSMc*83%dDCk$vCv7`A`B4Q zLP{UZS_@`bVqyvef3)}4zu5E0zpj1T$F6?smhpoZH7>?_Kc}^2hry2Yg>(W=tutPn zdaBuEJ`?FOvx`kfCnf?LdW3jzbmxcGef5#P4e%jCQ4w|^Jxk?=_4vloLtnq|@vCc> zzwhE#Ue>TmGb{!RL;TPnC?Txb2m?(`O}F2Edv|yD!Gj0)?c3-3zT-IYcs!9vM59sD zh(QQp_|C_aW}eRS7DALtrP0yRwQDbZszZJn3SGb3F)=X_iA1KSr%mPcF<67?#P_=} z4b^UZd-v|W>Z+@b*$GCA?zzu>?l}r2%t+POtG4!u(UDrx0Bq(0BmSZ6McDklzn}d0$6JAVi!2rv z+sSg7sp5kzwnA(z6Xl5qe|=!@@}5<#R> zNqfS=Q#Qew8G7So_<+|Q zdBcx7KYHD}{&eZJP|OTXFx4jJv5_DK8#I3D(xpq6F4bC3Oic9k_4W1j9XxojQmGJ8 zG#X8()0s>r7K<6WjnQ|hx)LX};MHFWAw18^W+&qDllTvD}t2LL^ zBu*}uJDtqs*$gN)ZQ9h{-fkKP&Arymn>R08wk#5foI8|=nH|?|yX}QfZr-?rgsGMm zu!@gw_V&K5FkW!R$7)HBzveY=q2x+Ztf9%0Qbe0(>g((4(*$TDQC;hXDa1@fd++#q z_T!&wCDhthyuu1f8>MhT5>o0)9=@xQCO0rOdGM`&j##+ug)e0m%n%A}Jx$}>xznYO zq5@!{gjUk1<&v$rrlIAESN_S;=iD-Oq&L?;n9olu=>+1@cvHHzt)(WBcE~b)Y3L;A zpBB&zi^Qev=iReoi)^+m-|~f|a;`PnaNDBiP4d`3Zu!Bwnf>qH@THf|yZWPB|7%@g z7s;R&g-9aYVx=1G#rX9kI~#vAX!7lWWYz9tZa0BP}?3bEhZxhXwPr_+MJt3Tm&=7hJ{CJh1m*X|Uzl5F z{uF-q9I{iPPA=QE+MdKn*y8Uvm_Cln5ZDkWPy|>a+0ZBGErE(AXZy<)bbmtGiU%>3lio2f&Pzt zv;$toLc-G(&`2tVnwn70aIBmMRM&Y+{8-JRb&m@u+u`|z{N8uGH@W75aKk(TLx9xj z)32ckK41|^J=+q{^wBgq2+I=n4Yiqu8dfWPEqr1}z!8@52cYz+B*X|uF)+O7;_E-R z?#_vvC!&IEK>_;<`@jF4uDd3wT!ElO;1|=6{^E(va4I5bQ-y>bYOGt3I;7@DY5=e{ z5dmh~2Av5E39!_xBuPd^mH+vPZyzZP3pcG25kFA0Jkdn)KIF>M3VN)Byg1N0RGB)2 z2`fx~ec^o%e|c5i{PW`T6v0v;LB8oQauV>%{Or1}>$){HHH#K4V&?Jj@u8uiBS((( z_V(`Izu$G;a5$VyCL@uEX+mx46z7_Ws<9{(3b9zMzP|3MUc>JfAGA;?2q9e8O{G#e zuCOW`4xeTb+F8g@l*{EOpM3Jd3oo>7d#=STl}fvJ@4oQD3k?)>PKhYsa>Kj@tKa)q z_mY|*xLPv#OeBPmkU|J8*pp^iA};nfPBGBKG@e9N=WJ2mTOtIkkF(U3||YsLbDo7CxU5b z8vtpI<;{y;vHCi{d&IL8NDC$5%Ap`i!61bNu_a|fMqF~E3W6sL;z5vj_{fe2`?gDqt+eAihW`p8NM}bCxB){XeOzuboN8_4uSv z#6rc0hQ9Hg%AfzasB6(glAr(r3#|aD1OZxt8A6e=U;)TaPIa$)B)DOdH9QVtuP#$q zv%K|^s}h-d31})4ON*I7ELbv#CCHN|4Q8qzNivfKaWWA|X?lN|8cdD9zTpiUzjkQj z;X$h-W3f;ylmtjCuw(`8FnP9CWD9DDwa#Bs{AK5@$s2?52t%8)3CY6r1Qr_nn<{qA zU_Mz1CPNT`l+Xf_9zM7sr*p!MDOWOi5i9cO$c}qA{_KuhKYT;`#oyk2@2&M$jE@Y? z3pT;hLXp&#&P4AY*t&1>@Up}_04#)pwohBW`WTrCqt24aWR@;nYUsn+Y<6g9XlQ6? z$BrGjTrQbR8ky;MJZ{@|I2;}t8VUpgw(a6XX`pj4jxHWBh-W*uGLxR|#6EkDnX(q6 zF=UkrrI4gte!L^nZazUC-K|qoQzm-)T?7=v!^8dk{WsryGoC8EH##~xG&FQ}MVzXS zSV3q4&mO5vtSz#jC=gBD_|cF2$`#-H`u|*3!h9j6WT8k4;S;;C2*M3JMb~+_lpnhO zdDs8>dn0z(XXQ&}k!8{oVwT&4LOx$P(i;WH@;nW}NblS(p4^&Ux}Z{=a!^V9;=bJQ zh=0?~<#4|pub-Rx*0)vv zK#*)lcwy*@9q}FKNHX4c%Z-hH_3l*rLQPQYTPCfbh2U9ao~Y{h(Wwif8AJjKs1O3o zZS@@=ec{{w-@TvPv2O_T>%B08S@@>JlZ1p0kdRh19*<|5ryn@*vayyITyZTl1Huy! zq@-rjS_>#4B@-YRU=l(z^eL7V9c_b(gMHl~wj2wRScZG^{rB|u-H=*3J~PoXbf7Jg zYL0|I-F4TCR^04r@&sUe!m@@-rFBDH%M$Z^2?>&nGgVGI=CrTY@&tpyYGdwVv6#(f z`}_L`2M0~E!?LWpy1L!FcUPD6x%GmpUOk&7Qz9r*L1smge>1-{Cx=X?k1S8jOvyxz zJvkK#Cp?qNIZA3UN)4xZ@xPU6&{}WYxY39;&9w{6ylK;>rAwEdTIl{68U}47JB`5x zhz)h#mrP8FhPG=z_)l9GEPniJ-#B#OaBZd7!Em%Mu|DZ4^tDy*rw^j%9{C7npC%AA*8Tp7<#Pfs`7 z@zsI0P2M3#dnAIz`q-YS0nCyjNjxJ(sksaCggt5Inu$`WG&wmrIyyQ!I=Xi4+N#R& z@5VY9Int7F9EKE{$kxFA;pr_sg9i@x=R6JOx_J1!_Qvz(H`Rx1K;R;{MyO)U05&FnvPF{aD+GRQA}{MmpZ}R~2Cs^Q<2^hw5{>kP<^`NI(%Zk+7ZXS6x#Rs{PT{`|mrv z<#5l~Oj4904m$+W(HW7P5K9Z0+d8hh;o6((>gpAJTOsT`+Q0qsJrDo=@>hJ|%6I&@^RXq17B6URYz?Pg zz37$=yT4K|0@c3t)f4e|0iT)g5(glhT-{xl2)=N2=H1U<3*{4+edUuRhEI?7%S11&A?b>C!lAZ(0${sNR7UmQ^Fe@PeCQB1*Qg$dD zTyptUwdbEVIW#^pJY32ZwAOaOO{7zGwe^W~I$#Ot3X{#kT&2$tRTV`A_P~Kqh}xQ` zwrznBKBQn>0%||>UJgW(uY03>)$4K}{&4h@{~T>?wg2HgmEu78+dpstb^}PHtVqmc z9E`^&j1Nt0loz#E-uI3_cMtEbBas$X$oKN#G7tfT;0bs|Krj+Ot#%VA?|SdwI;{(v zUiw1Ktc1xDK%U8tFf!FFK+F=P2p%A%IDg5Cd6}l04qdjXcW>wDq4D9Y@0G$Fs0*c5 zwk$Y*!OF!Q3xm;!&su7h5@3cR5`dJF0G1%>FheUQ(nJ6WBV&C+-$lc;Mh9p?q6K|h zy+%?(KxkCTFKfRsBixJYmXx^ot$`o?`_#9SCHudx`QXnEJPxS^Da#7fCTgOkFbHfK z$)B@&s#Dq7r;|=Qn*oI))*zcEN`?3TX!CzPKJAxvEa*n!F$lpBLP$c41^O%ACw@Kt z!)p^fT_@g+?uvjb>tc|tj0O`ZY-C?1N|%!{?oYlGHO6ARO3MnEeCt%YUO znk;6aXPso84c^S*j0Mkq&cVBWvewjgl6EwPzyFiU&Mk7X==G0=a>a=+-Erv4UzNI) zKHN=$Jiv<8l%k1fOH0)#FoZbD1Yp1-bpHI_sr!Gu7*;)LNBM){xVZHOt3EUFqhIL0 z!_J%EXq|r%V$t%ye9qai*_L9l@(;Z4@8Z|4jU;QeVo$QANt{vZnOSF^&6zDV1fYfI zL&wv}%ad!@EV(eBo1V!{v+^tv;8ZXg3q=C10JPSU1;ZoF0tDM)=wakW^5b5~15+Xp zsSl-NLP&#poz!G0u&koT*DhM~`OV+g3$!0711uCKr%KOXa`9wk=97>A%U+p91*0Cl z>yfYY`-8%^6#G^(Q4>rw*f9WFfB{RN3-PqyqoD)|Nux7`+yCwUdpe6DI~0gU3$A3} z(Te8;Y9vK4oTjcq;bXrVEX?Fy@|!-I;oRaYDBm}f0q=!7FSBx$fv z5=@E&5eqmhK*VxZ77+kQ8tee1B{N7UNCE`3skIh>@BkYZz2KJr{=}!djvQVN!LU53 zQg{3ZFdIorV8LS#R)cw8Fgrm?XAaedRxDXE3m$7j57q|HCm}VX=bLxNG|~`)bU}0F zr7umr@4bO!#(UB0cD>*QD_{HCl7iU2-SQL@m}StW<^#L??)dM;fAv06kN};$z4Fn= zakQh|9A1M3QnOhdO$2DcBs3`^;Y2Mbnoc0i)xD+xr8I#^C;@2OxbEw+T|e6O;QGGp zN4#u-lq4r%huW>$8|Gbj>!K?bMd~p}^ZhAaI`nMC7qbSgU2*B^Xv?PYybQWb$`t(XWV9_M2V!wZch(?@{;t(D%qWz&lDR=KVV*0Xf^>KV)cX*MNk0LX)>cO)N2 zo7O(n`{Y^LohD`oNj}u*4}Ngq8~>BrxVd(8I;v+NL^&MpNr%;fm5ncXVf`y#6-cBt zOR&;{97Sw^L8HB5{9Ixt5R;_=As9>yLE48PErfB1*^s3v)ja=#cmDOmfBhF7q(h3d zuw3a|8a|O^_#}uFv=9J868TPDW*{J@SFeb+wV4ytA~GEfO{XgYO=YKY+jq18LE#Y- z0q(kA9KPxv=c=n0eD#aEsfG>@4DZ=fxbrLZL*rqf0!SqiP`Mxfto*LOmXxPBBYX}wIf78TO~qeqjZRl! zPjOUNDiP^hq$fS{+!_Vn4qzGBOsho*&oWQ-iJnh{j2SF+|lvzf6ZKT4Y468*kB`tOizi5z=rZDmzHJe(~Ocoyvf&8hd{M3w1(1L7VIzat_z7UYh)bdC^);mzzu{remx5eK6 zM*h)VV}JX;nhI%ROG-M>J$bk{vtZs)A9B|08PNm70%9V?Y+3H4pa0p=qrd2UV%zY6 zTrtN|S>)D+Yc7Z{yk_yL7d2k)Iu?{tBqT#a2o@wvmPSZu4Iq==^O-nD;k*Wo3LTeW6E!lYUZ$>(d7s3}Inl zVBn&QE~K2C<90fVqt6=X%$Gsp8L^{Prm%+Kh=6jvar}b0p1wt5tv<9?6on1fMQ|cWGP7egUp+NabulGMj?|;iLKXmI|@Bel0E-9tO?2}N$EVR^; zn0#R*&7f)4rUn$0q`zDLwY&EG(owK7HN}kUM=B~HrHJT&Ev$-?+6yqp9IAb}9a7T!v$$LI}VETY9_3iXt3^9h3mPa!tCSx!$VR z1y!s-IJt7*quh}CR{F;I~|SrXO1-(!a^t% zn$uzsfW3a>qe~VnPbLz@{QcS7*22sIQp1`{TDwXFEw>>ay*3fOHsB^0`e?bmb+n}e zoiItMXHNy%`MwY4ANXmzL>;u_`wT5K6rhEHz01A_8ypwGrIQogZ+nxQi8Vau2GTyC zgepf2BG%A8K?>M{k0wE(i6xOxP(qZ59F5x6dDndM3Oz>2C*P5Ku|{&TV~@UnF!BBBL2vb&G3cR8hMD!hdx@W zjO}~iCml@1`3y=<#1GulabMw6){@~@WeaDJhSsR@f4VEm3jBvkMpd^Ti z1nxh${(lZWtR$@3xQYpsbd8s^SP#ibf^O4^C85PTOGl1i%(gAnl=@NcV=LEx_d}Qe z3D1)DSb;!B7uSTC0?efJ{A9}qpZE6k!^t0YJvf}s`^^zV9D-eO0GG(NL`8;sN`YVQ zdr54?pWpH)foRO%F}-P>cfW){bRZGgs?}0A=`E<7D)I3->>8=h0(qr43<|!YF;+4 z{k2jC0nMl|i&+_>6IcgL#FAw1;s2Y{U+YC!?g&@FbuirRJ8l zj@bMDZvUlM?z`)UJsZ|<9U8F9MTbcdX428gg^NSiUAy{)w=Fzxxp1tCRt`%wYt|%# z^#5n?%>(1SsBs+9QUTre)x$m4$PfnVLx}ffm>z6mbw!q z5;9MohaLr6<=}$cNB@emYv*A@l5`h#Dz(JA{jV6Vl0D=6@$%hL08S*>IejW4H zozbiRWaFDnjeqRWcTS{Ef9=MPY}J~^?72H0`)r>v!q5S=p0Ay~_ibI*wFm1L(by`q zkPsvSAY+nHLR+H#&u)766|uIvPdv4|``nm0r#qN~12Bdq5uVq!@%rCbd($mDUgeMa zi$EGMZOO|Mf881saVbue{E6`f&btey9FpA02z((P%O$jveC?0~(aO zPmKQCcUnI7M|{;e5+ndYz)>I0D`cEER-Y>a;`ZYTs7lJf*@it81i5G8#lLK zxpl06VC-yvadf&=EXsg0(onm(r6bbZi|8n|pjL(7}X%eTIkbhjkVbE)ven0RJ4SrnK}`M{KDA?g%P7HaDnlSu&3ND_g3 zHkdAUam!$Rb?=Y*v!mPWC7rE?O-IxUe5yLV6Z7aX>xdGpBs_^E%r ztgfvy*d(POMvJLFE)pJz02z#=CY~BODjg^ipoS1L?jry^Qzz2 z*}miW@adD|XT~!V`I7WYE$Iz5cQ$vmbTlTL(9mrO#*$;Ns-+gCBY#c8Lv^5AlsG2~ zfJw*c8x)#=pLM-@wjGzv&AmiEKc7W%MT^1csc=Ei9z=?Ck<@kt{Q` zCCH}ecqwORr;CYj=`;jh|K{F*{6DU*|BEOU1OjoXNgUmUKOBw&#__{VP2NnmlQT@W z)29t%CZ{`2x6@|2rkNTxrn^l{=Q*c4rn`Ty@9+J0Jg?_Ni<$ViMtDfr9-r0m+HS&> zJKavyna2a*OOu zOF?7B{icA2{K?I)Nlt9FylAH`F1#d$yPv4A!S5;m?J5o-M z+Hs#KfU>~#@k$jrAbDO6txEiR?Fl(uOc3qW>cn(T<+t96yAn*Se{LAH?P{JQY2g<# zlZ`c^;j6p=nu(imCd~T@{;VOEC-?tiJW0hH$3C) zmR5!g?%=YH2fj^elUik)W6gGQCg=vzVx~bQf9FDuC z8ip+)nE7wx-g9aE;>UDgkVvJ>fnf+kV2nAktL}L>U5aPse7R|uI9!UEEy^ukR@Kf!4?t4kL)Y4q=43t^9kiSDcw;fn>t&eP>H@QPaB&+~Wfv4he0 zyJPM^8~^pfcD)ss8|@%8r0v-IS`QXAoNT3&#OdJxu2NKSmbz&+6hy>RlI`?O-jLCT zg~7#-*v()j-ip3E9cp}Q9aMvISJg@+CQhZ;2YGZu7@>7&skZny3Y%xiMbzF8P%_q?^3;8XIH1Xw_@4#Y^i<2!iF<_Wr^cp_acpT+$VqYN2 zgzmE;gj)7*t2^oH!?lV);9zWAL+}MFmeX`paSqq7&r<(JCr)p7V^ytNHa-j{E0`(9xRS+RiTmO0RB^ z$d$*jvV%_d)ff!|y78ut+rg6##vPG>Mm5nWu(#Y z$)uox@AE2%)>pejsRW%S_+xEc%}knXm z>>J>jLD1c1brL)-nS?)WJIfBlMW7WY+dF#b@?WehDF(?6h84}WGQ@mk;IdG{fUJ@l zEY8Q0Mhs}*WyUcA25SP>Z`Qmzx?9gVnw}OI(PTG4{I=8cH~Wd|P$j_ESg8k>ae>CO z$Rk_ezFAwEfh32bGUF!_hR?I9hjVM}$2*d4t8*w`>sCh^urj#1X(Ta4m*3!@G<~mp zGZvtuZwZ1UipJ<_0Z?Vr_=Mv!l;f=A|Iq7Yzs*Txy+4Y?R<*?=O0)nNPG<*7(4x}W zd(?#H9GVRQ%Dcf_A1zv$U2FbkwF#>rWD$*mi+~LlVp*UO%?uP>29gC z6SfpD)zt2^M01I7=xOotFg*Wb^vuCtrDVjz)x1iZK1{=gO$C4^(Wm@0%O3_%@HDXT z6v|m?`lQrar%oyX^Z}$vI!&(f6?1@9Hn<8tc%n-GZ~oK3tdRfgT|+~D*aJF~3>(I} zH`mEbQGL+J0;)CP^YXym`SU%z*@U{bXxri&7LVa_(KwC}i;J5%K8^}9eFr8Yui4@K z#L)UJW$os4!>O^fxH*+{j|1-;q`$Oe$M^mSCz7?7m_J7z9aXbI_v~`DJAHdadd(UX zhl8A6vz+Gn&$cd&CgfsAHMEL^FNA69lXU#qPeN+LxO#ctE)9y&rOIySfk5b)Ca~RQ)EJo{Nij)4We3`# zeMi32gTe5h*@wR_6B`eIOv4`2Mw0o3T_;}f0cZxZGmGDyG&K*8rAI<*0Gc6q+JS-VQh zso<-D0|%juB~?aZ5~9oSzL}9wlKz9^zAWcUp}DM}>+21ZN9B8b#N3gHxK|D9^ZZ6V zK*adU+uxIoL$9${8eNv#KvD9N{n?_NR<#Ncs(cP)KRSE)Ml}KbTbZpV#VVDs^>=I+ zH>2yaqm}zmmFI(<-HDVKa1QIHie~1I@+f*GIYW4#-8L0b^eZK*$HaL7y8G3qdi-(! z4Zl(X8v9%gR)9Ew+BME*jFepsuVLofvCp}Hv#&LnT3)&j%)rQCU?Ee1nM)a^Ahb*W z!d$*aRmLcUX0%nx^Y;E}@1$_4>~R-oIq;daP~^7WUQ!>#OvLg=Z0P+3u>H>zBOW~( zKagH&P{)ggd5*ZTM}`p`B8{RQvPFv9bi;pw^DncCDwNy(P;Q z-gFpTL73d5I5uj}&()3QGscXZ_2Etc)WTU(8F4c;22bO2MD;Mkf(b2x56*!`{VERZ6!-v%n z&ozH|RL9+H)f@srNI>AbmjUYjs67uE+h_i}qAwFV)nG|88l44bcZ% z9#eAH4i>z1`rJ-l8^d90pWwY-|;(#YT zBet1lns|EVNYLr<)+x^Mi2KIw;6H=qB*&FtRzFH!Z9L8NU^rBe^2^L0y+=;G)g9Uu zOQ{oYqDjKV-!Xg8l%REuMImF8r!m6Pj+^j@S-psk8)g^Ez0ODRhxONR3v&$4pJ`r;n>9A`U0p$)*{y_)v)1sY=dk%T&!f(IP}~0 zcJ53YRsq_I{@@~Q`8QShrpkV?PT&ZZNFNOxB&*kSi6)c*urbqPEtCF)Prt}Y74iNS zR+AlMa-X9YIhRYjcV9Xz`E>lKvD9=m#l@E!#sBmWef$n@MkXt+hhyCwzBcRw!a#`)G+TNFmyq9xEjd%CkA?KT1Jy zcKe4B<5K)0_527oD;UkSN8U)1B|3PB*>R>ELNxbrCjZ!z+_; z9*2!)3cw+z-rn9$T=oW2TibA#`Qzvu;kKXy%N*Mv)GKB7KH(DcT?DSXABy$QN2hhV`IfxZkzIk%I4xre^%XNCc>7VW?u{9 zUaiSdY)ou& z&9n|GX{7FE^iLEAvJMJvf>?Y#7!UY{A8f&dwy?UR{@kzfJ%=VkXjz{+Z-~>vVaSlc znvLXQAVkt67!8`zhXW9PcR5ZG^@R{*08?%a?A^*kJ{qx6B&CC~0Ky!Y9dp+!nJ=4) z$7Rc%OUCy?gM@D%wXgVv41;^N@G)uNENfW6EQsC;X5rtP7_*~}z@4|xKC7LyQeJT$ zf0*5P*eAQ0MH6i01QSCuNTDT2RnWqkW>bZ%7=J*r8Q#KIxQCjEFtjrqowQ~LMy|nH zRF|}`#LoI>;15qsV#paklS}pKJ+P%O0T8g~-oNJ3HlYtY>|w`XbXw^MaB^}Qh@)w+ z9334kwz9V3+iQKk@5~q(9f`+!Ov;K13lj|1edU%ZjzBoi%vDj*NVZh=GAN<^l|G*{ z7X;mrjV}Vxn$XVCi!q%T@K9+VTK7c`WC0*$u8&Q{0UHC7XS<4$ujNbi(uRLJD4P~3 zrJzT@PfSpmAjej>EEB0ODS2hs6{}~fo_>~VoGYA=E#@hXx5}6lJU9`s4!zBB&cT%j zRkg}%%<<~=2%pkFtqyEy1k`!&2_EG7N!w6jXk1tKL?{}!jA>ej4S-!nu?+2_ApqE*zrc72X0?!9+R|vEPyGG)Jx>j+0+gVH7S`94*_?>| zqd`);qdMk^!eBx0Fv?vrl@eh{JH#IW_hX4$o_6m0cP=S~(i?b)!05Hu4oeCJwg64u zi9HyivdrUaYK!mYY@@SDc1F<$eWeC@vr)|#b)fLl=X{<-DqJvA)=3R zmi^@UPxe$4kbo^pJ|R!18yim7*=oMlI6T^{T*?uOWS_%}5fDU!MX- zExR>mFo%TA<*2cVc6MsX%we}ZxVQl9$X@I5+*B<)Q9?!ZHK>K4KzfGKaoc)QL3J|* z)>EyaLPD?&uGMVg$kLVPilQX{_L=HW)T;M}WB2oAXa7|;BocakIau{7-j{%Kb2~CT)AE(l1g>JF^dH3=8wl_tqtD3 zER!V?G39;e*jd2+tHv^s*Q8;4U;rP0V?zW8?$lvJvoLW(`TL?>9q$}_6WZI>E9(aO z7EDYH0-y_~%0bb%)(ZZphRJe12{75vpCl!qoTS&0!_ms|e!x1}mUaN8J~I|Q`ICjL z_W*MTqLbNwDV16n2M40X0W>~i&S8hk$$bT&f$gC5M2TS5q1Qcxb%Qu55NaS?*319K z!&&N~u#+>gZHoJwT*)nDx@qQZ?6=jCgfR4IAk>sZJ#2mLxAV$o#IV@wWMy8Ux9%1O zT38bNwYw~8Ht5#w);d1O;|G5?B}Q5aUpEvN%!Nl^@=l#L50MP@#Vk4S9PNBgBNPjf zR00u^zZ*I+L+>-A#+sqHdaD}Lc$|o(Atk``&dl{a{{(p3GA_;gTx}G!g7kOnp&>yB zN1ANBl(qxIHF@8HG?snapBF|CnY7)K_in@et4AgZ4(cVH?E}m#986(c$>St6>Ow>e zI5L&spf7*cUuNbuef+DwA-%5d_SX2Sq0&U~ z34X~-p*;JxHD3)$?yAnoi<|qPooflB*1tV9T&I zX@PigeiQ)V>W$YQp6}fV8SasUM=fa|@hPJ$v&tlyld)y4c}ha5;z`a}5zY%|lNt&# z#4O;G5AO8>YHx0-NrMU4G-2rI)L#(b=YJYCd5>?#=UvwRy<3S;=~v1Z7*)#wkVn;& z*nhJ543o*NYGSs4KpQM50eDZt>Ei)MF%C9hoHk5=fbL8&9J?^%HZ+p;X#;Cd&nW95 zs}r|!kMXyoDJ4|tYZ(JZu}N6Wk|a(D8c*}!rmoT@qfSg8fWI1hs>5@-o=&{}S%sCZ zp;4||3H%nw6|Kpb;E2IH5rxdh@tQY4%tfig$-` zj))e4n}s8~BTZ0T-{ibRK= zepU-pt{a=ed>w_M@pQ@e?CSZG5D!13r80TqA}N8r!-dOle@J3!MZ$la&gib+>sPza zdtX_#cN^bL0BhW{4rZ#)W7$01>5`WtIgL9srGpjhS^7Ok-%Dn+?ivH!up=`98)giM6WvQW--)L6)9J z6Xk!t@^rb}u#MIEn0Fa!o&%I-Uj(S8;naux#uBCxlE}z1_P9NM{EX_y2gvXY!GCd9 z;*DMQZ!acmFeTuBg>wSJpDteM^1H^_C$8K%x{ikmIQz6;uRJkLwQ;pxS5W}a&0BEL zst)JIDn5r<6wENo60rVv!&>^xt3bq$Cj{4C2$}ex(?*8^;%*L4OWpd6!wWrD9(+eV z5Uwa)^Dio@B|B}{$v=OR6ej9pQ!*s~X4@(8uSauCp~QJLO1ON{A(Pv&++H!WK7(PU zZ>L#MFmXTHS3ODR9Wz+O-x^Bo=5OZop!%mUB#2tTaSftAUfKSgjt#~@Bu(>|N z6=`WC-Cf){cI474F))ax#Nu;wPfA)28{3bz1>Vvqy9B6a0Fk%lp!gBu!oyNr%T-pO&Ei8qso0#1 zn5K+ABF-t~_ea+?SuK*w6H^T~vK=YhY#2TA+k^?RAmVSPVWu~smtqb3s0LM_zjfD9 zs%M^>gsRlP>pZ6@0%O07W3RyD@|B0flKNkw3y}Rr27JUwSJCBQl-MVzyvVWR}Heh5{k)W^-PC|KK4u}I_W*mAcd=F}ND zfS+iQ#PDIiY3KCbkc3lOfWKc@lGl5e(DQL)aj_0X*Vt=}(r2-HMft;?z6s2(57*?G zX2#zbn$~a|?I>}2Gsq0r(TQWcIVgL)Ff`KejEOKkH1t?_o;efbhE*zW{(OF}e|vQ8M`xjor1Z8UpmM*x(-{_@sHQRj_^wLntgryI!uE+F;lY-rfn^+uJX6oW(-y`IMTc zsBxmeW>zrM>#O0c2o|$N;&k0;xrH^%`1oQL45;8)Hp1KyxhWCYqdKZg^AnVV^0q}C zMdmo=b$zH6MrXr#2d89`Lx1@qe*%nQ+6RQ1^#PjXQrK|934E=%&L@Vf0|PH6Lu&(G z^@q6In$pXzv1z$1&*KSnRzKa@S2YQee*rMC%7CfR(8y8^bh*fql)ox6a(x*>nWnyE z)=x;Vt1p3Nl z*`9{Y`DT76KYVL-HFimE@mi%vg6rx2GRVW|(TX9Mfu0E`tdmn3`CNeL>FF_#mnb># z_4D&nQBm=*`S$Ibu=mO8+s4K3anG>k5%N|Z4t+L~s9iHw?t}gP{|3FgcW2b_(hpN-gABvM zOy5m824~9kzZ$G_J`)l|0{rWn^4$qAJI`eUY#4De^YXD7TPufe?ylQtVyC5UyL+&t z{&A!uBPDgu)AJ~Ou2H=!Pa3r&9$dWxSMkro&$f>nQj&S{S-?;<7>*!@%#eBV7<*>Y?46sP!v_ywoQTRcf~%P4ErQp_Er<)#qK{4_=yId7qs zG*smWgG><3_?J>*Fn$ry_V7#u_)uf)p%y)4#L)217&OaWP?2WIt zO$YHIiGyQrv%GNGwfXq8wY6Vsyqo5yQP(pH2oNXM=-;5U-exp>+43=4+KisU`uCuE z9Vb9tRC$%swOG|BHych&+*42Y5K4E9Jm0KTtg=#HY5*?;w}1gea!J_0T?qB>uYue^ zD%y>o=lEW{_=m+~T{X!$7%7KmgO7wlfEx&|af+bu_sK-MAU9>NhJd50>6NF+-N}GE zOQZA0-Z+aa{8jLKIX&Q6@5=r4*?o}SwXg0d#by!+kM(zOQHkqB(T4`@WX5)S>7)Ti zOxeW^j8%}ZG6<>~+L9?}#OvzgqgYwjr3}hYQt#bx*{8;aDi1}WVaO0gWdgwo{vK(; zH6vlxe;86ic(i#5V?w6@!PF-77|{vy-+d*;C)*XHYA!^Em_1a4CY~0CoQopQo;^_3 z&OZ(_hsO?SrLO$q9|FdViM_7uUc9gFL@@19J>`ybOCE=zxpC?-!3VIaCuy)KRp@H$ZdOAg_jc0 zN$kEH$spjRVYZDiRJY*WYIg53H}t!lZTz`3;Y8`g2nR@ezaH_Y!q zz#E;crl;fQtHhN@iGzu?H~dTT^ktmHIPRfE7W5gvLMO71{P|ldzD=%NJVm@|R7%>B z_(Y7`{4jH~`w2jR`6_KyE9fDke;|*%xv1iVHAstd>oBX*?J`g8lE5!BixV(J1pU@h znIkIUcJcA-Z_aG{qqRB3N1!UBECAof$IN22(nNLnoJb0FFlH%I>)83m1XX0@X^A*+ zI(J;+B$oap$CiPKUDEr0@}<$wnWz+o@KM{uxr=`WpNu+lTyWllA%;bAZ$Ckm(19;s z%ToKycKi%vs+c3Q<4+*2B^K_|w40fFVMjoZ#p?LU;>Pf(vDMiAB~n7P>)}YMT>re+ z;Q2_W|OL3vWW5Vx!qk1sfyAmV^Spv{EB@WotgQ@^Qr%#gi0}Dz?uci z?IlJ=24{j3`DCWI11hb*0era1(g&7?)dnwhB*MdEU<0a~&eCMC#bsy5>-=j-by7)5pec>_5<@3?<7$Mr>m^V0_7J4nip zZK;$xY_90Va&}z+V9Qv4D9JWJoQ|TO zV$e!}7D*`FMVQ3V(eafG32yjMbaeF4kP(x{Lc^hFt68--W1@{g>)3H?4?j&rH-*8N zhj~=dcFOohx#5-tAbRsV-cgAfRTvQ;U)khjBK)c2m0~=3%hCD$t7th+(wCU%T#Zy@ z$b1!=MvnNef8YH{fKF?oWBou?Z=`Vt>`iC{J`Ii^UtM2-w`&O4_R#tBMQB(bCKs90 zXF89CgpB-R#@CWUIR8+IYV>>&ePffUj{PwqN{~L-uxUHu#NNd3-&^M|p(M4n^+HRk zyY5~M<3?^q&Ce_T4FpbcT&yD{uM0mHGcmE&5er~ON{v}pB2Z%B!(x-$d z5!f^ft61>znLO=x7->}A&NaTu5`^iq@WP1!CJsTXW;&W%XeJBSA7X3H=MCud<;F<2 zJQGP23V^K?SeV$P5dD1={vor3I?&K55Eptn`>xj5U}SQ<{*vP za~DljrjZILJ&%&%MP-;|CfXkXl^n z)>c+28ha-vzb*9%B71kvnL*J|FbEH`LX3a*T?m>IrZVnS%1Cp`!I@O0z4y{66IPsB z_CHdljj5Wj@k0lvFO>)L{(BKE7RfOp!Qgk%`E8$VECr;2PK}BcF~#baGb-TKk|Ju^ zYm+DL(F5nZ!xe$$45`Q4POpHq<84udV8AIIEMA-h@cTVaukEcrqXn1WeJY`{Sw=zO z@xY4O^Byb6bO8S?SgA1_zmJ$axG#x*!f~i84(3EF3Hx_hg*a{(YxAT*g1{K+DhoB- zEk+SBwYf2rYCj4x53C?{++IhCZi>E5~M780xiqLC79h%9Rk(g!v7_=!5Vx*ukaCZ+dypjnCP0Jt_l%`y<(dt-NN@p~H0T^$$tAYs8N*}?W3yb6ytbL7 z(Q^NB9}Ga6rDZJ=i9`+!4QZFEkB*PqXKtV0e){xje}7+`cHAvj zjZv1!P8t+~A2_;W5~QSp=nwZ#+fnIh_^WOtw1ifws0hSCk8(AWGfe9GFr%E+pk6uD=aJG$I?EZi+tid?VCasKS)cyK!2UAy@D_A$REM$~jz{51Sr}5mZEupD{#f zsO+7)aYoQJ!S*#a_a<4&vEkpRi@Sd{EGm41F;3IX34|CHgW|0LG}cxdeD`fpXmMHN zmw7i6bWWZ3w4>b)O4Q_j(G%1KkW~me1lh}j^L1_LcCw24soSVMe%yl3)Vr%JRQl)q zdDl&H9ADhqjF{L-{H7K%F%;pCbJ&1CP#O=%@)bs!-n5K zQ;VaPra<>=6WS|ufflM70gfxz_C6Ltt}Y2$1Y=*Il`a##{;|8E%sw0nRh-mQH9v1} zeHu|lpJnyp(vV1fwQ1GqpQJ$@^S!H#KKT3l$HzerrvuJyrwZ(O9^4gyv&Dt9#7amF zw%I+I0v=IOK>>l((J>|VB_}U1=>5f4O}3)%3+IBGdQWTqTiVqhsVOKZC@C|)eH+|4 zm(0^>*X5_g2Zlrx=-mhkCVYQorq#+uz-f3;jH$7Z3zN;w^=FI51vnl*D@n4k6o)_isEN~ zf<^)^LN5(t;I?1<%PV@%Z>zrH4`t*%yB~2s^+O+H&1KK417>)e>M*YIXu| zN1X-RcO<~Wl=~+j8bjuJJfb4N1hXVWB>gwt&ARJT!H_?}(lqmYJ;wN3irGWhc z3MCfyo0ODvdwbi;+S zs4?&-|KHA7j+oCGn7FyE!-Y*VIcgTX9?@I7X*F6znVuFC+C?1<<+Wu(q_|{^3IlBF zL?gx_Az?Q5s5`=-lW3{?3##I6dINg&4JTVSvtSU83iUStyekTWa$-MkRdXIz#-xu` zp>+LDj$LJkHt+{pmts$F8-5Xje@v>@`Rr%y-bN6A(DitLvya+!r~eY4@Z?$e_}hm= zYom~&l3A73>w{;ml?%bqOW0rzy$w(>L;(V!o-dfmxR$!OeoU4i(3`<+DwgGCBi;`Y zbFc~xN5?D4NSnS}9xO!WSv(!a=6$j2mZ$N6YbA%({eaa9-vC!4qo?RI0ixd(NP*YPY;}6^#GrYt9Fc^}$(Qe39KG3w}6hEM?r^i}c z$N46GxOjRGi9}-2def&5GlQbHx3|;M(p-ewM!p}T+xFao@EKvPOK<;=BWuutcUpV; zm3Fe<70qCg^&*!SKgiL>#=*|kQ)KCelcn@KEj^4Xih&o$e^Sfo(tzk|Z~~g)tzYN; zMkp5TJu(2{Dm2grD@su1;wVs}N=zVkEs_83)?yw%+w zstZ7nWNSM4Dt@w;aKv!|(0PgCS~oYjf!)(RMWemcUbzj_BzpH74R3R;a6sO2m!uGIr6m&d}_g#ohMsgMyM29wyCF6@HkLNL_2F{K%G#QWk}~jh0UAJ5R5aIn zJzA@*Zdaq$t~QhO7c(}Lw?Hb>KH5V}Gzx+6wAV8WckBW-sKyo&~bftTM&Uc0me^x+X zPR_jgl&D1lgm%3UAct-qtb{6%X)57BI)Tu987f}F<(%-2_V#w=!0cUaSxfcM<6SMESYctk&}$CQ9+7w=Y$ z_ZOX4P?y`|WfoT>;M-JBVe$Oa7aSs)C|Gmb*MCK%8lpMNzd!d@vGMi9*8a$dNR4c9eNk^sA-v9U zx>$w6NgFnjPkn)>$cWv)v|k_=QJD$!^vLG5JMM?2?z_9Z$6f2gj8g*JaH3&M2J~bw zg%vXm*1f|{Ndw`-a&c7$F+dYG{(^4~Rh<@k+fjhJ=c z`W@#NIQ>t9#JoZ?wF)G_M}P*a#D_pyKHtOamr4-V3EcV z0xnSXc<35G^v=>rdaVq&IjlM7J@pSXwC}_Vc6>&_$MbtjDVAY2Ps6N%p0XQ)MwI!P zL}2jrjoAPOph@f7*^MEc_pCwhQ&(f$(|X^9oaAS%!6E9*vRBqeNlM>S5LdfW5z@iO07efmY4?L^HK%HsjrzOSE1B;)&{|tgNi1B_(6I685Nu%7Y<`nvxQh z3{~BP+#MZN2z3G!#6;4?Ea>j;D|H^7jBuiQL_W4h#tB=ME~On3gH;v#*Ocq$Zk^h! zh7X*M4TGYGKc@`MK{m!;yyHk5+i?91&VU=s1L*Vl%}>Vz6c|Gfs?tzipIFEHf;P6p zgC5D4_Bk%|c+fo1el%OM0U{18^+W!0C|7H4|3z+0%l25TdW1N+U}Du`T_5?ZD;!SQ zX9}sLKP|x{5&I19|K?@WU@T#h$Z*TdRQuIcu}ZWs%s4Q)mPfUI;J%P&z%`*i8LK$n zEjKzJj4r*x%M%vjY0Xb}Xa{_iSDtrht-^I~zWr<8=+HFdo>jNG;If9cZh{!IWJz`v zrcSLs_`5!2!5i^eoV)+ICL9xBV`t}kF{vmfCZ-qos^WgIy=z@V!dNXr_b!FQ64D22 z{uzZg5Kp(#=$vQg2?j-bi_;QBE;(KEhMn~|X6>&?QL!vKHKL64^z?3bt*xvuF)@98 zeTgPFPWc4{W@l#D_~j%pWHEuDE}1D|7aUa?@Tbo6xJGruz>Sf;JhCPfzGJn&JUb@0Gw~&5x9}@el#qOZ4h%J-CZ|)Z$ijXn54?_ejo9Gk0Y-i$Udr4 zX7Py`&|5Y#b7}IBqkZWUMPVqE*c48L=Edau%HDpQ?Al&!N(x0wtZQHWq=kD&k$HjW1GACllzSk|6?(%8K?yS@KICl#K=?QSaeDI z{fUS;Jw3(1BA9OoxIb*<9!}KAlavq^zS-C7ybG7yiLo`-wfhng5ivA0WW&!9_9Nmo zM;4L?Pp;0kSbqXkwkav;tkhTTd96Hmk#$~>#@eED zsy$y+bf zGr_EpHC*zAtj4rZeI!h!&dTlQR#I04C8~Qe0!9JG0&h>qCSqr8l!v}>{|p3v9$Eth z1BQ4!0NT+gTuV)iAH<=0Q({!Pr_KUXnD9zk>o?d~ltgE)s2W~g*{#E%wpr_X_AFkdUPv+e=f;kP3~ z3LDW2nQ{TLyjo0Z^}fs;>HrsMJe%r0cu_=*P4#f6ov6mmetgjW{e9fOrN^7sBP2E| z{WOA%-yr}6=%7QdnW}lnt!x9|6N$Ol%83Gg1~{wpBE^8qjs!QM#L7vzPAYXjJ=V!+ zLB_g=qoXnqHJZhp+H$$$*OAC&={4sVmsP3p?|H{>C+_=nxQ_enBia&~8zvfr9@a7u zXQic0`B~*GxakLrVi!3_j-6J~wO+PxuUn-dmzU&+c_b1!Ha2ErWTUC)=y;eb;RkEZ z9^U$tCIASoJh)!+T4{FM$;`^i%FNVBD~NM4LcG>1?@F(7$H&LdZ-HtU-og!+IrSFLP*q?|v@9eggM82%Wtri|?~RI( znbaf~MWi_v;yq`;f)-_=b5U!02UC_Oe&0>k=k$>0Yh zv9g@=^Zoeqdc34gpzpY)suvQJPY-t;0zi2QpsL(%dTjQ0bgzp~oSy^zWlMwQZx7Oy z(PbvE!3GW|ZGi)^&pRlo^gl^kGZ0wpUY^w5^zparqJRFBVR2h43+G-DDV8Lw9`KYA zo}}u#u7p|QFS@x2DGYbz)tY5HW?L23P$)E5t}7u868#6O4Ky8r3uZ0WQCzCIZ2tZG zOX5Pp8|OiuuN@s7X4T(RS;$g1%U69%r$rI<FK$-@#aVs4Y+e}Hq@1wU2_p8jS25vv$UKlkLr3sAN`Wk zFIDjec|i?M6#_Ls|Knsvm4#1K^lsif{&kFe-Z)wOfWfCvplCTZ5>YyF*N$|9i(20! zWg$GK+@G+n@EV&kp48e<5wy@qv_K$pD~?7Nl+U7H%DUFDrSmwy6P?@o9}ZnSDUo8qPB|9ahF<$ z8kchy%X-vV$bO>Abuk&}B5h%LJgF{hKn$oG@)WWTf0*DcV5mQH`6laQ1Q+$&D6 z)UQ>reAP+$py24-;BK3#YwM}1s!9?gFNYV|yXMkVS;+;8Zo`g@x0D|!pVj6_&CJfG zrlO)ECnu8m!KQCwlBdd2p)FljlwM>SB}l~3__ODtYxQL4)wF~)Y&yB81}`3EqL*jb zD7jEANg0zF1_ATq1TR{3nVhjO(i^tDDt>_n4!qf1%JW^P3cUoz8gsoMewEMH4R{-^ z%47v&w-@h@xI1|&%feg_^4OuHG_F$1$EYPDg5G<$|9nXOoZ#l>Mkw{b!`N};QDrb! zB<^*zn8>7P{CtP#jA9KsrNQ;ECW!3iA4MXOraVn}CMjB!5tECH;=H`D?U9UM294z= zvD5*pPmAl<<8s6#M(FYgZJNZ6zgDzuRF0%F5puMvPH~}jHq&? zQj(Lir7GL4*Z=zUHW6w_ulf`BgU$xYa8wq@ox6tzd)9e%b+ryhz1Q(F5{X<`Sjf!G z^cJU$RWK@vaotkGpiD@~KNxEfuupch|CRMuz7^Uq5llr8xyK_Ml42UVX$Yf7Us}&^ zzj%y{p|(%}gb8AdU5GU-IlR0gybpvi@(ocM^6r|dW>U_JV)W-Mx@T~)z1uN*)FV5P zf(?t&80P^jnF#LQG=sb|Dw~@{7{XSLP0EPc%hflzi6ef}hI6G4?~LUPZ^7*6e(E>B zDoVM$yd;SH@6#!7oEx=_i>)ahF2^{DLS>Eb&=3qL%bg>OS~&K8(BcFwbM?QNfLnH! zCHy2e?>5zB-$ynWagvsn{D;=>U$sm@{$2XzVQ6S*xJ>sJEFz=;%0m+U=P|Hz_y7|?&_&E&x(3AHQ2q-Z*4Z9J z6M%n}l}BGMHbxH~l1~(7fuk(|N(KUU#t<|2W-DUu&rH@DY9h6sQLo#m`3Zi!F96o= zMfi-1t?MnGE(n3`3I(C+FJeQtG;Qv z(x?>^3(MgD3MYT8tFh_Idyo}^nz@Wy%|3iBY?XA%+?HcyWqoa#6*VL5 zBTgGXuu-7-<5P*06zdP7>nk+FmXld6G zTv}2h2~xRvKr?4gPN65#B*O%NWTV;8gcB9e=T&~OfdR5a*n%O^UCca~z=pL=J;zoD zBenCy<)cW2INChA!4Zq%u>6U2g7GVxgV!i7NBfmkSKlH)Ke;jy^`_R`$#Z48mS&1F zGeciF#GE6wysGLs)e7H^Jw7&ebbP$?s=g{GBZGpL_UPZgI>*+Q(a)#`tItSI2m0U#FO@>?o zP5PsqzU)4IHEc}9IvA#3-=z=NTa9K4*w4*3B!=bL%B)htI9~HkcLIAzh)!A#07Ow*E?&XWtAD%1@YMP7EE`M-fHh~A*xLD;-Tuxa z;#LQp$wx%|jS%rUv(VEcGk4hNk5!DLeoqB!mJ>Cn5_H%-I$Cb^Iv&dr8^&F`H6RX=25wW zHM9ETI^z3X6%YgRo+zCWQxQEnMA+v+GJd5Iy#wfR9@C$u>cY&>D6CSyd1bWaUX313 z4@l4>E)O`FR6V=kv5*{92P{1&2x!B}d zn2Dd4mzS5BnVFL#;kqs-nWqOYsi=5E8LLZ~#(n=`Z&Ek!*||ZRWtnd$|!C{{8dY@>aq(Dh2!39erL2`{J_|f_O|Wq9YOg{So~N^^_z^ z{#I7ogKHbj{>%JoRfsHAmJdEPc-@t`F;aBAHK1sJuB=t0NzFN-G=g5&9~29?_Qfe%bAAc;&>RfPl6#W?=2qk+~FV-RJ)P{&K@_v*-Qwr!ImkQ&Zf6g5L%$ ze@xmUHK8KHgQTQD8N<6ZiziL)`)3_*uOerS-KU;ah1RCTl0MN7vM?=RDhRM~=?xzu zDK8&srSIqyX>iIR_0hW1Vo!Hmp5v{ku6A{Cae+c- zI5AV>s(y+Sf2!7FO&&Bd)A_UO=HcOSbNf$ob8}^g`Jai(;yXEG^;qYorhcdef5~q3 zC-IV{|5S#m%Gn1WBFRbY0D;i{@E6Y;-`9lA92^{6Zub)r5`OM7Gd4DsmX>yRueHl0 z5-SJE)RYODVi#lP%OM0w?sE8(r<-7ES zhNy_aNfWdis48+zi;MCl)`1pZ`jy>>%$rva@C@Ks?NUz$U5QB#{ywfxF1VD~_0hlk zjy3R+UFc_rMkEt=My!=SXwFt2b-Hz|QEG;c*Eq3@^?HRXtQi%I6972K2k7k^u%8mHbA05xlI2Y#UOWZ=Pat1HG zS9aZUM7++H?5nix{tP9Xq9%^-8?&cdgo>Tl>smT4*UwtY*XgVd)x2%JPk^jcH&=3j zr#D?>3e;tBI8s5Op`kA?FJfY1X;$GBEY@AkSSd;hO#o#s36YI0)txNE?1--rc2`|0r@_IG_B?+AsYh>LM zbRl!UFzvNWb%3d56%{W;S?p8f9krE{VyEs@RyAqR$uI zpu6h)d~~Q-J6V>DEAn-+j?)QZ-fGc#*l6ohR&3*3r>XUd}>{*}QrNBCU@#cQto>(tb)T z-#Q{tkuOqRTwH9jn=aOX@k&Tk;l>om#{)ggWa;Ajw-Xh3i7~a>`9G_8ZK1^#R-?%FW|&YoIj?ZqUyLf(=HZ)X&seFyc|vz$O|~F zFco2jO98DPUIL3Y3egFBbM+R3{qsjBQ+whps!KP}N~RYV{;4!3QJEom)H;~jiU zbl8y>B0QW?O(6oJ74hBYv;4p8WsZR}M42ijIOKv8^YeH2+wmx&T}w+#GPL38sy}dV6&^8kvR`T3A}k_8P%i&c)6ybB z8pqGiFW&E{m}48uOz6UA@_lTuxmmcVq8PF268ZOuUV1*RC8Y6PH>p~h7xnQk&tiT;>_V?@n-3^}%_*7Ngw0t>A2^6>Bo z3Bi`oWeTku?CtHhFB_)@*a*K6h1$1MvlcXCXy$->EV#m%LCjY^vxGVKy&QqnzkVes zGjwk%NK1bT2*?@VcNZMNXx%D18BawwNc{^W{L;3^SEYVe@Xa_mIhj#4SL;VR5IQ$I zixm3NcwYAgt98PU{yi=l5`vK6wIuK=t~kQ2M$Y{^9sYyH-%FGal#!k{aRJ!brr(@} zU6>By@t5bZ@<%@O+v?SOQAoHvUkMmJfhAK#6sccQqxqP=)Tbh7VPIgCNnDgOG2u?u z{5(553l9$u34tquqrya%my@gPc=gqz>1l)@x1Tt`DnsTgjWGb}#-599cWdRi^5Ht{ z%eT#yjCj$ZC^#z0$_^`ymqI?=AnG_t_~4Y4)rCvZcvqU-4lm!AZtzTHr0CB-@aw%fGI>guMbPSL~^k6#;MSek_QVxO!%tTi=Ucfz8GVD z7Cl$l%VseTya^;CB%DFv78drsK2RU7F=E%{B{gpGtl*YzlN9mf!h^$G3Qh{4k@d0N zIEGUdC-oq0W&McC@|b^@`Y1n@;c!-g;@|P|baNgs51@&SEm`*~*}i*ibcp_e{WD+X zYrMFS_gThX8U;1nHwN_!U6U;}_H?D9r0&hqGsSXMzra8f)M~e~t#oZQL2~TbP*gkTzjsuTeEKn!7uDEyJ%&dh+ zQmLM-+rPZ5<2Wr)3j5Nwc#Ye)KNo4niv?WYbq=Z_Bw<kL8A81fcfo0*xJnAo`SEf)*n2<)`Xm{z6FM@57;Y;e-% zscSN-tg7P3QF%MDkxHy~fTw^`G3vbcY)m1V9CoQHst90YE@%`~!F%dq#n~hK$x3L_R zlB3Sv?Mq2&7x8ap!WG)gzsL8No7_u;)8*vl|9vSgzP7wvKEm;1($>+jV*Z#9T-(ra zcQ9FCQYAo)DMzbbHNNZdl+hOzmXP@iTE$^;gTu8vwWB|W2$2mU+R8e^>o~N20L6isIiof7yMQ4m$Rf_z}H@JIK z?ekK$`z#wNIk~9&-bj1Elh$jV0v*4@!uJ_2(}S0v4s}}G;tk6cM=kc1O$=G1w|93X z(}$}qUga5HNR*6t(R!?;sEFEU9h|0|P+mT)kH8y-Bw|`pybNZCW^V6; z`<;;0T?(>ROr9{zFzfFhxjz(|#d6^*EU|F%mfG!U!zK=)%`n)ZE$Uo8k63zdpIuI}k85JSJrIGqZHLnj0Oq*3voB zKW?tflq1TEJN~y`Nq8YOiR$MDSoEC4gaTWKq(<*C)Yr|*X6Moye_aOr8LX-r9~bws zfg%9_6n$TwoXr1~Yen140v^Ih@SyU%`lwf;C{gJUq!NC5#LVUn#{h6>S=^ zi#PQ;oZN+TP`HU%6sau=;p`oTil^tgLhIti=?s=EaKt0}RdMnjH`z=dv-c(1UAJC3 zPUk$5dPp*p27vZS!Em$+-m)e!e;a^RhyIH_99+EA7NV3AfzOT0r)#Y~wH5;GSJA;m z^-VP)z*G=S3u0km;o@?!(G^;x!Au%w;x7wUBrF)i;3agtwba477ou=biUDFD> z-?O&CkF11yL=44!5&iOVa*Qf@!rNxMb6=JFBl2jDF&;a&6R|_>TB8)gteE-mxJ@z@ zt={Y*duEl;qJDc7<*}uD?RUMVH>Fx(!w&rANjn(jV>Gn;t$M6$?&D&+Zu+yEn=X0; z@&tJM+}|!_$+w9HxM%3Tp&zrcvDwf4Y&vT`)>4H+AV-Pvl9p7Hs`@gw{@1dD;VaErkjGLNxD6Q8*TrTLYWm9kT` zBJ00DR;x`dZPgSuSH0F(Cnj8OW_7zE$aBMANvCyFNycMqQNv0k8=l~&f zGD%FqjfWdfk(+lojosUZ{PikdXHr2HuD-U3u8q%>T7x{IqCX#tiS+Tw1zpSn1H~!h zsf3}WdaRknB&dk^rk&fDOze9g*UWT`TD9Nm;cBH1_~7Zx%uEAA!*}XjL(_-XGcz-X z(I@lKCK*{K$GXph)Y+V0pg+X?)n$U2I3uYr zqBieI<99>V8WDRh!VAD>+2*vkyQA=Mw$7?T;{i znZdQUC`%3uJ^asG_|K1Zk0K%>Ugv8S_{=P{Rs_78@XZLZTvpaWv)a1Mc)1!}!oJs~ znUv))n7Z-ndZ}{}eGF6NywZGgb2>GfP&b{5+9%y;PHgKuLwE#?b0ABFt5aa`7 zWsJx@Zi=|EDZ_Q)+Z<<#?7U&0&rWzqbdoztJb%XR5P`zhO-Ai5$v=e8OJT4<>sk@7 zGpHbW#y@jBHZG1r7;5X}q=F>RH}HMWQfpaO`|x6li6!-{Z%EA$?R`|KFBd4RQjfK4 z*>5LN9zFbX=6Pv(xe`Nimzj(9=T%Uw56Seiz89?&ESoMt^vs3(AuTtTM`W8{Jw)k! z0!F6Ev@je%ikqy7!|f;r72raXI3Wk+Qdrm!^&M#4Tq2|E{Gs=D<+J*n)M=5Ai9G8V zOl>xFj}x4L&zw!iNoRH>p8}BSG;OZb&Q}}Qzha3?H;blysKM;D<$%JBeGiLzEvnnv z#8N>y!XA*jvsIbGTYv71Yu~n6OrnyK=t>?;DiT*u`MWoruy3tQXLk`j3|UB{J1 zu0#d8qp_F2)f|Dht zzII^hC3!8k!=Lr$uMxUfsjLrF@dvek=>WA`>oul zF2Xs<$;m@rRkWAC0-kQA@;UkWi;0JdG!)IV^NWUg!QmY3MsDBshwW2VJn8-WEvhp! zGbuzonY=Ch{htpe3!ZLIHSHkOxVE;osFB_1Ct(C8G^y6pKm{ILX}B;%I!RCCzk5$- zEiL(0rk?`zgOLW*-8AO#FiE}x5VsU!X>h%R|3vY{i?-t4wlx&zo2*u*^hCks&OhF# z;}b?92D7UH`)Q(OH1NtYT2 z$^OM=cecAn<=oudRo^*@N?oJZ&y<0uvU+yeaq7{Rc0$5tD)}C*x0;Y|MqYze>&Z z>U!QshaKSb>N;ck?Z1s_!6FFF+N0Jj?63_!joEUG8VrI6UpNJBe_EX6KqbP4qfZqNX za+DO;sprAz+Z53?)*=Llny9!#O_Gc#*%J&M0|54h!`HOTX<5*HHhDQW3hEO+?A^k< ze9ZpBZDZ7G$ynXg)N}>=qXGuMtfOIpsw(R0ZU!0iv?yTSqLm{j!@Ga~{P|2eBjmc( zlP?_!kii$rn6z5#c}UVgGICsRH%86(#r^Q%1EWf|S*%dbSVRPJok@8-DxXtW zDb26MNn@vVOU_Ob6vN;?!RizH_4ZenbLI#Yz`kyW=u^aekHmAyX!_a0)4+CDLz|-v zE~h!NztyzsbqGozDQfRauB{*;Dw45DNqSZ>1h*{4m`l*TY2^wVTWhYgdy^>@M8F`$ zm*1k1BuM_Xxw-lA(f0-qN9=lHVj=-D@eHXvs<*ZB(|ym>YEm`6Z*Om}IiuI>vR-Qw zpNaTIhPI-j0^R23!M|LXPKgeX14j)4(1dt6HRkKxU&&LxZbdlS%zIiwtpT=(R?!1t z*qy;NX81I@9Kw`AmX+rx^*8}L?^POvczIoS?s+0{C~5w9i|Xml)H@oo5|R-U3kE!1zrH*XY*QyHl-gw%7c+QZ z0xMljP1ke9{8GA9l$4YL0s>^I&9u#a{J8leq`Nc<6jN8rsL9UE$*F+B7F&I4YpU-a z{2O<~B?P>9$x%vR2xyi}^v4GBlLn91d1+vF2jJJy9fKCk_*xO-?c{0lVEfPSI1p^> z6yIG`MbnE!jDfMR@n<@Z%>tZrjVSn;tPy!5 z2{$*BJx`d&XX}^1PV*Jm`Ek^H3ZZj*FjL9Pf#&n!;o)J%V2FFDwDiBsio-=FZd))o zZg^MN6k%635)EGRw>l`Pd9)CX3DJKyf32gX#EU(hdxdgYTV5q}ILSP;_e9HtT%7mq zyoD-gUfUxtV0l-(#1NJGHc2B(nL#r#%qZHijg^?LRqzfdqs8-C*VsdwKZ}Brl9Gx_ z!teH{m43E+e1Ac!&8)*zUmV%h!}H0>$;HLRW_RS>$znlY+K)+FFc>UIUO5Lg5|W0! ze$V#!kf@-mo1Wt4;NW0kvDFj(eh5iv`nTDFuHmvCnNnJBb~oZ!5n_u)sRB|LT#iZ- zwU9n?G64Jc-%L0FcBcmv$Nd1ym%Sf822I| zyzEzBlWvt+a}9^dFU+snt4{i9f4JGn1Iku;dBK{b{si(JsR%PHZ_gT%ZbilAcVDVNWfdb2yu$}EAi7p|7lYGh8M0Kp*1iAk zoOMU4W;)Dm))bl(T>0{|v9TOpt@!U+%~u*XOhTIx^_b97U+8Nss%=>bjpyr3`0Drf z_Zk0Jp3hzeR2VD+27~MB>g?x!!qyZxQpVoM`B4;-6chkcbl=#fQ967M`c*xYoEK1K zh9$MwQI~<-9~k-YNF%e)JZ*B$g8coT7ZzLIwznJjk=tbMe2TkcDx%2g3 z^IXro{c2y;=IP{gc6~TKJw3g;y1GA>gMl1c#;n)oTu!9V=c6tF?X^H|)Z-#Po%WO5UwZ9xaY6j8Fine?< z7|#}RFWXOP-48JvFrHV-i<<4Vm~`Q^6>b7CZe4oQ-99cZ+FLWAxF15D0_(%{RjFs@ zh`;u2Z@Lr=JHjW?4NCgeyV7|8;6{)+;UxL$S@67pc4E+ji4X*o+q2bU7eR=<{cL3I ziR5RZKjbJDQGcYyy5Oh8A8rcXn!FV55HS&opnA=kZWc*^1n30f`zh0i8Vtgp3U2eZ zk7B0Jy~cU1A2y&yxSBz^-&=qE!u`^#Q_uMK!N1AKQ#glXIQ@yXHsa{CENLy~{mN3E zJ;CDMznAUx^>5PGXc<~QKE7%_Wtgmv?N<=5tH1wqX9$8+RDFH@|4;=()qHsb!`NN( z5l)Ql!Hq9LH&9H(>#YrCzos9R7?;*HV(*MGcKr3BI+Nkf=50?)I%oewp6zpIq+g)# z`3P1OmT4^yN=+wj6ei&Ay0E2*82||8S4UEx*D5zf(^gNx&^Bk!;b>@Z z6xqNKCjS~9{t!d>-l8bV0FO&^YbZ*FTCrK|EF`3Bztsb&1dx!FP-LT>PV%Wp1J=;s z^>lm6o?c#3QliGBz^pB!LWh^AAfxR<0R3cz@AvLq{?tqNy(OOj6@ zZ^#Tu>;3uRcJkLct-OBzN357MOs>#8dpydSMV(hC5u=xBjhs9 zxa2Kho@<(dZrXST;XBvRKAfbmvSnD>ui>kRO}v8|;ss1RpsR^n-OFT3=DE|a`=oI z>cpSBzLVa^$$4J0A3{w{*SkVd@&X_2N~TG$BkduOqvPXr{f?hAwvsZq)DKde zJLgL-`xi}A&L;x^2x^k$YhPAHc_j=E)8MvsT4SRCGmRs!*Ak+gAp|plE1o`d zdU`b7c!?$$RZSE5Oq;(Zwcg0j@2SaspEB^?{DvI@fhbS!WV3W6>?cs*Ms@C@+BfU` z{wv7S ztzyHSasA-0YZ~CepQSCm8yXr~qM9e}dtJJGs>5U~NPg?v2GQ1@xih&I+$-yytdV6d zVkP`CbU6bR%*-S+Sk9zZY;hR3+MhbS9ypj7Jln>&x@xXuOd4ETTEZfmdwL0hC^qz_ zQ&Vq6p=#wAK=$p2bk@Itm}Wxg!UlHT4xzpd4h}9Z7Zdr?N4Po@gEjhnsf&ccGKg3s zGg6yhB*fJC!Pk$CXL7~%4>Qa4VU;WR&m%!MIHP2W$*=Q{jU3Sa~1EUn9huWsm)JkEhWXp!XhGMWMrw~VMDAb`Jq7J8O&7DNf->K zZtY&J_mdQ0I%R5s$PPC%)mr_u(07?pa%2zEI0%l&C%`(#?c@X~;u1=-s>jkhC`vg7 zBz^3&S0SIJSW12U-p|k#4L2YgFufl^$4tNf{CHfYTVQH4mc7{K*I<_!*by|E$p@lo zCXL1YgD#WkJ~W;VMnNS*N-2awq~JN=h2AOe*d_3cm?Wei4<`8OF^3oVgnpW|4&w)) z&>?08hd|-e&@hf#$^|V-HEQ)(m+C8)m=YB%pKebN*{23_0-o9nHW(LPGq`+Zv46%Zo~zoyGI2lGIrD27qfHL_PdBMkWyD4Aljq zc=X3i+S*_5s&IbO|1fPXA&R-psyuD158szjED(Y-!FMVq7`fq9W@+Lu(7hHfatXa*h2TMt*uRdWUO+q@M>vt%gM_-cf8zEy&T9(OaE*9qF0r% zMpag_FV}b6wVkuEvU<0zbw}cq*LN78gMh`=)#`SgWxW*+~$&cr&OgjR_-Z6W{=Kik_@?QnXu|32Y@z4kueoWHYwB9L?=Sx3*?n)S^ zg8C?MQLLgc@)gx#$~3%%FD|q3{86CwD+@ySL8T4p8pPWbQq!L^Lj8cFsS4Rdt7XM zl#SChhpPKJ+aXB!I!w&9D!X&-@V__e59q$4dX0Bqf9}*4rvA3qAwFf8ZPnpn%!7gu za+uPEm#)m>N88d88TfWPI%FK1oDy~NBfOf3kgza?;IGsTiXkwyte5-MCLGy=LL#uW zx_a^u3Un?{OG_JS(BLZ3arEz7c)U4oa9R}>5fS0$<`x&Pv@`%3$69j3V!qxS&o9?k z^k9r<3tjcRR~5bJM2MD=x{-O$r}z~!0im-`$wWjv;AAuM^=4LJ5Ay?CBfTVoBw`mD zbTg&(`|rcVqhQAUy+hMCJK?O=wP}Iuf$`oS@2ZwdfW|**_jSL3bqiihs=QX4J&xxp zKG61ZpPipecpS|ntBR9EhaDeh{h2hFhC)3&xo2?5g^lXnNSn#BGMDBGuXbCAPj8zv zRfwb`yBar=qB>)iqZ!=Y9uH;?iqywj+VY2o>8W!W;UnM+X$IlUwx@tqmRP@}EEP8? z2yi}ziyt)Sf{M=C?o5VjfNN4jRF51cGIv|j(NiZO^a4Ee4OYwb8sER==8C)R47^tr zr76WGo@KDAtAEQA%Jb&6b zQz#MzizH^?5mTd|4Y8-}HOYS}bw?m3L{iw}f_t|jqX3{cMi~vEOsl8EmEQ=nl2qKF zZd@qtota6QKGeFbejEiZC=uYl)k;Yt#cOfCX01P41ODOM)t~xfdVf?N&z|zq#>mi8 z#@kq1TU%NdR##8%x>cBV1a?PYf#T^>L0}b?+w1F^AS#L$oN{RK>_Ws6+= z{QRP#E2{xD?bW@9)ai$gPG?a)2vxqbC|+U?;?TGG2FLVEM7LjPywo9x04Ii*PGbON za6~Rok>B~Kr_;TQ((x^9W+Vh5pkA93lMSyDEu1zafrnHPcsG<<_&s%4WmK@7Gf|}k z1qEg7_67$#{%oQ8bksR8OX8pdyAnLAoGrF0vi4Tx-o^Nwe`wozd`qg_5RD;e_yK^6 zm^LmKFCZY|HLkFJ*%U5e`!m2kH{}f;fgw0HMm7$jQF^uG&o*_`XrwO}1AAySEibl1 zKZbb{1elbp6Hzb&r;m^1Rc`9>*I@>4z8TJ) zWmaS1wUo1t(Q*Z3{0?e~7G`D}J<(?$BID22UhdU`-o+Xi(22cIuK!I@^o+VhYo8iy zq&AjLXiXPk6&No|n$+&_SIbiaqaqRV`(G(Dv&oN}9s2W}m#b^xp?hvu zJg|(x=$V597t=SXYFik+o~daSZa+q{4Uk47M+5-KvAT zC$?c=Du_et>e0uTpBH?5d@SO+CFAJm$en>1E*0Zisy1>|zsvFEn{uI)Mo~rivnGL4 z(ac~=OG`LzESGE`th`)PvtplYGvH&1anacXFIb4CeCDMyJ;-gN^RrC!(3jzQfw^x% z(B0<8Ur*;I^UwVfRF0B+pY!o_fOpDoQm0BYAn z9nyNo^x<6vx*F~^0(2yTepB|c`(biYEegNgRNb)z zbF*`^NXKMJbG{;Z94e}Dak0ud*(c*fTzRW=)93EOCA9BYh%SpcHFkrN}_U$ymT zG4@rh%=+gxwu*ze01~g3Hm8P$>UhMlOiMtx6+A5jYUVC2KNVm6s<2kk0r6b zkh&Cf&r+~$|LOAd4-gKHGk>IO`lGOxk?r_u_CEkKqZO59IcNxd*3VTXg!--nwwjS_}Pg4 z&Mh&=|8trK&(6*)st;~_Ujij)fd;St zY@RAPQA$-hyiFIq0Io!Zo|>PBhjx+On|Dti5(oB1v$RXx{ryFg2Tzvj?7h7ktE*v6 zP1Ud_W;~VO6?V>!hK5Wjgy@IY4xSeNF9R0?3k%*sZ`t{^mfUMgD?W#FU-eoiw*>&f z-(`A8{@M(yNJ?5r8f~L%IygJ)ZXK6x&n_>Qk1@#}V1`TWXK~Q}i0LCqLQYb-3+&}Z zhS)2om&a1$Zb>|-1A0Ge5f)d8by##h7<=yXE;m%5wWy`+kD<)`1*yHny3JX7WBH)zz=+9cK zFeE!Q7``hlkDSX(_q}#_1RNa~mUGxSU5ko;;|Sd|w^d?~2mh(=a+SoA3?3HDViB7& zM6?dcwP}w3cJ?=`P7%k_#(B}Gih(Clp%-a4{I#{N^ZD6dJg;h^xr|DJhv!Oyi?b^EmPTc zy983brWJSqEgq-Vb@t*mu&66e|GvHTM0#X0Se==fd3||GeFxj}`dwcSJa^Lr$2(hj z71YQCM@8|`e>iU}yQ#&&N@A3XbvH-D8thLroBWlIabcHqEaUXM@hpzt(dlC3+D*xR$FPc{XnqKE&vzJ@X+ z`#fLvr*c8KGg^0&lx7wV$~@%xPK~)VL+EJz){iR}{B9ZJm9e4~zVsncBMhQ~6s%Mf z{`^iv#WbS~TBtos66VPJrMmhw*|5&Z&*y%BubPb=xx5WioD2J~smHo^^-v}zW5%~V z3l**q1?jf$rn~xX?T(OY4Y~Z?8LX^i59iQJ^Eg{+%5rWe8RK~m$ATQf@-(sQ1`8oa zs^k?Apc3?NYt6XxQYTwmu1yYLo; zOe4dGuo>1nEd5p#vxY#*8XE2vsy{*am7~G*$%9tw(`7fGK~|}(qxFu=^m>FsaT*K$N# zSz22fYwhdn>*fYb1>M}-DGb7|-S1eA_bCZ|LQJAzK}f@FOBr4QfO(QNE5DDb0U|n8 zTExhM-y^_FZJ>@2-ZtM<=$hUbhK6<*Y)f}{OSjpKm0dTsw+H(A`fm5d{X?NQHa42v z_h&RTrwq%oG|k=1v_8AHXU_%X4)40b#(zn@H_&F++r2{nN)h&CPRBJ~k(tIl8DI+J-`lj=# zpvCK)9UnbhD!-uM(`vIv*=QB*>hrU|Ah{0w?krVQ=A-V(;oC=~@McmnvZ|)N%zsuu zV4z9UALrHPo6456zrJnNdaN1BWer+lzO6NP?T}p9@gv##eV=qB_RZ}rFrQbJS54(g zJg=&<(&>1vqQ&d{^|qlSVAW&(!N1*%vvdsoCL6@-bGlS_b#?Xc(lU5#a{)~L-t7DDHUl5=j3K*iv~X5ueJHv+uIX-Eh2qi?m4FWBR;~MNuLz(>qNua$q6FL z#}7#Xk=oJAFa*2e&KrflJyvX)2GP89Qz`pz+>uSew(j0462>-O?o#G|x_Wr-DjEbc zTv#}*X|kh;n%p(t*w0s(md{O}oSghWmHhYVR}9S3B`eZ{A^JMvdE?f#JUl#NVq!xpoaETfi#0{{^$et64m0yP z@YF|#>wgD{Z?xY^zJ~cBq1ejz8Vt|a9sL_jB{~uiHQX~UfYFZ@CpbB@bg#Bls0!3a=xQa9yD}r(_Y*M zvY^xS?Ce;Yn&w&QPugld*jE`gI9Xa+LLfk5%rf=@_z~@90!(D>`Pzblwzjs_nx95a z=GMY|TtYBx^lnb6d^28BdnYFqhU6Hx67Los9@wY;ucu3OO4GmfSeMq;CMPDo3$uqF{@@%B=BHT$)jnV$AdN zBL10l5uBM>x(#WL$l}NnU6SDC6c)?Ma zN55xWyZq{9o2hfDsSR-|C@6S&d6AE&yzv$V4ave7wNc^AkMOmt=wt;{9uN}QI{$*ST)5)$W7LHfn0kz=$+gphi^ z(cPNV;a$zzj6>Mrr~Y{VbH8;*TiexN)#b&-{Dk1X?YhCtokuLPnDDKhe}>S#W=q}= zMjCwdnYpfDF^`EhG(23meb!_O%xe%%z^&W+tj zoT}XOOPlvc0xtjz068_=Dc%p139OBCvC~EWK|%l^3Dny7I9(>^m}ZAtYDdeL`}3$6 z27^I`*^0FEr0Zr!%it>UXXIL=>^F3h~#2SPh%Lzd36%mIrf`)*BIrgO(P zWd&ZlEoye#Z#@&=*Hqozuew4}yiS+u-1o;IVrWSEuq(&qddG07k3O^IK6FKeKY?GZ z4j;=*^={(J7!7oFy{5qe+LRkmVdv(<;w-0TMfKgW91#Iw;j)?tsBq4p!*F{h1hrj<^)>G_wZBJY#jA|&>+UjhS$@3Dtk)c&LG)z~Zlgdv3`lL-cL?EKlHSVIxZf$zy2)c@TQvCQW zeK7(6*FzFb64hUy%~(vXsjM$H zNkKEZZ)Ig=WF+=;Te%0*C=kFTx_S$B3hWn78YfR9DpSG3ncy)KeSiE~(^ zOyd3f_l&B!D|Pm|FfD@?&(paILorHKK9bFF_L-}f@~eVZl&_Yx?!|`-HCA6T&tQERii~mtsA$0ow4!&Pn!lf_6^YsD&y~gG zhf8hlYJ3TJs72OpKnd-Vr}WvG&U?Kcy3;>o70gj7nuiB~>^$Av{+=w>{%h>P(@{`R zM9WyrlGI=%YorC-0c{qWJ<6wQsi>&(a&uKmrsKelf95_K1p6R{A}(}(15ec#vMCeV zLR?&5PHyJM3BMc;W`qnz_sh$H+S=Il&s>B>3ZgCPNMq*_=PTAFdn_0A@tAuNkAzm; zFE&0-^J=Ep-V_7e>9zTn!Wa+`5HI>S>L`-g#RM!_&QJur z*T&JCwTPiLK84gd%r_ZTDl=SdaR=SF%}UilW^%ZS2fnIGyj**AJgvt2?|cAdT@@u4 zo2ix^gkJ z_kFg$PnM3zO;Bi6fG-dd==pSQd6lfH@*&;Po-`?X&zn`$tEY@5s;e5GHNlQ#{eALdw}foVZa%SQ)VR?-|LPg-2l$nI?Qv;ZgO0#|Npd?o zmi$>_ezzyppZc{>bRUSzSNeIuMP+HAqOX)<-sczf&FyQ-7iSfY~S zyO&`z!=wfV$JGS*zl(ehK|s-Rt#-If2Nn5?zey0;t2K~C%XprxH2GZZN#%2LbGzMN zY_|E`=~(9A1Dd9|C11LD!Kq-QfSXy!Ukxtoa9ouV%|T_kg2|x~{hQ>UPAb(uZnRBJ zslJ9$1zy87Y~Hl|$+zXib@M~OF4;^hO#c~h_~7jJ;H~MncIcLmHZpLmK#i;5ZH$kq z%6R;w`AJ&R8M|p+C^fhBslA2wRF97QO0X@_g%%G37GY~_oTJe-yz7?Cqq*Jv2}kT% z^0tFvYp}S!elFs1Z_k5D%u`f|=V_qthG!F%dV%yFju(LF0*68E&W^vC(S{+9jo9Gi zx6Y^AMkw@i{nr>Ub-%`a8g_kst>x@|{*QReR5LVOo}1hAY+-R9Dt8j{uH;PrOam}G zo~tOc)J7LBQOVKB<@NCJ7#$r2ZSetrVWrDh)7zbdk-2(ZuWVL&jz^$<(FAg! z9WUvo%YqqaYcX5gFL)D0du6+dER`Vc=8^f$Z<9tJlE?R@Kf!m`_=}G#I-f7r$}{2L zUSEG3wLbXfu{Yr8tX?(WW^(?tcGo@@B=r_PO%ljcPXo6nKpKaFL%CA#xSYmjsD_kp zk^SvkaG^y|P>`3GK-7X`JQ9jd7mb9lutE8(*$7sKnP^qEzBLP)7jvV`aW^ng!PB^o zC4F4(L$wPhUL3<7VR0tbk0i23-!HKT9ZX#x3)G8r&=LOt^N+%u@M7fA{)TbF%TZfD za4Q#k{J@_IGB;?o8K+FM(ycOybNo3A(FST~{Ryz=Je6Sy z<@~HD^4((6cIN!9-=g}iqoMp6jH#PsL;72H{g`x1^wHV28qd2nVlmQr_TP8Cy7_w(Lr@zt<3Nq z6S<_MB%V?%=9)yBt8mb9MC_MTOz+mkh0DH(RQ=OUj#2v<5)$p@R|*lzpyx}*JpZKr zZP+X%o9!Re5G~VLssaX&j*Lk1cRMvm@Bc^Ad4|K)eQjJP>L}6sqlM8&4I-n9P8hw* z5G{Ii(Sm3ZJ<5A%NxUev$^-r<)lcCeqUj`KB#t;TSzY#u{ZeCY^k;2nZoJSVv=HVj< z0g6PHD4+I&$d^_?nOtvZ!Q{-EJb$V5zG-#Ryzv-2c+AP&p+3It@6M|2EzqS^R>tQ` zHG%11ba>d<6zIJe11;Kt=5naR7k=u|li*R#QKjw7_zR~DQGHr&slVP1!Y6%I%{^SK zu5ND(8y`rOj&av1r<3ySRjos+u%}S!y@NynVmXPsj|kX+=A6JpK#Kt{t^s4Qia@$& z<9xEJovUk^0WaHf2Y)E-q262HcbDne0?YR8o?%?w8$;O=ZVO*Rzz#H|(aRLX#_EtJ zU#z#({21CQZ|k3b{UggzJhu8x9WK~>_BS!)ZZ%G@g_ec+&fl(_@yZ_2GO?SXQyBkA zi;(oy&jNA!crXm(g-`jEDQ_wP+x+}I>-h&`AD9j;BjXw^OKF}Eb7Jek1kT5KwV4c6 z^N;JPZCFvA%kr#Cr`P@KRS=-^O^xTKmRug$9|aDI4~_GqFFFW1m)+g}zHk|e6ff3j zU1TAQ)cP)oInVd|>(;q{B)AgzFO<_cTnIFPl!(#cNP{^4wR`xMUttB35ZfWt6ysr6 z?a8q%whQWv6nIn9xAyTHN9H)77B&fg=J+Ra1s1kbx%!IVKu$4L0+i`gIGlv{I!+Ne zadB~h#YGj@eaC$0InwgyYZRDmU!>95CmdXw#5Zo(JUc5}Wj!z%`0!P+i8k(9;dO|B zIbs4yo!vR!+z&;m|8UQL-sGI}rvjJ=7^U{UVc+GL4&_+F612r29q%d9imvL%r`r{#&ZLVOoApd|HbuV#lx^O$CKAL%AW}na zh<10D>oY&@zBPiI&CjYF(nxF@g9#ExBR}0mzpCm_&1*Q=x%~F#nrr^Yj1l8kRvX<2 zClL*lN&R6<088*za<$L*Z7*rMG$_a^e8Em=%UinCfOqxuI$pWjfR{VvSVxj7PU-zb z76ce2mEQ;byX`HKS(7@wIGNP>(nF_1oV?fxMNb%+!1NN&9J|@#&|MNp9XH|R5>R2X zOIn8hjD_h5t)jJ$yFEP&zHC%bP|zyYhv|G)WRJ2gnc&?HH9GZc0>h4u6GQG87O(JX z0;PKkO5YXg@I?IHg{NDX@TO{Uhv3EDy?R)E{q7psccn_su^J3 zh)OD9aI+p_?euzJY$BZ=DY#yFmPP&5o=PVYY#kgdm(sU4S6ANHIOl}wu@U})#a8=o zVgfg2L+t%zlSOmXtDhZroJYkjd5I&No$sCZXHmcbxx1rI-+v!e5C;C+@N_#7x?+C} z4N}$uQBl#=)m1&jxD(35f6S#U^PfwSDhHz{TlzpGm@RMQa;q>AtB}MHu2p<%`}nnh z;6J-e>F)Be2o{3<=LGLicqXhrMV(VdPv(Nz#*tL5*XJd^t)34p0Vl}T1>e&UyDvKr z9?}DP>}fVut$aq`oJkk&zUTGYI%e5F8>phvYz1diHGTpV=Nj|!5*4L*b?&PKNh!AbIcvtN$#pv@5A#@TtF7nsbOaQ}5lH@^r$Zs&*{pLde zgoC2qOu%eS4}n86VB4D@`*?RMgul1H-z|v{3s8}WM)uHXV$Pm4dJao%uJxq|QOk=! z>*m%yr1B{dbzhm(qC30atDo1WU^tH(UaKLWNLIQ!`6;QY9G}{)>dmML zaC{nrI-^L+8|r9Kz7MA=KXkS>kF=ib2|QGyqM|hBUdcla1DmJYUi500gM-9uYh5vv z693#gceA&XT9cgjMEH_bkFM{?LasUqBRiJe{hAjbz^DRw9x5l4$^X-!G_%E1)#0if z6oiplInuae{=_e==-SZibL^ZZ2MP)bG-mFv|7TLnU`B&Vb$Hsoj_%Y@R7MoxMjR2a zA=ZAGEhP2hLc(B2z-rA4!YGq*exH*6||mjeuxzji5LYsQh@d2 z`56psdz(|n^hr(ARe6edvM6=-oc}w$Zt`!|6-fV~hj?#h2SzFh9lZJztHc?$~( zVK5aB<5;6HEq0j~et%f)iD!6^qQ6sdc=yiIZyC4Vj8r`v4gJ<<2Zkki9{8Q1RaTFG zciZS94E~$|2!zPjK9R4nS&T(s;k&T{rkg&B8ga2g#+}4Qgvpb?|Uo~eK z*Sy`KI#ZQnv?K81awKg)sZxH+gXEm-EPJrQ1YUv$U?x_C{HDKC4llUY1n+pu@jF9W zANL0%59u|zZLbMaH6+C7h1uRl6+I(YQ@Vq_9{AUE*j1^|PHtKFc5dG%ygk(CS%kvx z-F!nNQ6v^A&dU0LOlJ$8ZqdK)@wxgBm!#s5 zp8H$ZspZy4FzkOK=v&JdS zq4E;y@4k8-d~B7tyWI?NL(wB~6Fa+$36xZ;)gW@@Qp8{Dae31Z^UfF>FDN_&bx8-Fn_*Mf>k357oIvEB!!#GusogjHJ%xr86l%nOu2R zKwNizG_19Aoko7?FUUna+eMrqcf-`JSuCZGHom7&B~d(EGg%cUWVEbIAXOc%hhQYd zXMRsWcO58q)yNthJuIS#uSH4910cxniu)u=MW|GW#>OY*NKuOfx0CD1OFP--3v@QE z9Q!doJjXJwgb@E|Bn#S7pt0~{yAaBc@EhCS-c~LQI}kZ*8Ljs#ZMcHs`TF|Si3p}8 zFUyOjHVvxD2K|eG05|pqq(Ar$tiH5B$!K$>7@2#g&NyE@6(xsjeJL}}lXfEYW@Rxk zF-$LglBTqamdo{Z7$x096?}i2m4)Mzxz1E66`~1nKB>d8^0c#uCa0#1fYgF5S2kW( z|0NUn@9_`kCy9PyA&5{H^1)_TuWKM>&jb3}uU_ z@b$sN zG|LcSK=A0d)i*rdQ}I&uZk$5-rp z?p>{f5W9BDFl%$AumQp3<*3CbgZYF~0qVGA?3$q4i~rGz63sTQH}mkh-1cWthREkp z$$rUNLZ=csZ3{%LzI#GqNRjvccw z^r_w=Cxm9@n=BrZsbdt0h=>|}4{K+f@9*zfF|h-~B5>=@QPO6$%+BsB3UZ%g0_5@@ zx3xp0g@lA&z8u&*#q{x;_e_&u2f42$`N=#C`?gS4ND;*D&r}yffCUN&175fuLaTUp zdt1uyXzBiPG2~+AT_-fu-Z%+J&Sl}Zj0;wEb30sG${*Xt(Qh{3jqJ3}8;O=?jBFTK zchcW*Fix|6)-C?bnl`I;&Ux3+a{Y8ss-c0+j)96Cr0Us8*B-#KZ|**}D{d-AD4{@W zLK{31;6n2qnG~a-nWjw%u9oR2>0}!yDh*n*7vZ?CI=fAK>Lkx}9BVE|ebXwQa5|5d zSok@%9Vo}b)#zHs!1LmBdC7#67YQV7!UM&sK^f}vQWX{!&d<-gd^sT)FAst^|Erm!W2(jU$6lG>+ zc1DwhlM?CEl^Vv~lvR_An{?C|Z`UTg`4FDOtFVuSLD;nV?;m5steNNKTO*W-Qmnsp zxVGJ4w~a0<;QR0(DQznP@d7z9J3mj-$+wiwIvMdx6G-jZbTYNmAC1qjCNJ<3X}~Lx z{=PSX$*iUAweF&SGhS>#QBe^dKK}6*PIx;6c+saF{MFvLb&;%1unHR8*>3E+Ki^n4 zbrEve+8(isM-R1A6y731iTqy4?ye?R~Y5*%nS1&rSuS zP2-G!K^m65T;-%&IO!K{B|g81b8g?72m^G#!3OPVcSrCo)FD8D)Zy$@ zg#6S4ZEf->6Q#5SPt;p=D|dImMkwt)9#+`(^>s{43>cP=hTh!Vgm#ZRp&Y6+tuq`_ z#!KJ^>=beEkjJ~YzG#-eC2K*=K?(|;hDZeb6WB+{5LGkgpo8}Gts}7F=a)MT-jy#w;vVfm(@gOkiD1o^1>i$8w5T=I+g|4lE zP1!0+T@9AqGe$O%1|^f?YkEUi|3sivd0K~|De?4-jApID_YK~=fCS-^SN>;Egu%+` zHDM%H429K0o7mLu`Izqd=IQmaJA@Tbb0PP48>Hu^rN1kP-nfdpq<0^wn)x-g+kE!- z&2dmqPmd5|0T1C&36a2W3=#ficL;JK_->UYr1#|l=5JR?#suX;TU*;{an%k@uCdH_ zxiJF~)T=R+-1)afXsExxKOR2*lY;VzZdHST8usXhn*PT7BC+6^^%{L@=R;*7e&U>f zy<>2ijZy^2xVEQCGp&?7%bo`eE$SnLq%G@%-h2asgtRCWEF~7;8QVNF* z2ps=Y0H%A<=BaW}Fed(H{X_82_0n@hRzgmW^kte>vbTT+06f~=mG|nX4ZChJ_;xtw zWn)9b$+ZmLl5!#1PMl}m<9+%(dcHaMbT+Vs`kB(F_O>zY#{^F2W@SH+tmN9xA&bz~ zkVySEzypifDFl!7;=7mkZu$!AzADdeidDUL_EWrr{la#oRy0H(-&{A2vlHd`#y(udTVyxax2Uf9ju< znBs2Y*%MCBcW9Xt@xKQ8H!o~^*{BYN^{4q0h4yRZNTa-WCnxiakZ-?uJa`PtyXm}s ztvik`R4Fy&(~I(xS#TD=y}6myVc&{=V&i)bOZ{8)a5tx2z{Lu)67pN=iiwPje2X-+ zZo^Z3K?_6}@aAYO{*UJI(a-O9V`F1^IhkFtNBtMJ?v4)UQuR1{nQT;J-PDFxL#<2w z%{F(!VaRrE=^RofmXib%w#_w<6B<^8q3}yzv8#%gdA_$I%5qUmEZEE3Qd{fylBlTx zMP0MrskB?89ty-P`LLKHg+BQX%!>7@_)X;6QC1@y1 ztb*v1_+=M@lFE`j4H54j|F&FYX9)WqyR#EXKV&0A_w(CNFD^=gAqF7BC_Cj?&4hsvHzBozGcVwh4w`9I~l66MF~NJ$xGP zLDhKfkQx*I&GPR06WAs3d1pL>MB2bQ1V~L99p1iFJtEg=+nc~|TI)_6rxZY9Ragxq z0;%(H#PB6Ae1(NEsK2Y836u-z<4j-Lq@<*zj>BbIf{)t%MEu5kUZhSt_sg<1*E%Db zC0LS*aAyBP9sWrr%rn7=hYGH@y%2CHMjx+-@N#le=So?Q0cC2CMu+zn4y>ySt@vtx zOkjG+mi$!!X)Yjp`RCXQalL0eM`#lq4oDk`g(z!nv3H*sgZ00CDlmxHsxn50liea` zkdF^3Q{8|2XfE~#>{c!WjOqp)Dj{O@Lj`){<Q(D=E!-K0SDkWKAN zbFT230YlSfpPv?PKSXETfmv^;$rvReyze5wVahJ<=Vy>#Apm1zJkseKZIMi3f%Y|f zQd;HG-b5A^kE!{27m>`Hn;WfG)gIHO8c3Zh6K}7d%)#k3MGTH29w)^!dJTtaI>OFw zn`1&*=zL>gU|2o9HYr`OnaCcR zL?=(2)5r97!jfK6k)#tMS+2buR;JgCH>qxK6$vvxuRJ3lCs$V>7gq3#A@*KTblfAb z-}Ya8et2JDSWeFsVa*rg$3{hr6CM^5qlUpEHB)8yX*FLu}@CzL#aKzy-#X2-rUXk?uUAldv6oV>JGt&7#)q( zVPs<3-`yp`3r~FYAeq>!&qHzh&9-+ny3|;oZ=75`s_u{ zld%N8UN_n;pyuoRkA%5ZgGU$0p~+FBH*=IAD#&8dtj_yf+&C(UUQpdBeTqz%lF+eq{`b4mqWtzgxQ*JH<}*Emi+dzEEY^f8 z&-l}nZ~}p zzR1YP6mIRmpr@}b`Sn088v1j>DW8FQDCT$XTULOd%#*E~^sYf80PC@9^Ry5R97kO4lwF8OjmP=RfCpXY zj@Q>$f^>O|ZnjQS08NJ}TW`SI-ah1n>IgdkI#j1 zQCVWXQZfdJf6OK^lZna@$&T*#Qp@$8H?#&3CAbPmG<6=VsKT3>kS;bFeg4y zQd@8552I|EEZCA&Wp1_#S?-qbEiWDI-wTG@&q%O?0N{(mMY5s>1K#->M@nB?q0rC0 ztC3*L+%m1=Y9#V~W-pSYb=?00UDWGB;s1eg`O1EGY=g8rS@@h6?Pv~ z>;<_#&Z6Fb!3*M`KaUKGv1>>g7>k(T@m5Zmfr@N-`J1rvrpF=_LDZVXf7PO1#6<9x zYE9XXnGQLiOa@ko=HzAzCZExsd~9CO;8GyKTzTHHlSFIGd*{szbSXCjQd`SpKG|4C zKlPppT3&qu!!X|S0FJmR5M~1U$Y-VIUz6XCp=NU^UaOW;^xJvELSfGa^nkD}hj3RA z4jhkCQ$KPVm%cmtjTkb(wf*qiPLI4&LrO%1FtFHww|k9cQm)&ET;!t9t_lK_W=vRE zSU5O1Fcj;mHCLyuW^(NO?}y$Cz`h>B0IoMvVU5j!yYBJv-8?$W!(()CSj{+_UUe?p zp?YS%(f8D^>2&xdnPE|BT~!KMf7Kq7@4w3TQv#7-^o~}`XU>xW8zsWXm4$#qlu4;+ zoh$B)7orQ(cKpex5@&g5v)h;$AOB?HI(&RMeDr8MCm|uZ4t%(nbCaNtf0Flw)tmz8 z)!};V$r+iM$G7*#evG+Dfpp~C!UD}7TiUn7$*Lem((Aw$GXV)<;SU!x@7(5UOD)Qu z;ea)S2_vyqR7Em>8Sp9>I=Z{JZSNWKtYMJLbMj|uq^WaOLVoG++}z%Vl|Z~0yn+q# zTSGH?wito~F=zxDlG7Y-o4@8+tejq9!ICOS!1o^>zs0WG0o|c{qFSrWsg)%Yabg9$ z|5*{dA%HP}y4_Ab{^--W<9%C}elAa?(JHi-G4wgK6%~xC1v*}nJ2YFUJOjilhpFfxC#>?N7!xM- ze>?{%J#Z+cEj~V6rldRxa~Llhy;nwk+8wjBipLUVFQ)P3j=~Iwe%98$G4-P$jPzX$ zx=dht`OA=xYxE6?V7JY2oL~zNfIy)2?qo7%FIP4oP;PPYetz*DuF%O45fw4hb$8b^ zwL1X?IiVV!8xS=JV~|E9DY6SoNJzYT6>_qsM%+A_5o&ag#G0kXopv7+OGnPF?<}+g z1yn);AFel7kAKUvLP7Kyj@IemG(yIO+r!q!l)SsO2_wsRW#N9SGyV3>_->mKxm#zr z-uBK;l}Ty7#~-^YL)@BL$4@4uhRBKg`}?*iY)si#ugKil9{QHuYYP6ZZ1gRzjgV)|m+z`k0ki$;uqO(s@_CpdiEF>P7*IhZmF6dCcE zBQQ)!b>LlZVsM!K!<%2iV?VYl=0;u~Hl=WDTlg(Uj;b7A2d=KJ#w#lbq$_|a7=?rc z-@x@?I-k33`s^rHl%S1U=QpVLQ?*}L(q@{!2hl|{@}&>3mK2m;4T_Es;9#Zn;WVez z@?B(o!g3wDIp0N2?5wSEeD?@T$6iU(FJGEI=(f=nNbl^3u4d(W<7t8EvUcnT^%TIi z#u?^kP7JsDtGujqxh$9<<%eB`XZDGbTWfEjd2ZW_I!4eksiPu2t z@Cd2VF4jQ-7V5uN72g~L|k^-@_xtYsfM=v6nSs-hu&QU z_M*nR6HhKLPpkMo_|YxocFwkXbEZ@+x|7R3;odP z`h=X103?(P%gFqLg8puUHat&HpLSi|t$6I2OQV*x-vKN_n&ER|rUo8U%k}m3e<}%2 zS6#;6dNYBpF+;m$z8uGgqZ42^MHFWQmw~6#0gZ_6Kc}S_4$WAYvHHV)dFACR1G|i# z^Fzv@yB_pNuyAdNp!UDPkn7zjUkgL~O!n@RMrSV`4<2es=NdO_h%#~_O`Y>M;U{do zBbHx%$O+!*Jm$pBwlHkCo};@vz(!HE5F@{AYPZ{l{9Q}$YS=v6&FG&$((!9^<9Vin zOi}6bz3)Wm%BOaZ{c=Mdu1!j#T7ci&z zZ+W=ceNGrTwR?Vh&zg#D)|uRo*#a(L0}uqtu@L-@1Y2kJah5zs7|hO;^?07(InPNX zSisRxM$+C~*#K6bfAjOr!S^@*&2q0^kxdyVtKww(6pzjHlXs0_=+yz ze7Mj|CU>>8w8WZ!LLCRMtE1WE1&R0`E|6p}ZDEwIc)47R`8nx&vHn;Ayx~d#d{}7o z75ppklc9h8B(0oykN+1H9oUZwMhJ(+r+s~lZ4s;r`K(py%l z&o5;julA|~hFez4jt}o7KlE{$Wbp$2=0h#&_+&po%V$uj)(|sO45TFLc||Tcmwf)l z>9uR!?Lp%qGb5u{<2-XBet$k*xV4oPhAPLFSDQEW`FK}X*BilRoZyIdD@dac|5UeG zzaVly`nQb^Mfkoqh#vP(iAm|FJ82o2UsJnt5r5LH^J@#ZCCmIdC}NZgt=>J&8X*i^ z7n(AyX^DSyJlXS^85odLyH?s>zP<{_##||y8XCXN%8Z^Telim3FProvmHacjabPM2 zN}_hGSYEasB1W8&Ghy4rCa#NjBKu|bftOVkm{V(>h+LF-FUPFYz5+eg)WRr#9QSIa1$m8JVX}jK=Y;A2Ni!jpfuxpsBLprJ=IH{f|-tute8|cem>T^@E)$~pQ z_*6%%^12-Zhhp0JFiKp;aa$kh871!aO-0qciyiFC$5xdQm- z?O)3ORv@d89K+|XtLrI%&hLoz?B$+MfDCi%(kG%c%$LdO2udO%B0t3B;^4Z646~aq zO7#N&q zMkbv&Q{PrhZYW~xtgJ9txRO;dxMU(lcL>;a* zqK^|!=Xnp?d09hTNe&ZEsUw>T>MG?^3UyJ|vx{I4%Kud1NNjPPNR^|l@MUE>W?wUFnJ6!41Yowddn^EHmFG5DAY7{Q;1$S7>QonVpxxMDp)3H(nxT- zl~Ag>Fma(FGQi&-L_c&e|34+m8C`40NJtr~9~68@(|Q&8zC4&Ek%FS3X!56dS&Kln z8k^BEt__$n${L9>5zk5JUD<|!@ z3}Pv}9jZ}cL8h!gQdU!#N@7`>P%lTY9~_UyE&Jh9076rv%CDzr_}>+_`#u7u-6vTWW|TjO^I< za-FVtT|CB_(x=0N^O_s-tl;=k*4 zG7`DG5w+|X#e&St%!3100yR(Wa1AbfgaI}-_ERhRw|wi}y5PY2NhFO0L4uS~1_92~ zuOw=sIpESGc2H6mWx_udwD%?EdpY-IB3#dYQkIFpkBm`964XJVte9+)QbF~f1xnht zyF2UB%r|4CV)3pDl~M9||7iSEJp6;@{Y4`%!tXi)t{M(dt7o?>@u~k>{#UZGF=s9H z3tl7`ro)re%F3v%t(};dC8I z$g!M!O50eL4oihXbZDXuaw4C)+V{{xh~|ladV8yTUi0xHr>NF@uC;&t#7jD8&ZQ31 z))hqmK?Xy{uzZUAg`dpA*%_!wX|9EU^hClT;32gdFL1dyFPQ#oaWol=Pvd;HxJw5! z4;3Lm@W{WJxYK!|DbsUEQCC__?0Jl$J5hkY|EQQ5uQRq{=#bQ_SC+^Lo#JU{ag<53 z2F=b}m1@7MqT=Gi`b}nM+fhQPAiH6Aa`pbj`vYIk`hT0R9zTw<3w;3);8dJ;Y{DGr z3s@^5zaT&x_R*4!Nv>}l@y-nKT%91E*p<^r8D>p_zRl`Hxub(q!P)mBU%9$%=~_Zv zC$kAJW%!?q&XYD+AiigDAaL9|{ZkF|oGYZ{-jK6%)mRVzmmzuKo8EdGN8BkuxNdQF zH0V(M#H4s`WCqjW>0kHAZXmBKhi37v@jV`qo% zH_RoMM`ruxNDGE;Fh9dvu#AIZGPHvZmN(us=m3oNrmY`dogMTk5ViK5MUUU!%hEl{0$M@O& z-S$F5pZZ!(a(R|@u1x20>xuxXf+NB;Y4cos}6r|=0wjyQiQ?m*x1;}Tk&F*1^=V`R&$%S+uXidk^gNrd^pi;_z$0DNLwI?4ojnC`^u#mZyawI>j%pV3zG@#w)M%!G9WdkmFQu{Tt#l`63=No<9W~!9flS9>*i19=- ziS5Rj{gyD16AdnNwKFp_5MY!Y^A%F8acXQVydVf608*x~a_L?D zFt{ufk8hcOTCSy^K`>3C!!R0yQ#$H|TJWAS$0uWMI%wF{am@#eZhJvzVfWO8kySI! zKx@{aC+waP-M5%94`f3q=y*2RUE?F9fAPGMMWuN6!W`eB_*dP zCg2lJbL@_M%PVhNjihsOv$IeAo}vqdg!c{)@uezAn(D?YY!Ppf6V%ky?8$$YJEQZ0 zE@s>UR~ed{n@1Bds@^*}IRysZJ*lfmis^+DV{A4K=EPU`XJbYdAK?bPvfex69UUFd zjm*$DM58103{UH}4POpJ;SvJ$*%^Ov#7e-%=;IEB{%mYy*l0*q=cJC))YSagY!L}w z_NX^3HHmZ%$sEx~80aCW^jdUyaGp=*=H}X0jlqAUm=a|g(w!UduKP5Wx7_T!MH;eU z6%;{1^hZnW53dDJ`?&MWAdsgFNlC_@ZI}*^m6o-5wh}uzN6(V`b7H)8kNQ44AL)Hr zS%IA4HWDvdu!aADFY}1eaM0!tV@nRrST?L!8=l(9CElal@~GbvOEq!PF&NIFDsujA(V|?)7SZx>)7rQ(Yi<(;;Y>NduzTKv z|9;IFuF9MKtji{C#0~J5Bf?31#{X@G;M-M4&b*t@nX48%a7~2}OTtZ6COhv(lu5iE zR;QH?L)H)%ID{1tT0#-k?`Mz}!aVB=oukFlF>hUb#GlR8h$;wY_zd)}m)@i=ecU;{ zmOGBoHVfECAq`7ErDM@caBJs&Q7)V^^BmeO<9jR`py!E|_SymrQ~@j>_T54nUFW5@ zR0O3V2QuZMGVNg@M@#K!wC=R2)ues(3`U%4@!09<(`-8$YGs0nVktG8lge@B&p6h2 zS8ZI8D^+I4ppgx9kf?zA#Qw-PDWxZln!MztB6PQw`FO%1q{Ndkwtcp@w>M#AIh3hm zn?xR?hye(dz~NAXq{Z|;#n{uHZJrv-S^hL|BvB4BO7DYK@pM%w2+p?xZr0N@SMSTD zVFSe0JYe#uB7*KJtTgJ;Z?OPTwvups{gH=Zo7!dtj?`3-35Vv5tphxG6^Yvz9bvj! zDP5E?1kxs9Pg|t-Vr1xsFLkB$VNSC<@T1Mmt@p_rq@3+21)`vxriyAlADRY8W2fpq zp^F;d`Kwn?kziD~K!n%u`1aQxqWWAJl{>I*g+)smJ+Lmq*5xctMnV$SJ)jo*mN(T| zJPyQsCKcL<>A7{5?HWh)L*Y8%RtyIUI2Fm%sGf=VEG&&%9OnMG`u@qZohWnir_8)D zw6T0@SH3?_^21ZRr?9Zl?Q}FW_aav|pw?xs$bdJzeQA1{_RF(b=3lj@Ra;6=woEb> zEx6vh+>cyc2JSj*rypYrfYe09CatYtn^T? z`KevrK_qK`1(h`c+m|L2gi>Mr%r;Sgf3UowdKTiuFM~!u6kMdY z9f>cnxT!FfIA5$Rp?Y~Vqe7m7evR8XPjY{mv@~l_AA$KZQXH7#2 zoyV)a!W&|l8Y&5luQLvv_xL+&oi#bDX7-vd7x<{-!sx+j&r%r5r*4Ak ztgPB>D%)7ZQq@1oJducq*Cd>$Lk$Xs9BR*1acW3=q(X%Wxyzm!t7 zd@ufCYZS(v7kCoI;L4M#{%@KLoKd0Mu7v@1c6BX-01I%j3*DFgGfv~D-mUZ#O4Z^j zxUQe6hwc&ZfBzuGtHrPgh2vnoM)9h`uVQ}xGW4EqT&%Yrpswyyhh(vrPX5Db{wvR# z)MvMIF3p9N(dnI#M1xx_n5AQIl6>D={%wGaQOcJ}SOx*n^QR94%2^7ehle?# zOy*c~m+bE^LmulC*~8eem2{sBOg-@oDk>_bOg9S~%~8k4$12Pp?e1^R0WmFG1##|- zj-agd)4#)co@mU~K`-ffD5&jy6$B`dzKbZ%y_u|Q@jj^E#6sZti5w(p6=R>#uF-9c zeZm_iiT`5**1+(x>Bl9)1Jtqg_w2iup;33_vo9F2RI2mt*0^ff_?4&6OMzls6=2OCsoH;huPd|44 zhxEV2!;6-PP656$>kS2@u}5tGq)+O+4Qzn`(+1YFhPc{(38W)k#A^nB=2_Ea z74&M~Nq)Wm*QV3$nh%MB`Slm){k@-);NvX07R=NAHPipNS6rYO`^WCiqWY-XGM{RP z7539VMb5qL=hCBr+x#?i{27eE`k_s=*iR3!R+Q~pHMgI4)x|9&&!4JZaq;P=Hp)av zYQtSpXK}f@y+JNVtJg-DBUfl!v9M0F+&j~4>SOtP6up&Wm^^E;YAAZsqu$@&|GO6V zg;l9x<91Q@u;l8O0f9#1kn;h{hm*bP5j@UKP-13XAQTFsACWm7taX_qWtJiMQP{is zTDua7B*KXubMEm;!$^_=@8e%Q$%g5zclN*W@WNmJL3-fu7LUy=E{?1o=La#yD7M9? z46OgGlyX~9!q*+OA&Txq7!Yc{@H;xcxTsB#N`uAvrfGeDo7}s4d>x2}*68rG&65>S z0KUF|t`ha@_GtveOyDx!EfD+dTOjot&cal61)guaBqli)uBZ$WX+BFX?iWP9I=@2(>gPLjZlFrfLF##QKQ_*AWpIjZUGAH6c1hFUou@gb{N??J1))lj~kiai*8v;NMk=?pZ@#zuP=og zrr?4yS>7!i+ZMuGSrL?et&+glE!&9-tHU8vHzEOa&+ z;P1cYaUF6$6=Lo?@4cDh%j{H!&k}fKe(0ZWCSX}Je^HyG(-y&-H}X`-ea3?8Ju_c) zmn5E~ln1)hS);qG(Vow=_hTrz%>-y_Muf-R8|R@hADpmYI$K{vheP9JfV}Onr@;g} z5u3{2jg0~B?f`lfm#g(!N1kEEu6*UfFm%j>)Bc{Nz*zNOpgoihFZ{K}Ve;xy*aijR z)t21#TFO(u(O!hE3m4ik;BXpa_jmP_LmzDe8!U|UsPD2CHT{)#;2N#NGw2Xk31Mf9 zRkp2k7T~8kS@*~sa;P&YH8&S0-8?PXX_;}RHvbzL8EGYyp~~SbK6i8^)W(%F#h>{- zcsY_t!i5mRFVX?x30{SFmXNi)YQ4Rjch)}{W=bKG75UfdADfg*l8wdk@cV-0RhCVb zMoJk0!JIQ8bHJL0{#0ElbvOiQOKq4f}Jwk)^P#d7C}Qq#ILb+{917S9LI zjv;7QgX?Md&ZFKLM8A73O)sI!`vH@@s67O?4fDhduz_(Bg!XwmCuH+N(>#H5%ct?M z>2x^n;jFj~%0&?)8*uSdsJY22`cY!SpRs8bpVrQ~2K2sMXt&4LLwsB9>l6~9j~^Zy zVncKmp&&q)!Cmpez+DnRjG|8?llo?9L62#j>wJSZ9|z>WWL4hOhR26nd^|jn%)yQh ztnqkV z7=3BC&Gvy06ht3e@Y*8yYB}1rGDE8v`;=s!kHdJ>{*%0|kr7SNv-$aXTEA|a%KO_( zY|?jibHWDHF^a4moe^T`1DIjrFJBS?vW6V0=k}3C$6L&uC6I?F_`OLNw0@n*u_qMdm>$Bsfj+2zgzrxwZk&%t_@c3O98u3gK$qM;} zh7#jp7bUtdPrB&+G~?2yrj*34Ba{WVJ|!nF-Y#5TTwD~`(i294*+SUqXb2-s;`^Ly z8P23jEjR%Lw92E-;xY>eQ@2KYKX(^|4mIHml=9U4{@zYi$wY`ycUaU!@_#C<(T*q+ z;Ymz-)IMJwZsX)(_jZ5huR)v24E{-ziPh7Q3LBDXGH~Qp3k)c=>yB|7(@Zm3=9%C!!HlNXJ_B`8?}6T zd}6pmfIjWGG)>8kCqtj2{HdWNP3^Qi^kMeFnUM z?pq4XCS$3#Z=PamSqh}z-rS64FXeJ*g}c89PlG$aha9S1z&#YT5FQ+?_T%GYGjaV= z!z>Mbcv6N&n!x)!6TXl$v`X3UK$@|i$}0;xl61sTM3L-(?-?WELPGX6@l%y&Jl~;FrFy>7rnpQrp)XE<(Hja5wRqH#* z5)$Q1!PLpJcOiEQ%OfE(cOj1wo-3a_H?m491DRnTi4)=Pi8+H-+C_)!k1Qh1`eY|# z6bBE<21f*^_kD&rDj`5H5&qevL-mVfRY^XQWL2-n`%AaQ7AE%4QgUNfz-LAFX|94z zLh-tZS-1f&KecFAFfNu{ZmDvi@t@7kWmO)kE=CphWO`!%xNe)eITF18@Pp>{ZZBo}JzcC4H>0iW%p$0edeED`L#-7tx)E5be2$IyCb#0 zvqxzLj~M6?qPSe{u;4#D*&&K32R|8R2I84u&qUo92+P}$6$-VBy2O`GN;6_pIW{xk zaMc%jtJM*sCw9sgdk1mlO*bJ|f&MQ@eh$CKn!sE753?tIV7<@oB%I}r)mVd+#l=V? z4lXhy>$_-+nr_$=FL#rpex`sjfdBP+*?4;!z)2x&$(j$9`#+k_!=DZJ{rdJ^wfCx# zrmARak2LlsjTLH(Ppt`Fx+}{u7eC?%db8 z&Uv3c=oq{Z?k3`tzy;7!a4ferlOqZS zB)?Hh)A1?3Up|&ZT4snS+BPf%B+y%x!lEw6+;M*RrX$Ab+IBZpP_kDZqIzRLWT#vn;eyIyl}VMBiXkXTV=RUr*sowzS?Vx4;-dXUo(X$ZHnM^&I(KR>@H zdh+aqkmHaleuTR@$@`l&z{|^evKb&-|g@3KRgTo zWgv#=Im9`nSFmAGB^N&qO?UMvDNZ_w8T}b8 zFt@gKN%eRGuz$bI`e4R?Nab)?eK&OInFM>X37~7ZCPTD$c|Yp*2f*KQyQ{zb{rwm7 zHxaMN_uEYZUUV<%VLHshO`uom*6kj$IRi5ZJ$L1-;$USEsM^wUO`ug3G#j)33^;OD0xSIJ4*9DM{K3VTn=;9u!!LiLQIO z*Riw%N{`iYeyA`Y*7!{@P45Hfwunc1p;bNm(9lo`^bXP3VVKHCxBRny*F9=|%um9* zdNy$44r@{?{xeFczMgaF`OR|Af10OQ`bJkGi%|)S3VBSsNhz$r(WDe6!c08{32JP{ zjzmpo>0zW;I^2jpf0*^M`vKSv@B*(bJ}w_KiHTAVTwl&&)vFh9b-_RBzwDz2F!`!emS-H*$OcEe+UPXirQ`^pStr z+t=0>HG+&S;Gygyvt53rwDa!WyVG{Y2qFk2Si{7C2!uo;b+G0!0Qz3zHsbv?V1|2V zJbg?|%zd>$!+22MaDN83dkHYu{jtGvF&((tsOG$T4I=Ytk2~TOe>woBZqIaV?AW%&x$U)^|t9o{J zRz*dnZZ52R%$<#j%(haFm!W*jy>WJKYzzYfrX7&Z#MdeaY9;eu?7jSVanS+gW5XR+1_R>Y_iU{SO+LZ?#$4pLE*~r1um8i0hr9hc z&N?(pM1F=pe`WGOA_o(~m3dDtCpyeb-x3RN+5Q!)`WR;yFybOzIlr5gvp>{58p>t& zY0RCtPE(C%_1npO#9?hPH(d3mcG|0N z#ShH%-TAABEbYsro@HOfT){=!I7q++Z5)Y&tI6;CaNoCmE>a9{dPQQR3OnK_BF7#a zn@wC_T@a`O;F5(5h$(BlHGe8)nV~ywY9qkU(GclCL4x{^@G*cmSXdBDDll&gw01PZ zn$LR4Ig&B)uD^u5{)oNRi2VAcXW($_yuT`DwVHV3 zYH)b?(=j6JwV04Q#61>3op!58;@7&9woHN@^!T@$--zgLQ7B2P8Z%wk^1eJ38knJ1 zIiX(F5cuW1?4i>dN%KAC#8^n7JMPEV&)trp8w>46o3dDV_0;B(R?*N@V``S+17TAz z0HFyH%6GhzGiqjHP@#d;V%Dkt{4P%KgiwqP4M>Q`^R>pMs5m2oeQe za1yxS>>qH;o~!e=tFoNI`>*{IoNCP&j>37*t0ooIde28}{jNfS!sbHP$VrH2#N|h= zB{B&f#oM=Umz!g0$ViCxVq$6CG708>9{#toBjP*0s5xh4eo9)R*7_cy5&|Pd%GamMPo6v>gr;jf zc}`fbR^?hZHaDlgICScb?T&KeTzx7|)Iu2%fA%H^l%IPe;L#*re-s0S+Wp62G} z1KYrn1)9bj}QT#1_jBo(ku!F;%!VS-3P?rjqm=jm8BfYlss*=-ThPhYx5{Ekvg?! zIjGSsduMxlwl(r5aN>!pOcqf%GfiB5FqJ3QKk>c=EadpAL%BFgcv#T?u+F*&gGAu8(9 zTiK4BrY$Bq-!>Anjw*Jn*<@6v4W!<(R?^RCR9PzfE_LB1Y^UKik68ofpPzWn)ZfaK z^%mj&H^9UFiccwi`Pc4=v7zA;pLX(+(V%ZM6fq@6x!eK*#$xHhX-FR*rYFAf4pKiV zU_hEUl41>}Qzg45+sdBh{f&(cONno1ciK7pxvUaK!7MQQby+nvJ79*GxcK~0Mez3T zD$*6XHykf1Uf&N04BR*h>-Q}Lr5Tmb#zlh#O@J9Xlv1on&&is_Vj@XB5$4|_NcPWg z9L*oroz0rEygJ35Yd1#Gxt&)^JEy;UR6jyX-ErI;2AaaR0Mr;LHRi{`kP2Eytj=>@ z@>X(Tqbn|GKjhLtY@6})_M!=h`))RT$m{6(gD8T z|6u5|b=@Emv@>02EQzjs(ioIg>tb#9`XW>~t^VqG`r_h3dZYkAlOm9z7kA54F*kmR z=(F!jt>vPR;CFZ0_VOG!+lody?cUxERAiygbV(bmw~>^T5)wGRxZ11T4^iF-fMcN4 zWF%6T(%-@68Ac_y({!pVH6j=!3r3J0o(45jz5aJuX~;=XRaMgUeJ{El<*6ZmTkf$a z3}hi)4@g=g4+i8;j*hU_bqo#6e=?S)zJD?UjtxZ|SNHbz5=`^y>FG>JPuU#v@<8W+ zE_WR8j~~?w*Xl_mD87RXb9#QXd2w-(qP1LPyjyeztDe+o4q6{B^uxcb;`mB!WO{9u zz!x#!T;0ydaQqgl^(bYDI`J~Nkv{(>+W51S)yu^Eo0*3SrWg6vWi*(*<@^F|%FYi~ zACXY^y<&d8Amo&TBSX4-*Sn{Qg}hGP2c1GI9sMCfT?p zW7C{547PU-n+=>WD<7L}47Q6nTY2yNtekcn`kv}1iSP6C4Fa5x#{COeP^V-R1tyB+ zdRO`|XCPcPRrPW8WbCG{v2iM-aJ`A;)MXIg2m`u-xY2zp0g4=BWxI4VeXN3>l&pJc zs`=jT?!cUZ)q~Kw>DlRN+S~Z?TFp{ew1b5tnk7-=eIcUU4SDyn@Myyr1Ff?3aBy(& z@?wz9U(k+*rnrfg@cqj+F*{ZCs=G)O&jVk^+1?%=H$fB6TZyG#EpfC`k&zIzP6ruV z0P7`jt1AI>BgZ9tOV=|fr`Nd#ZU~MZ2GMsV^ep!xs^9N&eR1%__LyIXh>LQ_nlJj) zo0p?%Xi6W-2TP83e6XwywZBo*$+&r-3{EEdDK?9g9k6IB_8ULTj=ZdSdck#Zy*)pk zlqi>HI^!ED$$?e9X)*`=`y$Z^4FHb)zWOb?X1hn5RQ4KuPl1)DJ4J3TWZ>b1jbE=Q ze`?R>QCRbwhpaU)BS3Lh?Xpv?Y5&=tAvgEOk`izHO6G$>d8dd7TLA0M6pr?y@PP}` zFnBtM5B-;PkjnABr9^!6<7V5)t*V~YwY4FIHQw~z*tf)qS^!ocd-7ff`7=LLFN6Qj zXe?0faEm83tW(WR7Hg>7U;>kRob1fn6HL5PUmYBxF3BDL;%ykba>v}+xXXs^+&9O9 zjTEVbUZkSHg6KXW7L=dv8fV7)yfu=Or+6DlUWTEeAyUgHl@n>9R#@{kl^y(AUgK`d z1woWJmv~`F=LX6#kV(@O`DvRfm#h0$FU}o9@<#q$AgkueLFmjwqka+$yVz*1(*{OQ zWEjx?#?sOfz@99VML?VlpFR_{!R=kRO2QlWqsBzUBn(3Wjlq$rx;xi=6n0fsUIC}3kF57!@jD|Reb0|JPqrqVsw{u3$P9+Qr=y5*xZ~E0 zSv{L+)_$iW!py3vax&wun7h-kSrOx|E|c|EN2Gw7i;jYKDp7-^qBg8~ZqcW0DfEsq z^WWc&RaCJgO~%vCI@9t`DwAZ8v-SxLd|^BIwL#Sj56ch|L$WuKvN>^8U*OoC&CSt` z09H-Rs9ThnlrW0wVc1>X8Cq>Q;W)5h8^tH{^7p?rRP!kTefCnEbn!;w?Jm*X&`Bnm z8ay6vFGU5?17`e0g4W*qGiX#T@7G&O@bmtyhBv&_s@4%HM3zl{DuMRSU#`mCzFj;_ z$cQ|D{=6*%qFM|CKEm@beTHKx(2AT|?^nhDe5~b9bqxw)7v)h-F%(PhcJ!3>zc}`q zt_d{9zA=^1M7oC?JR56tN>!bytfCoGefpO}jZZIQM(#N#o8}<$vM)txNDY!5nAyXu z1s>VD-D*Znt~OCd&p!kq;FEGjkcU~Wd1pV-Eo2+wNkxLRe(S@9SnIk9IL=)Zbm?o+ zwAVpPppRxazE1CT27i5_AuQ1s{mN4&3qE?S`J@+J)Kk3eU1eEsNP_yfzwi6o*&R1U z&m((yco>z*I6dc%D;q)jWCk%i)k~%II!6T?h%hVjGa4Mo;>%WCw~~_{TL3fE6By3I zRo8o>`F~i=qIhVS#Sb+Fc?C1{tTM@;Fl(XcI;r9yjk9yJv)ciRc>5k45jeNac-WB4 znaD3uzUnCKdATLx>3m6g0cyeq#O(<8{r9K$X$3yMkz@FXkB28Fy{%8hz8oSMi5SXD zmYnL%D(iG2q0%q-LQg^Zd)y@2&e9UhFOsGsc>h&S3&1vFL@9cXOp1zt7ubN_ag>c% zi_Yb$iWQ~P93@G$_HXY-O?%B|{&2o&9WqwCGVn%cl)}se&cF(GgDU?3-Cys-|3YSd zTwjezz0>HK`q?g+A~fstVAJj<41rkHRy)5X^SLvDQSES8{rU6f1Be5Gn|*ZBhJV09G+wx(+fll8K9!YQxC-D3 z;x=ryy`P~se>ND5Kp+Mc)_4mzO??G(K22WVOp3OS}z%{ey~wMJyk2(`6W$ z=0eI}qobsw+~4aQbckz7Uff8c^~KV05!dE}qE`Lg_tSgBR#%m)1(a@n>c+i6=;k7* zr)$EGo*v##%~*Fo`gSuUGdxj$ReMgZ)IEP?UR$0VyxaLf_f0I@utXv9@1Ro3=D3=? z;y>;7Q$ohetL|dc?nW^}MnQqvAs`$rS5JI~V5A>&Khn25Xa1qtY|H5MwN^3u@mp=T zducjEu1E}jn&@R8JGoMw3Yx%nuXY{Ee)yC#UKaz+GKhDv%FuJc!K>m5-jH|-ERcf_ zEf4ikpHr%IibufC#Lm@hg+7YITjP=4>O)*XC~rk&#**kx z3hrhwSnY8s!G-th7YuK+x*yV}p^oS9buPUn(dAcCQlgJ}0~Ykb+t@ea9-g7=V*mb{ zuv)Fm9zXzC!xm7K3oQdhRS)I)e&Ygv{k$@(wJ2AM5Xn@&ZY$BQy$r5P88QKNegze}jr&}_H5LBE@Jge|_dHYJsnPp? z@(n5Z*EJo86OdJ=No)^|W#&nY0A0)O?v9*$$_(4-MC6r4mH`C_L`LwdEx&y5ou@A+ zq_03oAo6nGQeu31I(c9yvEKJw8CxfX?n9X`oLnrvA+md|8JL1rY@e#N!%aN$Dr^JxZ ziKtF_`BK7ZfNmD};));7vh7>~;BJ1liEg0DeJKS!x1suAV$Q3r+2LTsdI|WV_Uxs=ti9 zrv0$gQ1(tAr9M+MNza(bmd3SQ0hdac~i4X*&P;=O<_3 zEd*-Pu49!YD-HRSeJL#IKRmNkX@KG^w2}52P+eVZ0_X~TRoGed^PxUYWQwl6deY-* z-peFG=EOgK_}*S!`%X3*P1XGS=)S1fQW((dG(m7FsPQTyQW9Ma$C8qgLQ8Av>MY8~ zYIR3^cdbidOZ)O@-i$sMk;m%l>R6&KqZdD9W=d*9_!2d~ef!3oNG2twhhb)+cfLCu z=4@pSV11REdb7mQTEAU84a}esuZpoIjaPy>G&VN6$YjBQ7lId^0Rph zn~*`ir*aibI~L8hH|yGJ=NXmZn3598`I9tl{>ggZ;sM0P-JNzh@9`*F%9{J|ut|^F z5v09kR7k2XQ2>q7U50pvVd|dTiiu6$dW>z z35r)-z~XRKH5nO_>lfXQk3M`~@hhkhd>|a_F;znyzCHL#_i4zF6+iw|S3f_QTqAWf z;SZUJEM?UwWUOdCQFCnP$BG{?BRfC;B&=B~@9*ZOdL&GQxfE9BnisliJ%2u4qITuh z#bCmd7PgSw<_=<|*$8Mrp@>Cp`@C4%0u~6p?R5@&_Kc5#utC?t79x|F{4Up9(w%PR zF=+hJ6t}}!%EzdpyP#60Bo|Ae!n>?O0gt=B(!?V}!sD4%?t5Fw2VB0-X}MMlOL^J! z{$VVn@V|A*^+{{0gL(1DDM1g~z@UTRTiDq6ZVRk=%-U6dzX8^qB~b&J7AUM#N+WA!o*ja37v(|Qlo0A9Xf%taMko)ORV`$!=hzgR#sMac6NTgw``8O zx;oQYhbqeFarNXccU%a&wN-|vgK(AsWSZfvcA`c!YQ4;?JhRGFk+1#{PXzVRaiMww zcgnZj$eW9S963fhx&k0E+YfswuqIp*{eX@owI`KNDZWMr1D*7cg^6O@(rb;QQKD~x zjNabjmHh&lGI{6uhNben8BC$(_lHVZ0t0oku$b7|`V1DdYz{l>?>A7)&D6vA;dzA@ z-kE?K%4{ol=l@Fq^78RvVL3klaL+7NVdWn9O8IRNquME-;;C==B_Di>`{A7 zT>MZ)-NG?-qPysKS*c@r2%a7Q2PpiHutNYMTNQeY-8oQu|g#7ly%1E0|9l$h& z&f3N%!gai5$GDG>BDeOQ*$4JXy==FyUoT3Qn$OM2dA8rpQQ3NZ-fE6s#G)V8td!qx z+Jh+b6Ux_N(lEc0@5_^o^v60S5I=ZFYZRvKc^q8}ax zWOFW9+CS~+AfXZdkG-oTBlEM2hWeOH=!2OBcLAHpAQ;jEDy*!mWVu)S>qRivMx7A= zNc4or20!an3gc!-nBRXD{MoAdBb*>L!@lBeBy){AX9T%Z9DPQor^}(hZa=ql$DBC0 zST3!&u+y^k+PC9(M{_%cpR2XKrIJJ)lU#I4MUE(v=d5aN*ZH`bf@WU@e;R|7^_tYY zPJVk7_T0-$65Z!H`ITG+-NXM(0^QfV`+WCe)2pryibPs(1e~KN`Q=Y${No^nmJ)gI z-(Q{$MS9`jCI6#4+B?Ls(U1f5AmR*O-JT#|O~LBw>c@{C{~jp{9^SwE;(o&8Fte`M ziA|M&brUI0vR}*}8a!lkbVOvbUh0T+yd$k`-Uv|48R&?7f;A_d?8aRwRYPXv>-T&pPle#?sr8(em6!iy0;un& zRg_#_UY1(bo{n2=RZz;fAKNOfVRqUHFU*J%R z=wtuM8M;E6BSrPmC*}uxnFDLybM=PaGIbzn>dtG^${j+F76xtGfEeHo&$YWbpYX$9 z=I(~C+4(B(k2BEIbt?b+ep`M#d*CBjkgyD(NswurZSh|-s+&&v!E&DLhi@7|7K~Ex z=ogQ?kQ&Ln?JPs+dkIm_8$bvtJeAEMmR2?7c`+EkQ3Q>0QrEY|KnrJ%F0Q`xll)+k zp_k|rhP7vq@;xe0Lz5)NxDr>e3ik~UzwUK*XTiGPTeZenv*+F_(3FvuzLnbZD6+r} zE|#9_`;F@;?CR#K^`_2$&4`nP86p)!lt5F(_WqTQ2s0Jgn_g$t`~;rg=SQ2KvePm& z!2sf6F^zZjoLa>rMD3G_)(Te@T}8VgyUizJ>AeFva_apRBglfkkKRSy!Nalf3qQZ5 z@VL%aS6NDA7%lD~LD?u2aru}eGa&iQK$fR`>_?V|So$3VZH88J5%lh1SZ?2nOin*^ z^6saGh}N5rIbP>;CoPm}`jGF>PiE^PuFhLpS~5N_8he8Yz<3h?LGgY4H$fmGBq+$d z6c!ID9D2Uv4=t@RFK>rQ@~5h&v-}px(Cc11Xvet8<^VIw8vi?Equh2e0;q8NwZPm`8XqT21;#779dAY5d$fFt%srO1V{BO?+=5vedJ}mW?m$ETki?;eFe2Wy|{|V z9}>^d!@;*30yjNmr=jq7CC1Dc05C(3Pr=VQJX|?{=qZTX-oOOlduUP$3!8Wnd~|%A zM=-c@%OmzeLX_vArJu&`H0G*YsdUOD!Z7Al0nNH)8!*-NRFTKJu@+KR^2x`=+Nu1? zA$#fhmm(b|&9<$}uaxF4=1%g&CL={b5)s;I%ekSeS@vK)rJ${ilKfgYmOpjv$K6U^ zF0Rrs_dOHv(Tk5$Gcz`&FerdE%1B5nq}ld#r|4DGRe<$7A{&lZ9=uP#RLd${1yRdd zi!is>#3|jAM&;+^SX){GSZUVloXR?+=-@8$Z7Y6fWoG5@+` zOI5D+5d#jQR6@*&8s%e28p5%RI;kY(r1dcC)@Dlyh%Q?jCshPoBGddeR6Nk{j){-8 z-Isg$sT#s1M!DHJIZENDKE)%JjX{JThExzS(XZ{GHA4KKLUS~QM=tvGS8XL{JaM8R zC!HS*;x#;dEdBki6{E8>)iMP^6pqo z40LSsC@zk?b)M0R??2QdB?U!8L&MaP#abiL6&D=^%7>WA-`?K-4t7EF)+BZ|b9^&O zoJ@dj(gbgF{kun%VqN_6KA4D7)S_f`KO{N~JNRa`Q2oBj&E;GQk8Jm{Znics<6m1_ z+rmNt45$exH80mu%nSe5OK8@4Utc)1rsTWSMbIoQ=54$ehoh9vPnT0C+;Ie#h$Ufg z`8xSoM}#@KTi|>+;dP;}*xeb)6@#p(bj>j$OV-#_9Q;m zMzqFf6F|W%Z5@BfDD{# z{jngDI-HuZD{F4A^XlqqKf*r;e8;ip&mU*uw1tDSS;-6V&FgMQm5>FDRKi>lmm!rO9_ZQB^!-ntffReJE@RH z`PkAKxV3B>)%iX$JX{&wS2#e;m0@I6HF3yiEinFU2QSW^OixF*FgvmsLwO%rpv=$s z=J+f;uUP-lK}6}Qi#)Gt;NM^S%RRY9;!NvIw5Owa3AF*GBS__g{s%-+iQSGSQ;&=R z8G2xYg}cL`+4=chA9W%qN1FFg2ElAn5yj?8(`V2PEPvyM}T58 zVt~7K{yw_TQ0y_@W@l$-uI2fK-uT|yQh_^esyJ0uQA#R`D?}_Ee|0>4C+RC3yOtlR zI;aJ@^T;4dm`KFH`Z0CIQky0ih*}jGo?I|oc=HHP1oZg*+S7q#1H?QF$Hp%TgzzT+ zlQE7oD<9k6-(T)Y6=$Yq7y*w4;NbVzlcg4509Isx&Alw2mUukRv|Bjox`EhZ z0P71A^Kvr)s~9sivWD1?fw%&NB5s_WGY18-yD&v9{ZvfU=ok@J6gV})wYd1))ps$g zviu`{bCrH`fV#Pzrt|dSu)5W&bMhH7P1FC!x@w%i+8HaiAT57mRFWTYzOh-^dQBhH z@|@?G`%7Nf-%>w(6JmfnO{Z&lf2a9mt}}s=P)4V`+jJn`Mxr=9f_%&5SUoBDoqABM zVZf8|k##rm&S$HYzO|P?Tj%P?n{o{J#f6hL|oe`rO0X_!S-()t; zS_7*mH45b*^!&N9Ftg(g%KF&TO;NF-G=G~PiFZU$gwrO^xy4vvgeldE2+We<*s z?_5k5H`XdP<=uUOE#SdLi)Au@utGRLE+1>My2pMNoPww8aN zJ$X@}5C#-7!kCv!Z;}0DYXq>;gf`n|e>@7is`Z>^I<*ayC9_J1i;J6_oJ3TYPHaw8 zJeeLF8~ZW*^kD0Z<=7PmzdE02-3d^%sIL9`DR<9)(rnSGhky6nGgD zI#D~M3=THZ)sr*R)6;tTaWIKj@|R>b(C-9!Nj0BQ(EKU$FTDZz=fa`FX+%`apuPLy zi?lEF-tYQ~rK4QLC^8umVw}SDG0@>XS65e4=pzoEsU*++iUVv+yI_*`U;=x+1lGLo zNDMBjV_e-EZTF(v(aFh)Kefb0(&=AZA9=7^p~-0%i!tF=sGITA|Ifp$=DS2_I*@9? z?=)<}oeuSor~Vu@6eOs&uCCZI_vY2?r*Ln!iokML5pe?|Z%&VmiVDeGqXf>8@uojt zsfT&>FwB0a5M_pHcD&7CsnqQZCMvSM)!0+0^Bq152;#{rs*!8#Ir20H-7oTl-xZ`&&NwR9>w?S zbR&X~&!$vmx4Kcck;~@7z(U!>vv7&N3OK=X*1O^-h|4u{Erms2vK9ynr|F2L)6>x% z9v;@1`y^A0!?6^>%!5S`;WWWFaP0V~MrBR2YF$;|ij0VC`{(~6ogM)JhjY(%$B-bq z^PlKFhZ(QB>Fv2HC(4lgKlA~mVHXMUE9t#1(JBeIEiEnEK84%c6Ky|Vr-evY9aXil z3~>R_eJ-5osC%7XCA1FTTWb`WEbNDfrMrcM)K@1{xVT>`$i@2OZKAGlSrTa$Pzv_v z@l%c_IR||2RUdtRt0OX9=bgYBD4h0v#m|Q>4k969n@LRjw$G)0S5x?w5U#E$JXnmROM~aW|DCQ! zcdNc`+f6gL2e2SqT_2aS<_`&Qaxx`%cXoFAIFk$T{_tI&ezaXQ_P1ffu<(o%wV^YUP50tu=Q!$7HXX)At^mhlC6*PqtU?&yd_E7Cf> zGGFL~y5AZ=jBXw+wS9sCqtsB4!QSaN7U_#{Jgb=i?_teRLltcMJF z@R8GVAm~Ho!Yv2~od$*d7CsYdjhdZmjkQ(Ej((lLre`?(DQd3@jx|yAYP=qEXB+54 zf@p}JeWx$@8G)6q!qPqZnH&ijV#fVWzTZ+GcJy~~(P6NG9xDwFPXE55rA5_8y?r58 z4e&z5H8+r*Gu;o*ix+w;g92~-{Yw(tWC)92F7y*9FafmTSo^aP)zqQyuCK2r4l#Q_ z5;c~p^RKoBpHI|?rlxX+;gnD+G~b!O(auKB3kW)(+-c1quYko4n}G^ zZ)%$b4Kgh=vF7DA-D!H5e`m_v2<{Y$FIkonnFEM>?0v(-CXtbmB~8W{=%WHutW_xt z()VM#GG<;pcvF6EI#p1?!T{V!(33YaIXN3&C zz>Dp=8v>RUH(_fH%vj)8l#y}7!AD$T4*-H}z0S-On`VXt169@kknF8D7p=G6aK__rt}h5;Q2>LLIixeELD?-wqiE?x&vGnN0h@hz z)bz{PqU}l_)tEoleuAREHSgKD|Q4B!83I z3L>IT>vdjG4N=YuR~=eAXrD=VPHfSB4LQmZ3&YdYl_4{$5I^#anh`t#Y@zD(~!LBZ@%1RRl zDGX4gpB37%j8S@AWl46o*Q@U2@GyX8h@FO9FnNTdZ9Gshmq3wZsmF*pcrM0R)6&uo zzx$4;ripX3w)OW5Fhc1tjISTQ6J>cbzHuBlRpFC`JS zXYU>^jM+ZLk7R!VGstn$85tTrKP(n717m3e zQa&z@gJ+GcL1}&l)1yq%llrHj4 znp{mmYkJ6#W|1kIR3w_Txu=tpR_~wKGz+5p z7PZm`5NF}4zb2#pY#L~!_x}0yi#2MF1VzM6ESrOUeC2jW8t|1<4wPju*xz42>%|0O z;8zYgTR~UawMK-8^V((gEcZHp4cr`mB*)kEFF=vrC3vshdeICkKvYD>!ou>7xKo-= z>Vvt`66SN5PJ*1DtLWIc%nPkz0z?=$VOu`B5#26WUw9VIU&Jq#-n-%_WY_jChQ|!d z#e4cm^S=EiMD22saiZc$pDEdx`_b|C^bIe*EMs^t(@K7O zah6IKS!L-Vlhse?Ok3R#;f(f!La>p^{QT!=&XJyFU(Vl;610FB9pXhMfHt;o_EMj1 zo2T4ywSgUfkHRF_W9ry`Awk>&3k!mD^+vAWs@5TQCAm{7;J75Ed*x$g6PtVj0s=fd zv=lLLY|z2#fXPx!C1cp9ZpT|sqQ=TC?wdU+R-(1!mLt4|VtW^4P+PdAa3#FB0XW8#a<0@r@aJdho;q&FXzwpQzOGiG&!!uTyo7JopwQikf(Sl;$tsme#*`sB*-!S;4ECyAV3xR zN!~J3^M;xJd$=lN5i5t->u--)A1W%++)gxNFsq)VOX#ewu6A;A8bPu?KSH5U7&;|% z@4G4Y*MpVs4a8D;75+8OUr91i70k*@N!eFfnh2+)q@0DfKnfRp^GbX8PTJiq3CPzU}qdo+N2#jhG3;^-*M%h0(`7s65sOXAlnG&wyR zinIl=+9&>+m{K^r<&U3&je_FJvG200t1AaPy9s%L8cFA%(dEj&t3LBsq-$iwq{q&D>rGwj z)izs)L*40doJW=qf!A%POv^kc$4;cXcFhn;15*A5(52?lV{zc;bhqLNhS zd^SmxMxMsTL%G3ox~6Y+M3(&IzIZcf46{3MB0N0kOymlt3hF&&vZn0c2G51MVxVW= zwN*Rlz4Ahq5}z~%-TV9C3p4k%)JY1bqfGV zKUVzeX8dSVdwBTx;)p9JHgj`w(tDj%R8*MCC?1kR0_i&2LYT$E^qWH@*hv=^xl>3w z$W{O`?O(!M4$2bzWwK(kWwT!hr>zrm161{#Ef8dmixu96p(WnDoE)0-(M=@y%Nig< zPY=Uf8zq}Vzx2(?$;rCTEACOKSh|&^|mZcF_QvJ4Vx5!YV zh6f(W(zRDwT3S^lU1dpE|D!iue9Zk}m&eF{+$${+W-CieP9C0^jjD;wS-iivrs?T{ zvrOou3;Ky)uc&t|WuPeNaxCeUCMF%4kUP!LKKLwL zmG}AU={idZ9Z}{)4P}1s?V1?1xie=2V`G0VnbYOmb9CiH?@AcZ-`~F{Re-XEic_c* zmOZp~vNc)lI+S-Xq&Dv?b98dj`J7{P#z&qGLUT#n(9n?i=C2DU!p~2JlkVH{zE&}@ z^#c>2V)up7jZ>YQPu+E4&oatsulZ!|SvQ--Cm4`P7nx0wM?bei6DQ0>)!*Mg6EyAF z7_?2&{-L~lv#N)mhnIJz-gj9KX-Q4LRTL(k?5;>EeJe#vA?0?WM)Vnp2kq1+UhK_X zCaU3g3wt+dI%H%bv82v}oWxXdkdWpebKY1crp&7Ozef$05?cB?i|g^{>V4FPwL4g!|=I;HAngL39~6XHd`{El)W zGG=2)h&=5S_#4nr8NPCtA%QfKlOcgCeleWF{A+y1(ON~gYU%;Io|I!1=NCZn2msx8 z>o&ZU_x;&DAOi|K>>*n`0;umF9@J3hXHk;6O@t=${ZuV&3SeFE$ucTQYv4)wwzK1v z-2D^r>?*r~IeF)s2>>K5E&cEz&U?P4r9~CphZ)@{a3zM;&hJ*jfB=DlkF#3hZcfFd zF)*w-@nO_J!U*yYnMdZ=19-$E2_AkIleoC&rL$hHR>wK>m#e7}hqntL^BxKvddLu^ z{)bcWcbw|>>FT5OSf$^#Lc(pawfE>hx^Xjq%rc07uo1n%FZRN*inEiJ&PvEbO-gE5 zVVUTL=D{m>91z|2EG%rHGEi~tUY%}zaZAS47`Ii#zw~?vhG_gJ*nuHk{4w7CN|GS{JG({GPjvvPAQ?6{_Gmwh;|ybsaTcyVzt5|5K*uudqL zS+&!mO`leK@ZbTX@*a^YXFzcE>lJ40)@!vc3)we4}6LcHaz~)=kw&uy{T){WZ~geWX?x+{nyrKE7FNGSe{Y zb=c6R-Nvr@khsy}=OVP*jMpC2KQKT}LM%cOr5~ldb8^v66Guksla)Ie2w;t-;prfI zw=A23&Dgqx%js56YLpA`vLtGd*xYFe6k)!@N|U0cUOe*hAmZeiwx&# zvA$H|Es(;f9Va`xd=25nCR>Hvuj8t``9lf(Y6#va#G@mk3k^y1^4dF%DG%9~3X1s` zHj)WvBwwGOdeJj5)V8M^mE^fs7cI`5%a3ObAf9bi^?)J!Valr*}AV^&}Zz)Utv^2>)Iq+ z?*|ZSH)lioB5!m={QmvvE!IvQ92h8t0TViefU^qKI?RAdW}i4t0xu3coZF8f_o54OD{ryZ-BxMKfUKstZG{ZJfaE+X>JA+BsR z$P}$&I95{cV;e6_f?fTAUr-SHb3MGxD+?x?xb>F^8Lk)gj?TkYzESKc7DTXi583JM zV{=j5XskkAp=Q~bdk()h4xXEprQo|1JH1^20}gM+N7LpH^}yuWlSe?~|B8{^Q4X$f*T5~%m7eW~NxQJ%`Ph>Pj@YXX+pdfm;6nm#gFlhUdKOsr^1sK*7c0yFgF z6^Lh1j(kikxk#fyN!AM9LX-7hrH?lP;KFG{6Q9k??`HfsJPc6Gt$+dT4GNal`zzAw z1eAj4xTQ!*Nxx4|zaIR*maaXX$^DPd{Vtr5%KhG~+*YIjSaKwn<+2t+F5@tlUlK+_ey>O8``7dQ_kF(a&-?RypYP}Me%`-% zs#L5Aq_hv%th<*XeVC!1baY{UzLa=!N1)<>Y?P-@j$n&;y)6e(rmL&FGUZokb`~p+ zF0zh>Xk?1?NYM(@GzdltlEf{xKUPZ4c!{of7*qVEzDT6X%TzVxFDc?*XNQy|MahUV zP6!k-FWs2pqL=hVUVPh~nr2akf~2kn?aObnB13fvfu0bui=J@B14NmyUrt-V{PObL z27keFXRQ8)p3+D|gg=CwL@&qCa}Z^A=}GY=?nX~FDegwKBhV{?f?k7noo$yQj5SB! zNe2f9E0G*o*jB-iFVNCtS@<2;P54yPKZQ6P8Vo&=r9Q{!JCrD7b|x$7tsgBkF?l#S zxMkKwG8{d;YwEpVTejP@Gv<6DN=07bBs}0#}2O&kcmsdMTK&XR4_O6?I0Ve|Q6hECM&`1`6gyA;#v9U#w$2K- zJ0-7f4JJ7TILFRpSoX}Wj*N`l+1@zs>KgD|#L&Zq6UV~31an~H!^6XqlbQE$OGlh2 z9N>>Q07K#m>>GjC4@>{1v^?hlPgv`1iUJcO$F*$odw4(D;cCO~DJKv65`|yQR%)EA z6iAL!r;mcAzq#uxNlAtZQ^rrtB&-&7&hS77OJ|w6{~ts&s1B5KaWi2Q>M~PrJOf zszgCR&$KS9lN=v+|Lv&582h|5M7KDcQPdw=;+_DyYNZCB83=v>NJF^Akw?#e?t2`1 z$l=9xt1~t>yE|+Boq>$RM4=|XiQ!@Xb*ndlKn-Rp+`0%&8@$`P_vvQ;IOB3B5NQ#6 zg9WsPA1&Bwhn%4$L8&oka8Qg60oD1YR$^|cTh7>R-iV1&iIpfrk_=kmlye5zYinz5 z0SYNmVNMxvu8#qVHrUsll2`lKF(U zjM6Vd9)*=ZfK%+WT=bMS$8Svn{xr+W%jAKY+8^l0GI-)gYJ#Yla7}$80!>Akl0h*w z7<%NQQc<7cGpkT0#t3Y0j-;ct<4E`XkLR{C-tpHm;FNZrcja_~8w#qD+$Q=zQ_Qi} zbLle63t@>v{R^Ah@te()o-|LAqwvk^>nBbbr6H-%TsF`g0E)o?$snR^`?@t(C=Vf; z+_tr~<*0L(TQ`o^R8>uggnfHjbXTowQ9G_1D5+i0Q&L6#$qvc`z4SY7FX_4z0J_Y? zSmHm0Fubib=OUXP2uYwmzX>$kIo%t4vrxXb6z40-g;XtcF@LGHi{T)Lv#O|{GN>yl=8 z*|c^)^HMY|k&N;7&g#B$@#4jpW_4v}L&at!H6ff)Q=>&joHzL0-@mvc(1VI9Y7X#- z{fL}2D{{Nw>gsyo0)K7m&i2N|+q2{^ag*CvV{071>{bp~WL(d!ZQ=1Q zx&D|s)n_Vu(4fos4yojLo2e{OM=L@`VEAmR7RvVFcz|akn}+DVR~yDoAGmI(Z6^uT&HO6{%dI4bgBJb!}Kv<0Nm=o5Ovy*-Y>vJ!+s%& zUcqQ(&;TniEQK@wcO27GZC`P>VuhrF!IQjZ4?24H?%szF;Jk7ci)Dw5N-}9P+a$2K zTy7vEukc0)b2O;_94_+D-r$IquW#e`HsjM`Hv#C3mjvC=MZwE{zKECg{<$|3BZo6# zct220guSw8ciwy4IYVX#^~tGHMT6B~=MSbkH41rvQyHo4yn!V_ktS4$^!kH{gM^j% zXjpyO2fr1khia!*fmXr3(_j4Hk$3A>k3OmrJGs5w9MS*8 z#&)aw!bIsXaX-T&A!jAe8Dv{nSafD;rj5(HWQivWiAsCNJ@P_y@bn@)JCCWP^R9ne z;k7sU$%jVe1)(71{QUgXRI$dCjg5_@NzUz6htk!5yR-2PNBm6wa9j`&c2*l+36A9i zwXUR^JWshtX4d|wy-2G6M`&7dZEel!^%n7!TSc-9`1LRoL+{P1@^tjoQjio)ifmHL z?6lE1upZqJXf{VhQtMEVeFHjYNe?Q@#>VF3PLXCNw*m^5HmzJ-SO7Ho)vS$CppN#=Qjws7DKnOv8icrb_D6ykwO13x~>(dkQ_7MB2d|NgBo3Naq*{c3HWWD zMkY93hX8Kt?{2zFAI7HgffJ$W*RJ^T8DeUJwgRbF1M^GH%#R9V86 zF$Q@U0{afYTV9Ay66x}lk!S+GLdGh7Va#u^`D^>)UZGc5u+yOoc=PzfD(!aDXI7(F zI$0T_l5RF**Wm$G(FUBN$q0Se3GM>SmBH(gN-fMbyZ{{C0Tn^tj_CchXl;6y=xGGj zc_b-&l)`y75*A~nCL$sd$WWz~jps z@iC%o$_YzF!Qt@x9i@meVfj_MSd!m<>V&}+?3GAwI27lzQl1bpfu-@})-x;9nGnx6 zvrl~#M)`m*@4s=A+fU#W&XOR}4pes>rIrD2UlRPf`RQiy_YV~W0%4+bQ1sy8Z^j1( zdI-%`ZVC0+>dB^?hT4C7L+yhAub_{N%K^Sow{ErbYccftfAj~)c6WtnPiWPzM)3`l zu&-Oh3b&%95zXf;6{icV*&%?D@xJFoF`4H1VIjbfyriQb**Lz;FOGlZ4PA_~w)*{P zYgfM1FZQu#u;%$;u)|0yIC2b5;RG_YW~^>Z0}f7gxZx_a*h?U9p@)2RlczrVe0tn{ zC3%0OWO+kl{`ZkVrBZXT1gZC{c{jRdBV|u#s-G@LLCA=p68EP@l_Oz8OVKSZ$8*P+ zxZzPI&fjzW($DA&Hi3=ia6($WSs zf45?yj2O{qa7q(h+TMflF)ra9cvuq1Xhc$5!q*MaL%{5=F?}S=W!w2{PCA@DTaaCH WrKGJBz7PZgfzCO(Iab*RB>f+@L<<)H literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/opened-lock-15.png b/plugins/scheduler2/static/img/opened-lock-15.png new file mode 100755 index 0000000000000000000000000000000000000000..da6a92397f4303d3843b61ce0886f386223c12ab GIT binary patch literal 1167 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 yz+H?5w&3?#Hnsun%pd;V} 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 FO#tcndlUcw literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/tools-15.png b/plugins/scheduler2/static/img/tools-15.png new file mode 100755 index 0000000000000000000000000000000000000000..ffd9847cb12783814d2a35a3597603343553067e GIT binary patch literal 1149 zcmaJ>TWB0r7(QuC+Knk)X+wz?dYpvRsymn6*==^***M*qwWChDY!)UMC$hEUsBLA zMQS{$v6`DhHS5rfhsI_`OUBHkkv6H3EX)K#V7oRVIt=XNjxPivwWcdLz7U2P3a&xO zq)6R2Rn`hHhdl(7bRuT390yY=n&XqH6!#>Ivs|2E;|!aMalDXB3GoAP{ZLt$@yx1F zl=JJkJhLiNH9}m0VH%AF-AK^bn_#$fIvr}n<1x>y#{6lA=t0c!2U-d;@(s^&iG>{) zD(V$nCn80)O0eAxS;t>*lYwm}&|QY3*|4Phwc4(x{Xf*UH_$#QqD{a5DeRY~UBncT zkL#X+il{mergDXxhjfCy62`|{T`bfv!F~<9FgKQhkBwW7i5vd@HN2(?s^b&gF_0>Y zRA9TbWtoDc#M5boRU{?JahwvDIF=vg6(yl06e)io(c;S3sN2XPEv~uA&9~)-s}QzB zkdbG-gv`8$ZMaslV72#>Ypb`;HQRfU+j5yK%rN0#|261Vs3_;d=f>J*;pXBa#}p}# z8p&RKwXOmH?x?a<3Vx~_gT1HbRv(T2vOM(hj+MK^JpI7Udxawl+Oq$VxwE;%oW2rS zI+yHF-`sP0b!c#E-;w4EbHlqoxwS9)T<+`3ly&sf`46`(Far<1E%nWIRqF8QYajHV zI18qz=$`|N?*b9dMpo{Ys-Tpop&0wgHK<2s6TkWztH&>NdLOObfN3;Qjq&=wrinJ+5$SdLDPNl2dUoY PhaZBfjLM%KJU0IiYp8Ww literal 0 HcmV?d00001 diff --git a/plugins/scheduler2/static/img/tools.png b/plugins/scheduler2/static/img/tools.png new file mode 100755 index 0000000000000000000000000000000000000000..421e5f8e23235fd45a2e9cbd7092d8d7db4e54f7 GIT binary patch literal 1887 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?F2BR01_lO+64!{5;QX|b^2DN42FH~Aq*MjB%%art{G#k)|IPA# z3=AxSAT<%bK32*3xq68pC3+RP1q?R!6$OdO*{LN8NvY|XdA3Rl3JOXJnJKnP;ikR@ zz6H*y8JQkcMXAA6ej&+K*~ykEO7?bKHWgMCxdpkYC5Z|ZxjA{oRu#5NU^A`qimgDx z`br95B_-LmN)Y!%_y#CA=NF|anCKbmCL0)=D43Y(8JQbdnw#k;1Sgg#cqQg37?~>= z85o!=7#Ud^n_C&1D?ovg9hZWFf=y9MnpKdC8`RFClr&qVjFOT9D}DX)@^Za$W4-*M zbbUihOG|wNBYh(y-J+B<-Qvo;lEez#ykcdDAuw}XQj3#|G7CyF^Yauy<|ZcPmzLNn zDS<441E}W`3*Z*z6+;6rIX_pwBC$ZH-~5!!v`P%^ zMpg!vRwf2e?MRBC+HLef0f7`Sa0xVVLIIYN3=gk@(xM!2w4@~Kr{<*QrskCt>l^AB zqJ~*YvQ=7sQEp<1U1n}#da8awUb>AwLJ+U}Ag&H_akJyH(TAr?m>${!M7Yxs(9)9Y z$3mqT7?=)tx;TbpG+v!`KV2qJZuQdC2p?l zh}^=MWD;fTnr@fH;Ou(F{Nsy7ysqhXQQ=2UH-<5NtNvS1GOhB6RmqW46OYafSr@p& zCI8WK<*>dz;*(CBazzPW@3SbL>9io4TS~ZoD%(BQqJ3_Y4%ltT+^xY}7i}eH<&(i1 zqr^F{zs%cE>+|ve;czcz%MUl1|E+yk_dHD?>Cu_P4tynr{Vi`(s~;LIF#Ncq*4zk_H#~9JiONscbG%~{_!C2i5y%!3b{h34G}Iy|3Yxkp;0 zN&~Zs=t~CupvLpecAlnAtNoIG91d;Me^zSA7$f;3QrNDwX=&5^-JMrHu-~}cm;FG@ zQmT%5-tj}r&pq$%37l>1yNt)1HU5M;qs^yQbJ-cmx7@w$C4cRjc*~`2pNJ51{E2V9 zIyYK0Eu|GRvx|R~PvMYDx%kUQV0mZb!(~NBvtut#Ec^I#T5Qo1#pu*ocG*j_XLUYs z)Z$bO-ki&wAr&-VkmKezr*k69w"); } + //var srt_body = []; + var totalCell = ""; + for (var i = 0; i < totalColums; i++) totalCell +=""; + var srt_body = ""; + + $.each(SchedulerResources, function (i, group) { + //var groupTR = $("#ShedulerNodes tbody").html('
' + group.groupName + '
'); + var groupTR = $("#ShedulerNodes tbody").html('
' + group.groupName + '
'); + + $.each(group.resources.slice(0,30), function (i, resource) { + if (i == 0) { + //$("#ShedulerNodes tbody tr:first").append('' + resource.hostname + ''); + $(groupTR).find("#schdlr_frstTD").html(resource.hostname); + //$(srt_body).html("" + totalCell + ""); + } else { + $(groupTR).find("tr:last").after('' + resource.hostname + ''); + //$(srt_body).find("tr:last").after("" + totalCell + ""); + } + srt_body += "" + totalCell + ""; + //srt_body.push(''); srt_body = srt_body.concat(totalCell.concat()); srt_body.push('/'); + }); + }); + + //$("#scheduler-reservation-table tbody").html(srt_body.join("")); + $("#scheduler-reservation-table tbody").html(srt_body); + + if (Debug) console.timeEnd("each:SchedulerResources"); + + + $("#" + rsvrTblNm + " tbody tr").each(function (index) { $(this).attr("data-trindex", index); }); + + }, + + /* TEMPLATES */ + + // see in the html template + // How to load a template, use of mustache + + /* QUERY HANDLERS */ + loadWithDate: function () { + // only convention, not strictly enforced at the moment + }, + // How to make sure the plugin is not desynchronized + // He should manifest its interest in filters, fields or records + // functions triggered only if the proper listen is done + + /* all_ev QUERY HANDLERS Start */ + on_all_ev_clear_records: function (data) { + //alert('all_ev clear_records'); + }, + on_all_ev_query_in_progress: function (data) { + // alert('all_ev query_in_progress'); + }, + on_all_ev_new_record: function (data) { + //alert('all_ev new_record'); + }, + on_all_ev_query_done: function (data) { + //alert('all_ev query_done'); + }, + //another plugin has modified something, that requires you to update your display. + on_all_ev_field_state_changed: function (data) { + //alert('all_ev query_done'); + }, + /* all_ev QUERY HANDLERS End */ + /* all_resources QUERY HANDLERS Start */ + on_all_resources_clear_records: function (data) { + //data is empty on load + }, + on_all_resources_query_in_progress: function (data) { + //data is empty on load + }, + on_all_resources_new_record: function (data) { + var tmpGroup = lookup(SchedulerResources, 'groupName', data.type); + if (tmpGroup == null) { + tmpGroup = { groupName: data.type, resources: [] }; + SchedulerResources.push(tmpGroup); + //if (data.type != "node") alert('not all node'); + } + tmpGroup.resources.push(data); + //alert('new_record'); + }, + on_all_resources_query_done: function (data) { + this.drawResources(); + //data is empty on load + /* GUI setup and event binding */ + this._initUI(); + this._SetPeriodInPage(init_start_visible_index, init_end_visible_index); + this.loadWithDate(); + }, + //another plugin has modified something, that requires you to update your display. + on_all_resources_field_state_changed: function (data) { + //alert('all_resources query_done'); + }, + /* all_resources QUERY HANDLERS End */ + /* lease QUERY HANDLERS Start */ + on_lease_clear_records: function (data) { alert('clear_records'); }, + on_lease_query_in_progress: function (data) { alert('query_in_progress'); }, + on_lease_new_record: function (data) { alert('new_record'); }, + on_lease_query_done: function (data) { alert('query_done'); }, + //another plugin has modified something, that requires you to update your display. + on_lease_field_state_changed: function (data) { alert('query_done'); }, + /* lease QUERY HANDLERS End */ + + + // no prefix + + on_filter_added: function (filter) { + + }, + + // ... be sure to list all events here + + /* RECORD HANDLERS */ + on_all_new_record: function (record) { + // + alert('on_all_new_record'); + }, + + debug : function (log_txt) { + if (typeof window.console != 'undefined') { + console.debug(log_txt); + } + }, + + /* INTERNAL FUNCTIONS */ + _initUI: function () { + if (Debug) console.time("_initUI"); + //fix margins in tables + mtNodesTbl = $("#" + rsvrTblNm + " tr:first").outerHeight() + 6; + mtSchrollCon = $("#nodes").outerWidth(); + $("#nodes").css("margin-top", mtNodesTbl); + $("#reservation-table-scroll-container").css("margin-left", mtSchrollCon); + SetPerFun = this._SetPeriodInPage; + //slider + $("#time-range").slider({ + range: true, + min: 0, + max: 24, + step: 0.5, + values: [init_start_visible_index, init_end_visible_index], + slide: function (event, ui) { + SetPerFun(ui.values[0], ui.values[1]); + } + }); + $("#DateToRes").datepicker({ + dateFormat: "yy-mm-dd", + minDate: 0, + numberOfMonths: 3 + }).change(function () { + //Scheduler2.loadWithDate(); + }).click(function () { + $("#ui-datepicker-div").css("z-index", 5); + }); + //other stuff + fixOddEvenClasses(); + $("#" + rsvrTblNm + " td:not([class])").addClass("free"); + if (Debug) console.timeEnd("_initUI"); + }, + _SetPeriodInPage: function (start, end) { + if (Debug) console.time("_SetPeriodInPage"); + ClearTableSelection(); + $("#lbltime").html(GetTimeFromInt(start) + " - " + GetTimeFromInt(end)); + + var start_visible_index = (start * schdlr_PartsInOneHour) + 1; + var end_visible_index = (end * schdlr_PartsInOneHour); + + //hide - show + for (i = 0; i < start_visible_index; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").hide(); + } + for (i = end_visible_index + 1; i <= schdlr_totalColums; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").hide(); + } + /*$("#" + rsvrTblNm + " td:not([class*='info']), #" + rsvrTblNm + " th:not([class*='fixed'])").hide();*/ + for (i = start_visible_index; i <= end_visible_index; i++) { + $("#" + rsvrTblNm + " td:nth-child(" + i + "), #" + rsvrTblNm + " th:nth-child(" + i + ")").show(); + } + + if ($("#" + rsvrTblNm + " th:visible:first").width() > 105) { + $("#" + rsvrTblNm + " th span").css("display", "inline") + } else { + $("#" + rsvrTblNm + " th span").css("display", "block"); + } + mtNodesTbl = $("#" + rsvrTblNm + " tr:first").outerHeight() + 6; + $("#nodes").css("margin-top", mtNodesTbl); + //$("#scroll_container").width($("#Search").width() - $("#nodes").width()); + //$("#nodes th").height($("#tblReservation th:visible:first").height() - 2); + if (Debug) console.timeEnd("_SetPeriodInPage"); + } + }); + + //Sched2 = new Scheduler2(); + + /* Plugin registration */ + $.plugin('Scheduler2', Scheduler2); + + // TODO Here use cases for instanciating plugins in different ways like in the pastie. + + +})(jQuery); + + + diff --git a/plugins/scheduler2/static/js/selectRangeWorker.js b/plugins/scheduler2/static/js/selectRangeWorker.js new file mode 100755 index 00000000..5f282702 --- /dev/null +++ b/plugins/scheduler2/static/js/selectRangeWorker.js @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js b/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js new file mode 100755 index 00000000..b2ea00eb --- /dev/null +++ b/plugins/scheduler2/static/js/slider/jquery-ui-1.10.3.slider.min.js @@ -0,0 +1,6 @@ +/*! jQuery UI - v1.10.3 - 2013-11-26 +* http://jqueryui.com +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.slider.js +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +(function(e,t){function i(t,i){var s,n,r,o=t.nodeName.toLowerCase();return"area"===o?(s=t.parentNode,n=s.name,t.href&&n&&"map"===s.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&a(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&a(t)}function a(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var s=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.3",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,a){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),a&&a.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var a,s,n=e(this[0]);n.length&&n[0]!==document;){if(a=n.css("position"),("absolute"===a||"relative"===a||"fixed"===a)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++s)})},removeUniqueId:function(){return this.each(function(){n.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,a){return!!e.data(t,a[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var a=e.attr(t,"tabindex"),s=isNaN(a);return(s||a>=0)&&i(t,!s)}}),e("
").outerWidth(1).jquery||e.each(["Width","Height"],function(i,a){function s(t,i,a,s){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,a&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===a?["Left","Right"]:["Top","Bottom"],r=a.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+a]=function(i){return i===t?o["inner"+a].call(this):this.each(function(){e(this).css(r,s(this,i)+"px")})},e.fn["outer"+a]=function(t,i){return"number"!=typeof t?o["outer"+a].call(this,t):this.each(function(){e(this).css(r,s(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,a){var s,n=e.ui[t].prototype;for(s in a)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([i,a[s]])},call:function(e,t,i){var a,s=e.plugins[t];if(s&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(a=0;s.length>a;a++)e.options[s[a][0]]&&s[a][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var a=i&&"left"===i?"scrollLeft":"scrollTop",s=!1;return t[a]>0?!0:(t[a]=1,s=t[a]>0,t[a]=0,s)}})})(jQuery);(function(e,t){var i=0,s=Array.prototype.slice,a=e.cleanData;e.cleanData=function(t){for(var i,s=0;null!=(i=t[s]);s++)try{e(i).triggerHandler("remove")}catch(n){}a(t)},e.widget=function(i,s,a){var n,r,o,h,l={},u=i.split(".")[0];i=i.split(".")[1],n=u+"-"+i,a||(a=s,s=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[u]=e[u]||{},r=e[u][i],o=e[u][i]=function(e,i){return this._createWidget?(arguments.length&&this._createWidget(e,i),t):new o(e,i)},e.extend(o,r,{version:a.version,_proto:e.extend({},a),_childConstructors:[]}),h=new s,h.options=e.widget.extend({},h.options),e.each(a,function(i,a){return e.isFunction(a)?(l[i]=function(){var e=function(){return s.prototype[i].apply(this,arguments)},t=function(e){return s.prototype[i].apply(this,e)};return function(){var i,s=this._super,n=this._superApply;return this._super=e,this._superApply=t,i=a.apply(this,arguments),this._super=s,this._superApply=n,i}}(),t):(l[i]=a,t)}),o.prototype=e.widget.extend(h,{widgetEventPrefix:r?h.widgetEventPrefix:i},l,{constructor:o,namespace:u,widgetName:i,widgetFullName:n}),r?(e.each(r._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete r._childConstructors):s._childConstructors.push(o),e.widget.bridge(i,o)},e.widget.extend=function(i){for(var a,n,r=s.call(arguments,1),o=0,h=r.length;h>o;o++)for(a in r[o])n=r[o][a],r[o].hasOwnProperty(a)&&n!==t&&(i[a]=e.isPlainObject(n)?e.isPlainObject(i[a])?e.widget.extend({},i[a],n):e.widget.extend({},n):n);return i},e.widget.bridge=function(i,a){var n=a.prototype.widgetFullName||i;e.fn[i]=function(r){var o="string"==typeof r,h=s.call(arguments,1),l=this;return r=!o&&h.length?e.widget.extend.apply(null,[r].concat(h)):r,o?this.each(function(){var s,a=e.data(this,n);return a?e.isFunction(a[r])&&"_"!==r.charAt(0)?(s=a[r].apply(a,h),s!==a&&s!==t?(l=s&&s.jquery?l.pushStack(s.get()):s,!1):t):e.error("no such method '"+r+"' for "+i+" widget instance"):e.error("cannot call methods on "+i+" prior to initialization; "+"attempted to call method '"+r+"'")}):this.each(function(){var t=e.data(this,n);t?t.option(r||{})._init():e.data(this,n,new a(r,this))}),l}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{disabled:!1,create:null},_createWidget:function(t,s){s=e(s||this.defaultElement||this)[0],this.element=e(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),s!==this&&(e.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===s&&this.destroy()}}),this.document=e(s.style?s.ownerDocument:s.document||s),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(i,s){var a,n,r,o=i;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof i)if(o={},a=i.split("."),i=a.shift(),a.length){for(n=o[i]=e.widget.extend({},this.options[i]),r=0;a.length-1>r;r++)n[a[r]]=n[a[r]]||{},n=n[a[r]];if(i=a.pop(),s===t)return n[i]===t?null:n[i];n[i]=s}else{if(s===t)return this.options[i]===t?null:this.options[i];o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(i,s,a){var n,r=this;"boolean"!=typeof i&&(a=s,s=i,i=!1),a?(s=n=e(s),this.bindings=this.bindings.add(s)):(a=s,s=this.element,n=this.widget()),e.each(a,function(a,o){function h(){return i||r.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?r[o]:o).apply(r,arguments):t}"string"!=typeof o&&(h.guid=o.guid=o.guid||h.guid||e.guid++);var l=a.match(/^(\w+)\s*(.*)$/),u=l[1]+r.eventNamespace,c=l[2];c?n.delegate(c,u,h):s.bind(u,h)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,r=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(r)&&r.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var r,o=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),r=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),r&&e.effects&&e.effects.effect[o]?s[t](a):o!==t&&s[o]?s[o](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}})})(jQuery);(function(e){var t=!1;e(document).mouseup(function(){t=!1}),e.widget("ui.mouse",{version:"1.10.3",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):undefined}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(i){if(!t){this._mouseStarted&&this._mouseUp(i),this._mouseDownEvent=i;var s=this,a=1===i.which,n="string"==typeof this.options.cancel&&i.target.nodeName?e(i.target).closest(this.options.cancel).length:!1;return a&&!n&&this._mouseCapture(i)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){s.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(i)&&this._mouseDelayMet(i)&&(this._mouseStarted=this._mouseStart(i)!==!1,!this._mouseStarted)?(i.preventDefault(),!0):(!0===e.data(i.target,this.widgetName+".preventClickEvent")&&e.removeData(i.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return s._mouseMove(e)},this._mouseUpDelegate=function(e){return s._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),i.preventDefault(),t=!0,!0)):!0}},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e){var t=5;e.widget("ui.slider",e.ui.mouse,{version:"1.10.3",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this._refresh(),this._setOption("disabled",this.options.disabled),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,i,s=this.options,a=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),n="",r=[];for(i=s.values&&s.values.length||1,a.length>i&&(a.slice(i).remove(),a=a.slice(0,i)),t=a.length;i>t;t++)r.push(n);this.handles=a.add(e(r.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)})},_createRange:function(){var t=this.options,i="";t.range?(t.range===!0&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:e.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({left:"",bottom:""}):(this.range=e("
").appendTo(this.element),i="ui-slider-range ui-widget-header ui-corner-all"),this.range.addClass(i+("min"===t.range||"max"===t.range?" ui-slider-range-"+t.range:""))):this.range=e([])},_setupEvents:function(){var e=this.handles.add(this.range).filter("a");this._off(e),this._on(e,this._handleEvents),this._hoverable(e),this._focusable(e)},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var i,s,a,n,r,o,h,l,u=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:t.pageX,y:t.pageY},s=this._normValueFromMouse(i),a=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var i=Math.abs(s-u.values(t));(a>i||a===i&&(t===u._lastChangedValue||u.values(t)===c.min))&&(a=i,n=e(this),r=t)}),o=this._start(t,r),o===!1?!1:(this._mouseSliding=!0,this._handleIndex=r,n.addClass("ui-state-active").focus(),h=n.offset(),l=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:t.pageX-h.left-n.width()/2,top:t.pageY-h.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,r,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,i),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,i,s,a,n;return"horizontal"===this.orientation?(t=this.elementSize.width,i=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,i=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/t,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),a=this._valueMax()-this._valueMin(),n=this._valueMin()+s*a,this._trimAlignValue(n)},_start:function(e,t){var i={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("start",e,i)},_slide:function(e,t,i){var s,a,n;this.options.values&&this.options.values.length?(s=this.values(t?0:1),2===this.options.values.length&&this.options.range===!0&&(0===t&&i>s||1===t&&s>i)&&(i=s),i!==this.values(t)&&(a=this.values(),a[t]=i,n=this._trigger("slide",e,{handle:this.handles[t],value:i,values:a}),s=this.values(t?0:1),n!==!1&&this.values(t,i,!0))):i!==this.value()&&(n=this._trigger("slide",e,{handle:this.handles[t],value:i}),n!==!1&&this.value(i))},_stop:function(e,t){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._trigger("stop",e,i)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var i={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(i.value=this.values(t),i.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,i)}},value:function(e){return arguments.length?(this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0),undefined):this._value()},values:function(t,i){var s,a,n;if(arguments.length>1)return this.options.values[t]=this._trimAlignValue(i),this._refreshValue(),this._change(null,t),undefined;if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();for(s=this.options.values,a=arguments[0],n=0;s.length>n;n+=1)s[n]=this._trimAlignValue(a[n]),this._change(null,n);this._refreshValue()},_setOption:function(t,i){var s,a=0;switch("range"===t&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),e.isArray(this.options.values)&&(a=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments),t){case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=0;a>s;s+=1)this._change(null,s);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e)},_values:function(e){var t,i,s;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t);if(this.options.values&&this.options.values.length){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(e){if(this._valueMin()>=e)return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,i=(e-this._valueMin())%t,s=e-i;return 2*Math.abs(i)>=t&&(s+=i>0?t:-t),parseFloat(s.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,i,s,a,n,r=this.options.range,o=this.options,h=this,l=this._animateOff?!1:o.animate,u={};this.options.values&&this.options.values.length?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),u["horizontal"===h.orientation?"left":"bottom"]=i+"%",e(this).stop(1,1)[l?"animate":"css"](u,o.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({width:i-t+"%"},{queue:!1,duration:o.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},o.animate),1===s&&h.range[l?"animate":"css"]({height:i-t+"%"},{queue:!1,duration:o.animate}))),t=i}):(s=this.value(),a=this._valueMin(),n=this._valueMax(),i=n!==a?100*((s-a)/(n-a)):0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](u,o.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},o.animate),"max"===r&&"horizontal"===this.orientation&&this.range[l?"animate":"css"]({width:100-i+"%"},{queue:!1,duration:o.animate}),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},o.animate),"max"===r&&"vertical"===this.orientation&&this.range[l?"animate":"css"]({height:100-i+"%"},{queue:!1,duration:o.animate}))},_handleEvents:{keydown:function(i){var s,a,n,r,o=e(i.target).data("ui-slider-handle-index");switch(i.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i.preventDefault(),!this._keySliding&&(this._keySliding=!0,e(i.target).addClass("ui-state-active"),s=this._start(i,o),s===!1))return}switch(r=this.options.step,a=n=this.options.values&&this.options.values.length?this.values(o):this.value(),i.keyCode){case e.ui.keyCode.HOME:n=this._valueMin();break;case e.ui.keyCode.END:n=this._valueMax();break;case e.ui.keyCode.PAGE_UP:n=this._trimAlignValue(a+(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(a-(this._valueMax()-this._valueMin())/t);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(a===this._valueMax())return;n=this._trimAlignValue(a+r);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(a===this._valueMin())return;n=this._trimAlignValue(a-r)}this._slide(i,o,n)},click:function(e){e.preventDefault()},keyup:function(t){var i=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,i),this._change(t,i),e(t.target).removeClass("ui-state-active"))}}})})(jQuery); \ No newline at end of file diff --git a/plugins/scheduler2/static/js/table-selector.js b/plugins/scheduler2/static/js/table-selector.js new file mode 100755 index 00000000..b4991519 --- /dev/null +++ b/plugins/scheduler2/static/js/table-selector.js @@ -0,0 +1,167 @@ +////version 3 +var dragStart_td = 0; +var dragStart_tr = 0; +var dragEnd_td = 0; +var dragEnd_tr = 0; +//tmp gia ta loops & check gia to last state +var tmp_dragStart_td; +var tmp_dragStart_tr; +var tmp_dragEnd_td; +var tmp_dragEnd_tr; +var isDragging = false; +var ctrlPressed = false; +// try stop +var continueExecuting = false; +var isExecuting = false; + + + +function rangeMouseDown(e) { + if (Debug) console.time("mouse:rangeMouseDown"); + if (isRightClick(e)) { + return false; + } else { + dragStart_tr = $(this).parent().index(); + dragStart_td = $(this).index(); + dragEnd_tr = dragStart_tr; + dragEnd_td = dragStart_td; + //alert(dragStart_tr); + //var allCells = $("#tblReservation td"); + //dragStart = allCells.index($(this)); + + if ( $(this).hasClass("free")) + $(this).addClass("selected_tmp"); + + isDragging = true; + //selectRange(); + + if (typeof e.preventDefault != 'undefined') { e.preventDefault(); } + document.documentElement.onselectstart = function () { return false; }; + } + if (Debug) console.timeEnd("mouse:rangeMouseDown"); +} + +function rangeMouseUp(e) { + if (Debug) console.time("mouse:rangeMouseUp"); + if (isRightClick(e)) { + return false; + } else { + //var allCells = $("#tblReservation td"); + //dragEnd = allCells.index($(this)); + + dragEnd_tr = $(this).parent().index(); + dragEnd_td = $(this).index(); + + isDragging = false; + selectRange(false); + + document.documentElement.onselectstart = function () { return true; }; + } + if (Debug) console.timeEnd("mouse:rangeMouseUp"); +} + +function rangeMouseMove(e) { + //if (Debug) console.time("mouse:rangeMouseMove"); + if (isDragging) { + dragEnd_tr = $(this).parent().attr('data-trindex'); + dragEnd_td = $(this).attr('data-tdindex'); + + //if (Debug) this.debug('foo'); + + if ((dragEnd_tr != tmp_dragEnd_tr) || (dragEnd_td != tmp_dragEnd_td)) { + //console.log(dragEnd_tr + " - " + tmp_dragEnd_tr); + //console.log(dragEnd_td + " - " + tmp_dragEnd_td); + //selectRange(true); + } + } + //if (Debug) console.timeEnd("mouse:rangeMouseMove"); +} + +function selectRange(IsTemp) { + if (Debug) console.time("mouse:---selectRange"); + + if (!ctrlPressed) + $("#" + rsvrTblNm + " td:not([class='info'],[class='closed'])").removeClass('selected selected_tmp').addClass('free'); + + tmp_dragStart_td = dragStart_td; + tmp_dragStart_tr = dragStart_tr; + tmp_dragEnd_td = dragEnd_td; + tmp_dragEnd_tr = dragEnd_tr; + + if (tmp_dragStart_td > tmp_dragEnd_td) { + var tmp = tmp_dragStart_td; + tmp_dragStart_td = tmp_dragEnd_td; + tmp_dragEnd_td = tmp; + } + + if (tmp_dragStart_tr > tmp_dragEnd_tr) { + var tmp = tmp_dragStart_tr; + tmp_dragStart_tr = tmp_dragEnd_tr; + tmp_dragEnd_tr = tmp; + } + + //alert("tmp_dragStart_td:" + tmp_dragStart_td + "\n tmp_dragStart_tr:" + tmp_dragStart_tr + "\n tmp_dragEnd_td:" + tmp_dragEnd_td + "\n tmp_dragEnd_tr:" + tmp_dragEnd_tr); + + + for (i = tmp_dragStart_tr; i <= tmp_dragEnd_tr; i++) { + for (j = tmp_dragStart_td; j <= tmp_dragEnd_td; j++) { + //alert("i:" + i + "j:" + j); + var cell = $('#' + rsvrTblNm + ' tbody tr:eq(' + i + ') td:eq(' + j + ')'); + //$(cell) + curClass = $(cell).attr("class"); + //alert(curClass); + switch (curClass) { + case "free_tmp": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("free_tmp"); + else + $(cell).addClass("free"); + break; + case "free": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("selected_tmp"); + else + $(cell).addClass("selected"); + break; + case "selected_tmp": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("selected_tmp"); + else + $(cell).addClass("selected"); + break; + case "selected": + $(cell).removeClass(); + if (IsTemp) + $(cell).addClass("free_tmp"); + else + $(cell).addClass("free"); + break; + case "closed": + //do nothing + //alert("not allowed!"); + break; + } + } + } + + + /*if (dragEnd + 1 < dragStart) { // reverse select + //alert(1); + $("#tblReservation td:not([class='info'])").slice(dragEnd, dragStart + 1).addClass('selected'); + } else { + alert(dragStart + "-" + dragEnd); + $("#tblReservation td:not([class='info'])").slice(dragStart, dragEnd).addClass('selected'); + }*/ + + + if (Debug) console.timeEnd("mouse:---selectRange"); +} + +function ClearTableSelection(){ + $('#' + rsvrTblNm + ' .selected').addClass("free").removeClass("selected"); +} + + diff --git a/plugins/scheduler2/templates/scheduler.html b/plugins/scheduler2/templates/scheduler.html new file mode 100755 index 00000000..e4605f03 --- /dev/null +++ b/plugins/scheduler2/templates/scheduler.html @@ -0,0 +1,102 @@ +
+
+
+ +
+
+ + +
+
+ + + +
+
+
+
+ +
+
+
+
+
+ +
+
+ +
+
+ + + {% comment %} + {% for itms in nodes %} + + + + {% for n in itms.1 %} + {% if not forloop.first %} + + {% endif %} + + + {% endfor %} + {% endfor %} + {% endcomment %} + +
{{ itms.0 }}
{{ n }}
+
+
+ + + + {% for ts in time_slots %} + + {% endfor %} + + + + {% comment %} + {% for itms in nodes %} + {% for n in itms.1 %} + + {% for ts in time_slots %} + {% if n == 'node020' %} + + {% elif n == 'node023' or n == 'node030' %} + + {% else %} + + {% endif %} + {% endfor %} + + {% endfor %} + {% endfor %} + {% endcomment %} + +
{{ ts|safe }}
+
+ +
+
    +
  1. free
  2. +
  3. selected
  4. +
  5. reserved
  6. +
  7. maintenance
  8. +
+
+
+ +
\ No newline at end of file diff --git a/portal/sliceview.py b/portal/sliceview.py old mode 100644 new mode 100755 index eaec3faa..e28ef018 --- a/portal/sliceview.py +++ b/portal/sliceview.py @@ -18,7 +18,8 @@ from plugins.querygrid import QueryGrid from plugins.queryupdater import QueryUpdater from plugins.googlemap import GoogleMap from plugins.senslabmap import SensLabMap -from plugins.scheduler import Scheduler +#from plugins.scheduler import Scheduler +from plugins.scheduler2 import Scheduler2 from plugins.querycode import QueryCode # Thierry # stay away from query editor for now as it seems to make things go very slow @@ -244,15 +245,29 @@ class SliceView (LoginRequiredAutoLogoutView): checkboxes = True, ) - if do_query_leases: - resources_as_scheduler = Scheduler( - page = page, - title = 'Scheduler', - domid = 'scheduler', - query = sq_resource, - query_all_resources = query_resource_all, - query_lease = sq_lease, - ) + + + #if do_query_leases: + # resources_as_scheduler = Scheduler( + + # page = page, + # title = 'Scheduler', + # domid = 'scheduler', + # query = sq_resource, + # query_all_resources = query_resource_all, + # query_lease = sq_lease, + + # ) + + resources_as_scheduler2 = Scheduler2( + page = page, + domid = 'scheduler', + title = 'Scheduler', + # this is the query at the core of the slice list + query = sq_resource, + query_all_resources = query_resource_all, + query_lease = sq_lease, + ) # with the new 'Filter' stuff on top, no need for anything but the querytable resources_as_list_area = resources_as_list @@ -260,12 +275,13 @@ class SliceView (LoginRequiredAutoLogoutView): resources_sons = [ resources_as_gmap, resources_as_3dmap, - resources_as_scheduler, + resources_as_scheduler2, resources_as_list_area, ] if do_query_leases else [ resources_as_gmap, resources_as_3dmap, resources_as_list_area, + resources_as_scheduler2, ] if insert_grid: resources_sons.append(resources_as_grid) @@ -276,7 +292,8 @@ class SliceView (LoginRequiredAutoLogoutView): title="Resources", outline_complete=True, sons= resources_sons, - active_domid = 'resources-map', + + active_domid = 'scheduler', persistent_active=True, ) main_stack.insert (resources_area) -- 2.45.2