From 02b0b203436c98627ca503648ae15e82ceec7149 Mon Sep 17 00:00:00 2001 From: Tom French Date: Thu, 12 Jun 2014 13:10:42 +0100 Subject: [PATCH] Zoom overlay and background images --- dist/fabric.js | 4 ++-- dist/fabric.min.js | 2 +- dist/fabric.min.js.gz | Bin 79867 -> 79868 bytes dist/fabric.require.js | 4 ++-- src/static_canvas.class.js | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dist/fabric.js b/dist/fabric.js index 9fd9c6d7..2aead10f 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -9670,7 +9670,7 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ this.height); } if (this.backgroundImage) { - this.backgroundImage.render(ctx); + this._draw(ctx, this.backgroundImage); } }, @@ -9691,7 +9691,7 @@ fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ this.height); } if (this.overlayImage) { - this.overlayImage.render(ctx); + this._draw(ctx, this.overlayImage); } }, diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 4dd89d34..3f694a1d 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -2,7 +2,7 @@ var fabric=fabric||{version:"1.4.6"};if(typeof exports!=="undefined"){exports.fa var id=getID(target)+"."+getID(listener)+"."+(useCapture?1:0);if(root.Gesture&&root.Gesture._gestureHandlers[type]){id=type+id;if(trigger==="remove"){if(!wrappers[id])return;wrappers[id].remove();delete wrappers[id]}else if(trigger==="add"){if(wrappers[id]){wrappers[id].add();return wrappers[id]}if(configure.useCall&&!root.modifyEventListener){var tmp=listener;listener=function(event,self){for(var key in self)event[key]=self[key];return tmp.call(target,event)}}configure.gesture=type;configure.target=target;configure.listener=listener;configure.fromOverwrite=fromOverwrite;wrappers[id]=root.proxy[type](configure)}return wrappers[id]}else{var eventList=getEventList(type);for(var n=0,eventId;n=conf.maxFingers){var ids=[];for(var sid in conf.tracker)ids.push(sid);self.identifier=ids.join(",");return isTouchStart}var fingers=0;for(var rid in track){if(track[rid].up){delete track[rid];addTouchStart(touch,sid);conf.cancel=true;break}fingers++}if(track[sid])continue;addTouchStart(touch,sid)}else{track=conf.tracker={};self.bbox=conf.bbox=root.getBoundingBox(conf.target);conf.fingers=0;conf.cancel=false;addTouchStart(touch,sid)}}var ids=[];for(var sid in conf.tracker)ids.push(sid);self.identifier=ids.join(",");return isTouchStart};root.pointerEnd=function(event,self,conf,onPointerUp){var touches=event.touches||[];var length=touches.length;var exists={};for(var i=0;i1)return;var pointers=EVENT.changedTouches||root.getCoords(EVENT);var pointer=pointers[0];var bbox=conf.bbox;var newbbox=root.getBoundingBox(conf.target);if(conf.position==="relative"){var ax=pointer.pageX+bbox.scrollLeft-bbox.x1;var ay=pointer.pageY+bbox.scrollTop-bbox.y1}else{var ax=pointer.pageX-bbox.x1;var ay=pointer.pageY-bbox.y1}if(ax>0&&ax0&&ay0&&ax0&&ay1)){self.state=conf.gesture;for(var key in conf.tracker)break;var point=conf.tracker[key];self.x=point.start.x;self.y=point.start.y;conf.listener(event,self)}clearTimeout(timeout);time0=time1=0}};var self=root.pointerSetup(conf);self.state="dblclick";Event.add(conf.target,"mousedown",conf.onPointerDown);return self};Event.Gesture=Event.Gesture||{};Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{};Event.Gesture._gestureHandlers.dbltap=root.dbltap;Event.Gesture._gestureHandlers.dblclick=root.dblclick;return root}(Event.proxy);if(typeof Event==="undefined")var Event={};if(typeof Event.proxy==="undefined")Event.proxy={};Event.proxy=function(root){"use strict";root.dragElement=function(that,event){root.drag({event:event,target:that,position:"move",listener:function(event,self){that.style.left=self.x+"px";that.style.top=self.y+"px";Event.prevent(event)}})};root.drag=function(conf){conf.gesture="drag";conf.onPointerDown=function(event){if(root.pointerStart(event,self,conf)){if(!conf.monitor){Event.add(conf.doc,"mousemove",conf.onPointerMove);Event.add(conf.doc,"mouseup",conf.onPointerUp)}}conf.onPointerMove(event,"down")};conf.onPointerMove=function(event,state){if(!conf.tracker)return conf.onPointerDown(event);var bbox=conf.bbox;var touches=event.changedTouches||root.getCoords(event);var length=touches.length;for(var i=0;i0?rotate:-rotate;if(typeof touch.DEG2!=="undefined"){if(rotate>0){touch.rotation+=touch.DEG1-touch.DEG2}else{touch.rotation-=touch.DEG1-touch.DEG2}rotation+=touch.rotation}touches.push(touch.move)}self.touches=touches;self.fingers=conf.fingers;self.scale=scale/conf.fingers;self.rotation=rotation/conf.fingers;self.state="change";conf.listener(event,self)};conf.onPointerUp=function(event){var fingers=conf.fingers;if(root.pointerEnd(event,self,conf)){Event.remove(conf.doc,"mousemove",conf.onPointerMove);Event.remove(conf.doc,"mouseup",conf.onPointerUp)}if(fingers===conf.minFingers&&conf.fingersthreshold){var idx=now*ACCELERATION/abs;var span=Math.abs(idx+DELTA.value);if(DELTA.value&&span=fingers){if(velocity1>conf.threshold){start.x/=length;start.y/=length;self.start=start;self.x=endx/length;self.y=endy/length;self.angle=-(((degree1/conf.snap+.5>>0)*conf.snap||360)-360);self.velocity=velocity1;self.fingers=fingers;self.state="swipe";conf.listener(event,self)}}}};var self=root.pointerSetup(conf);Event.add(conf.target,"mousedown",conf.onPointerDown);return self};Event.Gesture=Event.Gesture||{};Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{};Event.Gesture._gestureHandlers.swipe=root.swipe;return root}(Event.proxy);if(typeof Event==="undefined")var Event={};if(typeof Event.proxy==="undefined")Event.proxy={};Event.proxy=function(root){"use strict";root.longpress=function(conf){conf.gesture="longpress";return root.tap(conf)};root.tap=function(conf){conf.delay=conf.delay||500;conf.timeout=conf.timeout||250;conf.driftDeviance=conf.driftDeviance||10;conf.gesture=conf.gesture||"tap";var timestamp,timeout;conf.onPointerDown=function(event){if(root.pointerStart(event,self,conf)){timestamp=(new Date).getTime();Event.add(conf.doc,"mousemove",conf.onPointerMove).listener(event);Event.add(conf.doc,"mouseup",conf.onPointerUp);if(conf.gesture!=="longpress")return;timeout=setTimeout(function(){if(event.cancelBubble&&++event.bubble>1)return;var fingers=0;for(var key in conf.tracker){var point=conf.tracker[key];if(point.end===true)return;if(conf.cancel)return;fingers++}if(conf.minFingers<=fingers&&conf.maxFingers>=fingers){self.state="start";self.fingers=fingers;self.x=point.start.x;self.y=point.start.y;conf.listener(event,self)}},conf.delay)}};conf.onPointerMove=function(event){var bbox=conf.bbox;var touches=event.changedTouches||root.getCoords(event);var length=touches.length;for(var i=0;i0&&x0&&y1)return;if(conf.gesture==="longpress"){if(self.state==="start"){self.state="end";conf.listener(event,self)}return}if(conf.cancel)return;if((new Date).getTime()-timestamp>conf.timeout)return;var fingers=conf.gestureFingers;if(conf.minFingers<=fingers&&conf.maxFingers>=fingers){self.state="tap";self.fingers=conf.gestureFingers;conf.listener(event,self)}}};var self=root.pointerSetup(conf);Event.add(conf.target,"mousedown",conf.onPointerDown);return self};Event.Gesture=Event.Gesture||{};Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{};Event.Gesture._gestureHandlers.tap=root.tap;Event.Gesture._gestureHandlers.longpress=root.longpress;return root}(Event.proxy);if(typeof Event==="undefined")var Event={};if(typeof Event.proxy==="undefined")Event.proxy={};Event.proxy=function(root){"use strict";root.wheel=function(conf){var interval;var timeout=conf.timeout||150;var count=0;var self={gesture:"wheel",state:"start",wheelDelta:0,target:conf.target,listener:conf.listener,preventElasticBounce:function(){var target=this.target;var scrollTop=target.scrollTop;var top=scrollTop+target.offsetHeight;var height=target.scrollHeight;if(top===height&&this.wheelDelta<=0)Event.cancel(event);else if(scrollTop===0&&this.wheelDelta>=0)Event.cancel(event);Event.stop(event)},add:function(){conf.target[add](type,onMouseWheel,false)},remove:function(){conf.target[remove](type,onMouseWheel,false)}};var onMouseWheel=function(event){event=event||window.event;self.state=count++?"change":"start";self.wheelDelta=event.detail?event.detail*-20:event.wheelDelta;conf.listener(event,self);clearTimeout(interval);interval=setTimeout(function(){count=0;self.state="end";self.wheelDelta=0;conf.listener(event,self)},timeout)};var add=document.addEventListener?"addEventListener":"attachEvent";var remove=document.removeEventListener?"removeEventListener":"detachEvent";var type=Event.getEventSupport("mousewheel")?"mousewheel":"DOMMouseScroll";conf.target[add](type,onMouseWheel,false);return self};Event.Gesture=Event.Gesture||{};Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{};Event.Gesture._gestureHandlers.wheel=root.wheel;return root}(Event.proxy);if(typeof Event==="undefined")var Event={};if(typeof Event.proxy==="undefined")Event.proxy={};Event.proxy=function(root){"use strict";root.orientation=function(conf){var self={gesture:"orientationchange",previous:null,current:window.orientation,target:conf.target,listener:conf.listener,remove:function(){window.removeEventListener("orientationchange",onOrientationChange,false)}};var onOrientationChange=function(e){self.previous=self.current;self.current=window.orientation;if(self.previous!==null&&self.previous!=self.current){conf.listener(e,self);return}};if(window.DeviceOrientationEvent){window.addEventListener("orientationchange",onOrientationChange,false)}return self};Event.Gesture=Event.Gesture||{};Event.Gesture._gestureHandlers=Event.Gesture._gestureHandlers||{};Event.Gesture._gestureHandlers.orientation=root.orientation;return root}(Event.proxy);(function(){function _removeEventListener(eventName,handler){if(!this.__eventListeners[eventName])return;if(handler){fabric.util.removeFromArray(this.__eventListeners[eventName],handler)}else{this.__eventListeners[eventName].length=0}}function observe(eventName,handler){if(!this.__eventListeners){this.__eventListeners={}}if(arguments.length===1){for(var prop in eventName){this.on(prop,eventName[prop]) }}else{if(!this.__eventListeners[eventName]){this.__eventListeners[eventName]=[]}this.__eventListeners[eventName].push(handler)}return this}function stopObserving(eventName,handler){if(!this.__eventListeners)return;if(arguments.length===0){this.__eventListeners={}}else if(arguments.length===1&&typeof arguments[0]==="object"){for(var prop in eventName){_removeEventListener.call(this,prop,eventName[prop])}}else{_removeEventListener.call(this,eventName,handler)}return this}function fire(eventName,options){if(!this.__eventListeners)return;var listenersForEvent=this.__eventListeners[eventName];if(!listenersForEvent)return;for(var i=0,len=listenersForEvent.length;i-1},complexity:function(){return this.getObjects().reduce(function(memo,current){memo+=current.complexity?current.complexity():0;return memo},0)}};(function(global){var sqrt=Math.sqrt,atan2=Math.atan2,PiBy180=Math.PI/180;fabric.util={removeFromArray:function(array,value){var idx=array.indexOf(value);if(idx!==-1){array.splice(idx,1)}return array},getRandomInt:function(min,max){return Math.floor(Math.random()*(max-min+1))+min},degreesToRadians:function(degrees){return degrees*PiBy180},radiansToDegrees:function(radians){return radians/PiBy180},rotatePoint:function(point,origin,radians){var sin=Math.sin(radians),cos=Math.cos(radians);point.subtractEquals(origin);var rx=point.x*cos-point.y*sin,ry=point.x*sin+point.y*cos;return new fabric.Point(rx,ry).addEquals(origin)},transformPoint:function(p,t,ignoreOffset){if(ignoreOffset){return new fabric.Point(t[0]*p.x+t[1]*p.y,t[2]*p.x+t[3]*p.y)}return new fabric.Point(t[0]*p.x+t[1]*p.y+t[4],t[2]*p.x+t[3]*p.y+t[5])},invertTransform:function(t){var r=t.slice(),a=1/(t[0]*t[3]-t[1]*t[2]);r=[a*t[3],-a*t[1],-a*t[2],a*t[0],0,0];var o=fabric.util.transformPoint({x:t[4],y:t[5]},r);r[4]=-o.x;r[5]=-o.y;return r},toFixed:function(number,fractionDigits){return parseFloat(Number(number).toFixed(fractionDigits))},falseFunction:function(){return false},getKlass:function(type,namespace){type=fabric.util.string.camelize(type.charAt(0).toUpperCase()+type.slice(1));return fabric.util.resolveNamespace(namespace)[type]},resolveNamespace:function(namespace){if(!namespace){return fabric}var parts=namespace.split("."),len=parts.length,obj=global||fabric.window;for(var i=0;i1){object=new fabric.PathGroup(elements,options)}else{object=elements[0]}if(typeof path!=="undefined"){object.setSourcePath(path)}return object},populateWithProperties:function(source,destination,properties){if(properties&&Object.prototype.toString.call(properties)==="[object Array]"){for(var i=0,len=properties.length;ix){x+=da[di++%dc];if(x>len){x=len}ctx[draw?"lineTo":"moveTo"](x,0);draw=!draw}ctx.restore()},createCanvasElement:function(canvasEl){canvasEl||(canvasEl=fabric.document.createElement("canvas"));if(!canvasEl.getContext&&typeof G_vmlCanvasManager!=="undefined"){G_vmlCanvasManager.initElement(canvasEl)}return canvasEl},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(klass){var proto=klass.prototype;for(var i=proto.stateProperties.length;i--;){var propName=proto.stateProperties[i],capitalizedPropName=propName.charAt(0).toUpperCase()+propName.slice(1),setterName="set"+capitalizedPropName,getterName="get"+capitalizedPropName;if(!proto[getterName]){proto[getterName]=function(property){return new Function('return this.get("'+property+'")')}(propName)}if(!proto[setterName]){proto[setterName]=function(property){return new Function("value",'return this.set("'+property+'", value)')}(propName)}}},clipContext:function(receiver,ctx){ctx.save();ctx.beginPath();receiver.clipTo(ctx);ctx.clip()},multiplyTransformMatrices:function(matrixA,matrixB){var a=[[matrixA[0],matrixA[2],matrixA[4]],[matrixA[1],matrixA[3],matrixA[5]],[0,0,1]],b=[[matrixB[0],matrixB[2],matrixB[4]],[matrixB[1],matrixB[3],matrixB[5]],[0,0,1]],result=[];for(var r=0;r<3;r++){result[r]=[];for(var c=0;c<3;c++){var sum=0;for(var k=0;k<3;k++){sum+=a[r][k]*b[k][c]}result[r][c]=sum}}return[result[0][0],result[1][0],result[0][1],result[1][1],result[0][2],result[1][2]]},getFunctionBody:function(fn){return(String(fn).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(points,options){var minX=fabric.util.array.min(points,"x"),minY=fabric.util.array.min(points,"y");minX=minX<0?minX:0;minY=minX<0?minY:0;for(var i=0,len=points.length;i0){if(x>tolerance){x-=tolerance}else{x=0}if(y>tolerance){y-=tolerance}else{y=0}}var _isTransparent=true,imageData=ctx.getImageData(x,y,tolerance*2||1,tolerance*2||1);for(var i=3,l=imageData.data.length;i0&&sweep===0){thArc-=2*Math.PI}var segments=Math.ceil(Math.abs(thArc/(Math.PI*.5+.001))),result=[];for(var i=0;i1){pl=Math.sqrt(pl);rx*=pl;ry*=pl}var a00=cosTh/rx,a01=sinTh/rx,a10=-sinTh/ry,a11=cosTh/ry;return{x0:a00*ox+a01*oy,y0:a10*ox+a11*oy,x1:a00*x+a01*y,y1:a10*x+a11*y,sinTh:sinTh,cosTh:cosTh}}function segmentToBezier(cx,cy,th0,th1,rx,ry,sinTh,cosTh){argsString=_join.call(arguments);if(segmentToBezierCache[argsString]){return segmentToBezierCache[argsString]}var a00=cosTh*rx,a01=-sinTh*ry,a10=sinTh*rx,a11=cosTh*ry,thHalf=.5*(th1-th0),t=8/3*Math.sin(thHalf*.5)*Math.sin(thHalf*.5)/Math.sin(thHalf),x1=cx+Math.cos(th0)-t*Math.sin(th0),y1=cy+Math.sin(th0)+t*Math.cos(th0),x3=cx+Math.cos(th1),y3=cy+Math.sin(th1),x2=x3+t*Math.sin(th1),y2=y3-t*Math.cos(th1);segmentToBezierCache[argsString]=[a00*x1+a01*y1,a10*x1+a11*y1,a00*x2+a01*y2,a10*x2+a11*y2,a00*x3+a01*y3,a10*x3+a11*y3];return segmentToBezierCache[argsString]}fabric.util.drawArc=function(ctx,x,y,coords){var rx=coords[0],ry=coords[1],rot=coords[2],large=coords[3],sweep=coords[4],ex=coords[5],ey=coords[6],segs=arcToSegments(ex,ey,rx,ry,large,sweep,rot,x,y);for(var i=0;i>>0;if(len===0){return-1}var n=0;if(arguments.length>0){n=Number(arguments[1]);if(n!==n){n=0}else if(n!==0&&n!==Number.POSITIVE_INFINITY&&n!==Number.NEGATIVE_INFINITY){n=(n>0||-1)*Math.floor(Math.abs(n))}}if(n>=len){return-1}var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k>>0;i>>0;i>>0;i>>0;i>>0;i>>0,i=0,rv;if(arguments.length>1){rv=arguments[1]}else{do{if(i in this){rv=this[i++];break}if(++i>=len){throw new TypeError}}while(true)}for(;i=value2})}function min(array,byProperty){return find(array,byProperty,function(value1,value2){return value1/g,">")}fabric.util.string={camelize:camelize,capitalize:capitalize,escapeXml:escapeXml}})();(function(){var slice=Array.prototype.slice,apply=Function.prototype.apply,Dummy=function(){};if(!Function.prototype.bind){Function.prototype.bind=function(thisArg){var _this=this,args=slice.call(arguments,1),bound;if(args.length){bound=function(){return apply.call(_this,this instanceof Dummy?this:thisArg,args.concat(slice.call(arguments)))}}else{bound=function(){return apply.call(_this,this instanceof Dummy?this:thisArg,arguments)}}Dummy.prototype=this.prototype;bound.prototype=new Dummy;return bound}}})();(function(){var slice=Array.prototype.slice,emptyFunction=function(){},IS_DONTENUM_BUGGY=function(){for(var p in{toString:1}){if(p==="toString")return false}return true}(),addMethods=function(klass,source,parent){for(var property in source){if(property in klass.prototype&&typeof klass.prototype[property]==="function"&&(source[property]+"").indexOf("callSuper")>-1){klass.prototype[property]=function(property){return function(){var superclass=this.constructor.superclass;this.constructor.superclass=parent;var returnValue=source[property].apply(this,arguments);this.constructor.superclass=superclass;if(property!=="initialize"){return returnValue}}}(property)}else{klass.prototype[property]=source[property]}if(IS_DONTENUM_BUGGY){if(source.toString!==Object.prototype.toString){klass.prototype.toString=source.toString}if(source.valueOf!==Object.prototype.valueOf){klass.prototype.valueOf=source.valueOf}}}};function Subclass(){}function callSuper(methodName){var fn=this.constructor.superclass.prototype[methodName];return arguments.length>1?fn.apply(this,slice.call(arguments,1)):fn.call(this)}function createClass(){var parent=null,properties=slice.call(arguments,0);if(typeof properties[0]==="function"){parent=properties.shift()}function klass(){this.initialize.apply(this,arguments)}klass.superclass=parent;klass.subclasses=[];if(parent){Subclass.prototype=parent.prototype;klass.prototype=new Subclass;parent.subclasses.push(klass)}for(var i=0,length=properties.length;i-1?setOpacity(element,styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element}for(var property in styles){if(property==="opacity"){setOpacity(element,styles[property])}else{var normalizedProperty=property==="float"||property==="cssFloat"?typeof elementStyle.styleFloat==="undefined"?"cssFloat":"styleFloat":property;elementStyle[normalizedProperty]=styles[property]}}return element}var parseEl=fabric.document.createElement("div"),supportsOpacity=typeof parseEl.style.opacity==="string",supportsFilters=typeof parseEl.style.filter==="string",reOpacity=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,setOpacity=function(element){return element};if(supportsOpacity){setOpacity=function(element,value){element.style.opacity=value;return element}}else if(supportsFilters){setOpacity=function(element,value){var es=element.style;if(element.currentStyle&&!element.currentStyle.hasLayout){es.zoom=1}if(reOpacity.test(es.filter)){value=value>=.9999?"":"alpha(opacity="+value*100+")";es.filter=es.filter.replace(reOpacity,value)}else{es.filter+=" alpha(opacity="+value*100+")"}return element}}fabric.util.setStyle=setStyle})();(function(){var _slice=Array.prototype.slice;function getById(id){return typeof id==="string"?fabric.document.getElementById(id):id}var sliceCanConvertNodelists,toArray=function(arrayLike){return _slice.call(arrayLike,0)};try{sliceCanConvertNodelists=toArray(fabric.document.childNodes)instanceof Array}catch(err){}if(!sliceCanConvertNodelists){toArray=function(arrayLike){var arr=new Array(arrayLike.length),i=arrayLike.length;while(i--){arr[i]=arrayLike[i]}return arr}}function makeElement(tagName,attributes){var el=fabric.document.createElement(tagName);for(var prop in attributes){if(prop==="class"){el.className=attributes[prop]}else if(prop==="for"){el.htmlFor=attributes[prop]}else{el.setAttribute(prop,attributes[prop])}}return el}function addClass(element,className){if(element&&(" "+element.className+" ").indexOf(" "+className+" ")===-1){element.className+=(element.className?" ":"")+className}}function wrapElement(element,wrapper,attributes){if(typeof wrapper==="string"){wrapper=makeElement(wrapper,attributes)}if(element.parentNode){element.parentNode.replaceChild(wrapper,element)}wrapper.appendChild(element);return wrapper}function getScrollLeftTop(element,upperCanvasEl){var firstFixedAncestor,origElement,left=0,top=0,docElement=fabric.document.documentElement,body=fabric.document.body||{scrollLeft:0,scrollTop:0};origElement=element;while(element&&element.parentNode&&!firstFixedAncestor){element=element.parentNode;if(element!==fabric.document&&fabric.util.getElementStyle(element,"position")==="fixed"){firstFixedAncestor=element}if(element!==fabric.document&&origElement!==upperCanvasEl&&fabric.util.getElementStyle(element,"position")==="absolute"){left=0;top=0}else if(element===fabric.document){left=body.scrollLeft||docElement.scrollLeft||0;top=body.scrollTop||docElement.scrollTop||0}else{left+=element.scrollLeft||0;top+=element.scrollTop||0}}return{left:left,top:top}}function getElementOffset(element){var docElem,doc=element&&element.ownerDocument,box={left:0,top:0},offset={left:0,top:0},scrollLeftTop,offsetAttributes={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!doc){return{left:0,top:0}}for(var attr in offsetAttributes){offset[offsetAttributes[attr]]+=parseInt(getElementStyle(element,attr),10)||0}docElem=doc.documentElement;if(typeof element.getBoundingClientRect!=="undefined"){box=element.getBoundingClientRect()}scrollLeftTop=fabric.util.getScrollLeftTop(element,null);return{left:box.left+scrollLeftTop.left-(docElem.clientLeft||0)+offset.left,top:box.top+scrollLeftTop.top-(docElem.clientTop||0)+offset.top}}var getElementStyle;if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle){getElementStyle=function(element,attr){return fabric.document.defaultView.getComputedStyle(element,null)[attr]}}else{getElementStyle=function(element,attr){var value=element.style[attr];if(!value&&element.currentStyle){value=element.currentStyle[attr]}return value}}(function(){var style=fabric.document.documentElement.style,selectProp="userSelect"in style?"userSelect":"MozUserSelect"in style?"MozUserSelect":"WebkitUserSelect"in style?"WebkitUserSelect":"KhtmlUserSelect"in style?"KhtmlUserSelect":"";function makeElementUnselectable(element){if(typeof element.onselectstart!=="undefined"){element.onselectstart=fabric.util.falseFunction}if(selectProp){element.style[selectProp]="none"}else if(typeof element.unselectable==="string"){element.unselectable="on"}return element}function makeElementSelectable(element){if(typeof element.onselectstart!=="undefined"){element.onselectstart=null}if(selectProp){element.style[selectProp]=""}else if(typeof element.unselectable==="string"){element.unselectable=""}return element}fabric.util.makeElementUnselectable=makeElementUnselectable;fabric.util.makeElementSelectable=makeElementSelectable})();(function(){function getScript(url,callback){var headEl=fabric.document.getElementsByTagName("head")[0],scriptEl=fabric.document.createElement("script"),loading=true;scriptEl.onload=scriptEl.onreadystatechange=function(e){if(loading){if(typeof this.readyState==="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;loading=false;callback(e||fabric.window.event);scriptEl=scriptEl.onload=scriptEl.onreadystatechange=null}};scriptEl.src=url;headEl.appendChild(scriptEl)}fabric.util.getScript=getScript})();fabric.util.getById=getById;fabric.util.toArray=toArray;fabric.util.makeElement=makeElement;fabric.util.addClass=addClass;fabric.util.wrapElement=wrapElement;fabric.util.getScrollLeftTop=getScrollLeftTop;fabric.util.getElementOffset=getElementOffset;fabric.util.getElementStyle=getElementStyle})();(function(){function addParamToUrl(url,param){return url+(/\?/.test(url)?"&":"?")+param}var makeXHR=function(){var factories=[function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.3.0")},function(){return new XMLHttpRequest}];for(var i=factories.length;i--;){try{var req=factories[i]();if(req){return factories[i]}}catch(err){}}}();function emptyFn(){}function request(url,options){options||(options={});var method=options.method?options.method.toUpperCase():"GET",onComplete=options.onComplete||function(){},xhr=makeXHR(),body;xhr.onreadystatechange=function(){if(xhr.readyState===4){onComplete(xhr);xhr.onreadystatechange=emptyFn}};if(method==="GET"){body=null;if(typeof options.parameters==="string"){url=addParamToUrl(url,options.parameters)}}xhr.open(method,url,true);if(method==="POST"||method==="PUT"){xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}xhr.send(body);return xhr}fabric.util.request=request})();fabric.log=function(){};fabric.warn=function(){};if(typeof console!=="undefined"){["log","warn"].forEach(function(methodName){if(typeof console[methodName]!=="undefined"&&console[methodName].apply){fabric[methodName]=function(){return console[methodName].apply(console,arguments)}}})}(function(){function animate(options){requestAnimFrame(function(timestamp){options||(options={});var start=timestamp||+new Date,duration=options.duration||500,finish=start+duration,time,onChange=options.onChange||function(){},abort=options.abort||function(){return false},easing=options.easing||function(t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b},startValue="startValue"in options?options.startValue:0,endValue="endValue"in options?options.endValue:100,byValue=options.byValue||endValue-startValue;options.onStart&&options.onStart();(function tick(ticktime){time=ticktime||+new Date;var currentTime=time>finish?duration:time-start;if(abort()){options.onComplete&&options.onComplete();return}onChange(easing(currentTime,startValue,byValue,duration));if(time>finish){options.onComplete&&options.onComplete();return}requestAnimFrame(tick)})(start)})}var _requestAnimFrame=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(callback){fabric.window.setTimeout(callback,1e3/60)};function requestAnimFrame(){return _requestAnimFrame.apply(fabric.window,arguments)}fabric.util.animate=animate;fabric.util.requestAnimFrame=requestAnimFrame})();(function(){function normalize(a,c,p,s){if(a1){matrices.shift();combinedMatrix=fabric.util.multiplyTransformMatrices(combinedMatrix,matrices[0])}return combinedMatrix}}();function parseFontDeclaration(value,oStyle){var match=value.match(/(normal|italic)?\s*(normal|small-caps)?\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\s*(\d+)px(?:\/(normal|[\d\.]+))?\s+(.*)/);if(!match)return;var fontStyle=match[1],fontWeight=match[3],fontSize=match[4],lineHeight=match[5],fontFamily=match[6];if(fontStyle){oStyle.fontStyle=fontStyle}if(fontWeight){oStyle.fontWeight=isNaN(parseFloat(fontWeight))?fontWeight:parseFloat(fontWeight)}if(fontSize){oStyle.fontSize=parseFloat(fontSize)}if(fontFamily){oStyle.fontFamily=fontFamily}if(lineHeight){oStyle.lineHeight=lineHeight==="normal"?1:lineHeight}}function parseStyleString(style,oStyle){var attr,value;style.replace(/;$/,"").split(";").forEach(function(chunk){var pair=chunk.split(":");attr=normalizeAttr(pair[0].trim().toLowerCase());value=normalizeValue(attr,pair[1].trim());if(attr==="font"){parseFontDeclaration(value,oStyle)}else{oStyle[attr]=value}})}function parseStyleObject(style,oStyle){var attr,value;for(var prop in style){if(typeof style[prop]==="undefined")continue;attr=normalizeAttr(prop.toLowerCase());value=normalizeValue(attr,style[prop]);if(attr==="font"){parseFontDeclaration(value,oStyle)}else{oStyle[attr]=value}}}function getGlobalStylesForElement(element){var nodeName=element.nodeName,className=element.getAttribute("class"),id=element.getAttribute("id"),styles={};for(var rule in fabric.cssRules){var ruleMatchesElement=className&&new RegExp("^\\."+className).test(rule)||id&&new RegExp("^#"+id).test(rule)||new RegExp("^"+nodeName).test(rule);if(ruleMatchesElement){for(var property in fabric.cssRules[rule]){styles[property]=fabric.cssRules[rule][property]}}}return styles}fabric.parseSVGDocument=function(){var reAllowedSVGTagNames=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,reNum="(?:[-+]?(?:\\d+|\\d*\\.\\d+)(?:e[-+]?\\d+)?)",reViewBoxAttrValue=new RegExp("^"+"\\s*("+reNum+"+)\\s*,?"+"\\s*("+reNum+"+)\\s*,?"+"\\s*("+reNum+"+)\\s*,?"+"\\s*("+reNum+"+)\\s*"+"$");function hasAncestorWithNodeName(element,nodeName){while(element&&(element=element.parentNode)){if(nodeName.test(element.nodeName)){return true}}return false}return function(doc,callback,reviver){if(!doc)return;var startTime=new Date,descendants=fabric.util.toArray(doc.getElementsByTagName("*"));if(descendants.length===0&&fabric.isLikelyNode){descendants=doc.selectNodes('//*[name(.)!="svg"]');var arr=[];for(var i=0,len=descendants.length;i','')}}extend(fabric,{resolveGradients:function(instances){for(var i=instances.length;i--;){var instanceFillValue=instances[i].get("fill");if(!/^url\(/.test(instanceFillValue))continue;var gradientId=instanceFillValue.slice(5,instanceFillValue.length-1);if(fabric.gradientDefs[gradientId]){instances[i].set("fill",fabric.Gradient.fromElement(fabric.gradientDefs[gradientId],instances[i]))}}},getGradientDefs:function(doc){var linearGradientEls=doc.getElementsByTagName("linearGradient"),radialGradientEls=doc.getElementsByTagName("radialGradient"),el,i,gradientDefs={};i=linearGradientEls.length;for(;i--;){el=linearGradientEls[i];gradientDefs[el.getAttribute("id")]=el}i=radialGradientEls.length;for(;i--;){el=radialGradientEls[i];gradientDefs[el.getAttribute("id")]=el}return gradientDefs},parseAttributes:function(element,attributes){if(!element){return}var value,parentAttributes={};if(element.parentNode&&/^g$/i.test(element.parentNode.nodeName)){parentAttributes=fabric.parseAttributes(element.parentNode,attributes)}var ownAttributes=attributes.reduce(function(memo,attr){value=element.getAttribute(attr);if(value){attr=normalizeAttr(attr);value=normalizeValue(attr,value,parentAttributes);memo[attr]=value}return memo},{});ownAttributes=extend(ownAttributes,extend(getGlobalStylesForElement(element),fabric.parseStyleAttribute(element)));return _setStrokeFillOpacity(extend(parentAttributes,ownAttributes))},parseElements:function(elements,callback,options,reviver){new fabric.ElementsParser(elements,callback,options,reviver).parse()},parseStyleAttribute:function(element){var oStyle={},style=element.getAttribute("style");if(!style){return oStyle}if(typeof style==="string"){parseStyleString(style,oStyle)}else{parseStyleObject(style,oStyle)}return oStyle},parsePointsAttribute:function(points){if(!points)return null;points=points.trim();var asPairs=points.indexOf(",")>-1;points=points.split(/\s+/);var parsedPoints=[],i,len;if(asPairs){i=0;len=points.length;for(;i/i,""))}if(!xml||!xml.documentElement)return;fabric.parseSVGDocument(xml.documentElement,function(results,options){svgCache.set(url,{objects:fabric.util.array.invoke(results,"toObject"),options:options});callback(results,options)},reviver)}},loadSVGFromString:function(string,callback,reviver){string=string.trim();var doc;if(typeof DOMParser!=="undefined"){var parser=new DOMParser;if(parser&&parser.parseFromString){doc=parser.parseFromString(string,"text/xml")}}else if(fabric.window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";doc.loadXML(string.replace(//i,""))}fabric.parseSVGDocument(doc.documentElement,function(results,options){callback(results,options)},reviver)},createSVGFontFacesMarkup:function(objects){var markup="";for(var i=0,len=objects.length;i',"",""].join("")}return markup},createSVGRefElementsMarkup:function(canvas){var markup=[];_createSVGPattern(markup,canvas,"backgroundColor");_createSVGPattern(markup,canvas,"overlayColor");return markup.join("")}})})(typeof exports!=="undefined"?exports:this);fabric.ElementsParser=function(elements,callback,options,reviver){this.elements=elements;this.callback=callback;this.options=options;this.reviver=reviver};fabric.ElementsParser.prototype.parse=function(){this.instances=new Array(this.elements.length);this.numElements=this.elements.length;this.createObjects()};fabric.ElementsParser.prototype.createObjects=function(){for(var i=0,len=this.elements.length;ithat.x&&this.y>that.y},gte:function(that){return this.x>=that.x&&this.y>=that.y},lerp:function(that,t){return new Point(this.x+(that.x-this.x)*t,this.y+(that.y-this.y)*t)},distanceFrom:function(that){var dx=this.x-that.x,dy=this.y-that.y;return Math.sqrt(dx*dx+dy*dy)},midPointFrom:function(that){return new Point(this.x+(that.x-this.x)/2,this.y+(that.y-this.y)/2)},min:function(that){return new Point(Math.min(this.x,that.x),Math.min(this.y,that.y))},max:function(that){return new Point(Math.max(this.x,that.x),Math.max(this.y,that.y))},toString:function(){return this.x+","+this.y},setXY:function(x,y){this.x=x;this.y=y},setFromPoint:function(that){this.x=that.x;this.y=that.y},swap:function(that){var x=this.x,y=this.y;this.x=that.x;this.y=that.y;that.x=x;that.y=y}}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={});if(fabric.Intersection){fabric.warn("fabric.Intersection is already defined");return}function Intersection(status){this.status=status;this.points=[]}fabric.Intersection=Intersection;fabric.Intersection.prototype={appendPoint:function(point){this.points.push(point)},appendPoints:function(points){this.points=this.points.concat(points)}};fabric.Intersection.intersectLineLine=function(a1,a2,b1,b2){var result,uaT=(b2.x-b1.x)*(a1.y-b1.y)-(b2.y-b1.y)*(a1.x-b1.x),ubT=(a2.x-a1.x)*(a1.y-b1.y)-(a2.y-a1.y)*(a1.x-b1.x),uB=(b2.y-b1.y)*(a2.x-a1.x)-(b2.x-b1.x)*(a2.y-a1.y);if(uB!==0){var ua=uaT/uB,ub=ubT/uB;if(0<=ua&&ua<=1&&0<=ub&&ub<=1){result=new Intersection("Intersection");result.points.push(new fabric.Point(a1.x+ua*(a2.x-a1.x),a1.y+ua*(a2.y-a1.y)))}else{result=new Intersection}}else{if(uaT===0||ubT===0){result=new Intersection("Coincident")}else{result=new Intersection("Parallel")}}return result};fabric.Intersection.intersectLinePolygon=function(a1,a2,points){var result=new Intersection,length=points.length;for(var i=0;i0){result.status="Intersection"}return result};fabric.Intersection.intersectPolygonPolygon=function(points1,points2){var result=new Intersection,length=points1.length;for(var i=0;i0){result.status="Intersection"}return result};fabric.Intersection.intersectPolygonRectangle=function(points,r1,r2){var min=r1.min(r2),max=r1.max(r2),topRight=new fabric.Point(max.x,min.y),bottomLeft=new fabric.Point(min.x,max.y),inter1=Intersection.intersectLinePolygon(min,topRight,points),inter2=Intersection.intersectLinePolygon(topRight,max,points),inter3=Intersection.intersectLinePolygon(max,bottomLeft,points),inter4=Intersection.intersectLinePolygon(bottomLeft,min,points),result=new Intersection;result.appendPoints(inter1.points);result.appendPoints(inter2.points);result.appendPoints(inter3.points);result.appendPoints(inter4.points);if(result.points.length>0){result.status="Intersection"}return result}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={});if(fabric.Color){fabric.warn("fabric.Color is already defined.");return}function Color(color){if(!color){this.setSource([0,0,0,1])}else{this._tryParsingColor(color)}}fabric.Color=Color;fabric.Color.prototype={_tryParsingColor:function(color){var source;if(color in Color.colorNameMap){color=Color.colorNameMap[color]}if(color==="transparent"){this.setSource([255,255,255,0]);return}source=Color.sourceFromHex(color);if(!source){source=Color.sourceFromRgb(color)}if(!source){source=Color.sourceFromHsl(color)}if(source){this.setSource(source)}},_rgbToHsl:function(r,g,b){r/=255,g/=255,b/=255;var h,s,l,max=fabric.util.array.max([r,g,b]),min=fabric.util.array.min([r,g,b]);l=(max+min)/2;if(max===min){h=s=0}else{var d=max-min;s=l>.5?d/(2-max-min):d/(max+min);switch(max){case r:h=(g-b)/d+(g1){t-=1}if(t<1/6){return p+(q-p)*6*t}if(t<1/2){return q}if(t<2/3){return p+(q-p)*(2/3-t)*6}return p}fabric.Color.fromRgb=function(color){return Color.fromSource(Color.sourceFromRgb(color))};fabric.Color.sourceFromRgb=function(color){var match=color.match(Color.reRGBa);if(match){var r=parseInt(match[1],10)/(/%$/.test(match[1])?100:1)*(/%$/.test(match[1])?255:1),g=parseInt(match[2],10)/(/%$/.test(match[2])?100:1)*(/%$/.test(match[2])?255:1),b=parseInt(match[3],10)/(/%$/.test(match[3])?100:1)*(/%$/.test(match[3])?255:1);return[parseInt(r,10),parseInt(g,10),parseInt(b,10),match[4]?parseFloat(match[4]):1]}};fabric.Color.fromRgba=Color.fromRgb;fabric.Color.fromHsl=function(color){return Color.fromSource(Color.sourceFromHsl(color))};fabric.Color.sourceFromHsl=function(color){var match=color.match(Color.reHSLa);if(!match)return;var h=(parseFloat(match[1])%360+360)%360/360,s=parseFloat(match[2])/(/%$/.test(match[2])?100:1),l=parseFloat(match[3])/(/%$/.test(match[3])?100:1),r,g,b;if(s===0){r=g=b=l}else{var q=l<=.5?l*(s+1):l+s-l*s,p=l*2-q;r=hue2rgb(p,q,h+1/3);g=hue2rgb(p,q,h);b=hue2rgb(p,q,h-1/3)}return[Math.round(r*255),Math.round(g*255),Math.round(b*255),match[4]?parseFloat(match[4]):1]};fabric.Color.fromHsla=Color.fromHsl;fabric.Color.fromHex=function(color){return Color.fromSource(Color.sourceFromHex(color))};fabric.Color.sourceFromHex=function(color){if(color.match(Color.reHex)){var value=color.slice(color.indexOf("#")+1),isShortNotation=value.length===3,r=isShortNotation?value.charAt(0)+value.charAt(0):value.substring(0,2),g=isShortNotation?value.charAt(1)+value.charAt(1):value.substring(2,4),b=isShortNotation?value.charAt(2)+value.charAt(2):value.substring(4,6);return[parseInt(r,16),parseInt(g,16),parseInt(b,16),1]}};fabric.Color.fromSource=function(source){var oColor=new Color;oColor.setSource(source);return oColor}})(typeof exports!=="undefined"?exports:this);(function(){function getColorStop(el){var style=el.getAttribute("style"),offset=el.getAttribute("offset"),color,opacity;offset=parseFloat(offset)/(/%$/.test(offset)?100:1);if(style){var keyValuePairs=style.split(/\s*;\s*/);if(keyValuePairs[keyValuePairs.length-1]===""){keyValuePairs.pop()}for(var i=keyValuePairs.length;i--;){var split=keyValuePairs[i].split(/\s*:\s*/),key=split[0].trim(),value=split[1].trim();if(key==="stop-color"){color=value}else if(key==="stop-opacity"){opacity=value}}}if(!color){color=el.getAttribute("stop-color")||"rgb(0,0,0)"}if(!opacity){opacity=el.getAttribute("stop-opacity")}color=new fabric.Color(color).toRgb();return{offset:offset,color:color,opacity:isNaN(parseFloat(opacity))?1:parseFloat(opacity)}}function getLinearCoords(el){return{x1:el.getAttribute("x1")||0,y1:el.getAttribute("y1")||0,x2:el.getAttribute("x2")||"100%",y2:el.getAttribute("y2")||0}}function getRadialCoords(el){return{x1:el.getAttribute("fx")||el.getAttribute("cx")||"50%",y1:el.getAttribute("fy")||el.getAttribute("cy")||"50%",r1:0,x2:el.getAttribute("cx")||"50%",y2:el.getAttribute("cy")||"50%",r2:el.getAttribute("r")||"50%"}}fabric.Gradient=fabric.util.createClass({initialize:function(options){options||(options={});var coords={};this.id=fabric.Object.__uid++;this.type=options.type||"linear";coords={x1:options.coords.x1||0,y1:options.coords.y1||0,x2:options.coords.x2||0,y2:options.coords.y2||0};if(this.type==="radial"){coords.r1=options.coords.r1||0;coords.r2=options.coords.r2||0}this.coords=coords;this.gradientUnits=options.gradientUnits||"objectBoundingBox";this.colorStops=options.colorStops.slice()},addColorStop:function(colorStop){for(var position in colorStop){var color=new fabric.Color(colorStop[position]);this.colorStops.push({offset:position,color:color.toRgb(),opacity:color.getAlpha()})}return this},toObject:function(){return{type:this.type,coords:this.coords,gradientUnits:this.gradientUnits,colorStops:this.colorStops}},toSVG:function(object,normalize){var coords=fabric.util.object.clone(this.coords),markup;this.colorStops.sort(function(a,b){return a.offset-b.offset});if(normalize&&this.gradientUnits==="userSpaceOnUse"){coords.x1+=object.width/2;coords.y1+=object.height/2;coords.x2+=object.width/2;coords.y2+=object.height/2}else if(this.gradientUnits==="objectBoundingBox"){_convertValuesToPercentUnits(object,coords)}if(this.type==="linear"){markup=["']}else if(this.type==="radial"){markup=["']}for(var i=0;i')}markup.push(this.type==="linear"?"":"");return markup.join("")},toLive:function(ctx){var gradient;if(!this.type)return;if(this.type==="linear"){gradient=ctx.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2)}else if(this.type==="radial"){gradient=ctx.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2)}for(var i=0,len=this.colorStops.length;i'+''+""},toLive:function(ctx){var source=typeof this.source==="function"?this.source():this.source;if(!source){return""}if(typeof source.src!=="undefined"){if(!source.complete){return""}if(source.naturalWidth===0||source.naturalHeight===0){return""}}return ctx.createPattern(source,this.repeat)}});(function(global){"use strict";var fabric=global.fabric||(global.fabric={});if(fabric.Shadow){fabric.warn("fabric.Shadow is already defined.");return}fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:false,includeDefaultValues:true,initialize:function(options){if(typeof options==="string"){options=this._parseShadow(options)}for(var prop in options){this[prop]=options[prop]}this.id=fabric.Object.__uid++},_parseShadow:function(shadow){var shadowStr=shadow.trim(),offsetsAndBlur=fabric.Shadow.reOffsetsAndBlur.exec(shadowStr)||[],color=shadowStr.replace(fabric.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:color.trim(),offsetX:parseInt(offsetsAndBlur[1],10)||0,offsetY:parseInt(offsetsAndBlur[2],10)||0,blur:parseInt(offsetsAndBlur[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(object){var mode="SourceAlpha";if(object&&(object.fill===this.color||object.stroke===this.color)){mode="SourceGraphic"}return''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}var obj={},proto=fabric.Shadow.prototype;if(this.color!==proto.color){obj.color=this.color}if(this.blur!==proto.blur){obj.blur=this.blur}if(this.offsetX!==proto.offsetX){obj.offsetX=this.offsetX}if(this.offsetY!==proto.offsetY){obj.offsetY=this.offsetY}return obj}});fabric.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/})(typeof exports!=="undefined"?exports:this);(function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var extend=fabric.util.object.extend,getElementOffset=fabric.util.getElementOffset,removeFromArray=fabric.util.removeFromArray,CANVAS_INIT_ERROR=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(el,options){options||(options={});this._initStatic(el,options);fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:true,stateful:true,renderOnAddRemove:true,clipTo:null,controlsAboveOverlay:false,allowTouchScrolling:false,imageSmoothingEnabled:true,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},_initStatic:function(el,options){this._objects=[];this._createLowerCanvas(el);this._initOptions(options);this._setImageSmoothing();if(options.overlayImage){this.setOverlayImage(options.overlayImage,this.renderAll.bind(this))}if(options.backgroundImage){this.setBackgroundImage(options.backgroundImage,this.renderAll.bind(this))}if(options.backgroundColor){this.setBackgroundColor(options.backgroundColor,this.renderAll.bind(this))}if(options.overlayColor){this.setOverlayColor(options.overlayColor,this.renderAll.bind(this))}this.calcOffset()},calcOffset:function(){this._offset=getElementOffset(this.lowerCanvasEl);return this},setOverlayImage:function(image,callback,options){return this.__setBgOverlayImage("overlayImage",image,callback,options)},setBackgroundImage:function(image,callback,options){return this.__setBgOverlayImage("backgroundImage",image,callback,options)},setOverlayColor:function(overlayColor,callback){return this.__setBgOverlayColor("overlayColor",overlayColor,callback)},setBackgroundColor:function(backgroundColor,callback){return this.__setBgOverlayColor("backgroundColor",backgroundColor,callback)},_setImageSmoothing:function(){var ctx=this.getContext();ctx.imageSmoothingEnabled=this.imageSmoothingEnabled;ctx.webkitImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.mozImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.msImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.oImageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(property,image,callback,options){if(typeof image==="string"){fabric.util.loadImage(image,function(img){this[property]=new fabric.Image(img,options);callback&&callback()},this)}else{this[property]=image;callback&&callback()}return this},__setBgOverlayColor:function(property,color,callback){if(color.source){var _this=this;fabric.util.loadImage(color.source,function(img){_this[property]=new fabric.Pattern({source:img,repeat:color.repeat,offsetX:color.offsetX,offsetY:color.offsetY});callback&&callback()})}else{this[property]=color;callback&&callback()}return this},_createCanvasElement:function(){var element=fabric.document.createElement("canvas");if(!element.style){element.style={}}if(!element){throw CANVAS_INIT_ERROR}this._initCanvasElement(element);return element},_initCanvasElement:function(element){fabric.util.createCanvasElement(element);if(typeof element.getContext==="undefined"){throw CANVAS_INIT_ERROR}},_initOptions:function(options){for(var prop in options){this[prop]=options[prop]}this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0;this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width;this.lowerCanvasEl.height=this.height;this.lowerCanvasEl.style.width=this.width+"px";this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(canvasEl){this.lowerCanvasEl=fabric.util.getById(canvasEl)||this._createCanvasElement();this._initCanvasElement(this.lowerCanvasEl);fabric.util.addClass(this.lowerCanvasEl,"lower-canvas");if(this.interactive){this._applyCanvasStyle(this.lowerCanvasEl)}this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(value){return this._setDimension("width",value)},setHeight:function(value){return this._setDimension("height",value)},setDimensions:function(dimensions){for(var prop in dimensions){this._setDimension(prop,dimensions[prop])}return this},_setDimension:function(prop,value){this.lowerCanvasEl[prop]=value;this.lowerCanvasEl.style[prop]=value+"px";if(this.upperCanvasEl){this.upperCanvasEl[prop]=value;this.upperCanvasEl.style[prop]=value+"px"}if(this.cacheCanvasEl){this.cacheCanvasEl[prop]=value}if(this.wrapperEl){this.wrapperEl.style[prop]=value+"px"}this[prop]=value;this.calcOffset();this.renderAll();return this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(vpt){this.viewportTransform=vpt;this.renderAll();for(var i=0,len=this._objects.length;i");return markup.join("")},_setSVGPreamble:function(markup,options){if(!options.suppressPreamble){markup.push('','\n')}},_setSVGHeader:function(markup,options){markup.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(markup,reviver){var activeGroup=this.getActiveGroup();if(activeGroup){this.discardActiveGroup()}for(var i=0,objects=this.getObjects(),len=objects.length;i")}else if(this[property]&&property==="overlayColor"){markup.push('")}},sendToBack:function(object){removeFromArray(this._objects,object);this._objects.unshift(object);return this.renderAll&&this.renderAll()},bringToFront:function(object){removeFromArray(this._objects,object);this._objects.push(object);return this.renderAll&&this.renderAll()},sendBackwards:function(object,intersecting){var idx=this._objects.indexOf(object);if(idx!==0){var newIdx=this._findNewLowerIndex(object,idx,intersecting);removeFromArray(this._objects,object);this._objects.splice(newIdx,0,object);this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(object,idx,intersecting){var newIdx;if(intersecting){newIdx=idx;for(var i=idx-1;i>=0;--i){var isIntersecting=object.intersectsWithObject(this._objects[i])||object.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(object);if(isIntersecting){newIdx=i;break}}}else{newIdx=idx-1}return newIdx},bringForward:function(object,intersecting){var idx=this._objects.indexOf(object);if(idx!==this._objects.length-1){var newIdx=this._findNewUpperIndex(object,idx,intersecting);removeFromArray(this._objects,object);this._objects.splice(newIdx,0,object);this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(object,idx,intersecting){var newIdx;if(intersecting){newIdx=idx;for(var i=idx+1;i"}});extend(fabric.StaticCanvas.prototype,fabric.Observable);extend(fabric.StaticCanvas.prototype,fabric.Collection);extend(fabric.StaticCanvas.prototype,fabric.DataURLExporter);extend(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(methodName){var el=fabric.util.createCanvasElement();if(!el||!el.getContext){return null}var ctx=el.getContext("2d");if(!ctx){return null}switch(methodName){case"getImageData":return typeof ctx.getImageData!=="undefined";case"setLineDash":return typeof ctx.setLineDash!=="undefined";case"toDataURL":return typeof el.toDataURL!=="undefined";case"toDataURLWithQuality":try{el.toDataURL("image/jpeg",0);return true}catch(e){}return false;default:return null}}});fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject})();fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(options){this.shadow=new fabric.Shadow(options);return this},_setBrushStyles:function(){var ctx=this.canvas.contextTop;ctx.strokeStyle=this.color;ctx.lineWidth=this.width;ctx.lineCap=this.strokeLineCap;ctx.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var ctx=this.canvas.contextTop;ctx.shadowColor=this.shadow.color;ctx.shadowBlur=this.shadow.blur;ctx.shadowOffsetX=this.shadow.offsetX;ctx.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var ctx=this.canvas.contextTop;ctx.shadowColor="";ctx.shadowBlur=ctx.shadowOffsetX=ctx.shadowOffsetY=0}});(function(){var utilMin=fabric.util.array.min,utilMax=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(canvas){this.canvas=canvas;this._points=[]},onMouseDown:function(pointer){this._prepareForDrawing(pointer);this._captureDrawingPath(pointer);this._render()},onMouseMove:function(pointer){this._captureDrawingPath(pointer);this.canvas.clearContext(this.canvas.contextTop);this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(pointer){var p=new fabric.Point(pointer.x,pointer.y);this._reset();this._addPoint(p);this.canvas.contextTop.moveTo(p.x,p.y)},_addPoint:function(point){this._points.push(point)},_reset:function(){this._points.length=0;this._setBrushStyles();this._setShadow()},_captureDrawingPath:function(pointer){var pointerPoint=new fabric.Point(pointer.x,pointer.y);this._addPoint(pointerPoint)},_render:function(){var ctx=this.canvas.contextTop;var v=this.canvas.viewportTransform;ctx.save();ctx.transform(v[0],v[1],v[2],v[3],v[4],v[5]);ctx.beginPath();var p1=this._points[0],p2=this._points[1];if(this._points.length===2&&p1.x===p2.x&&p1.y===p2.y){p1.x-=.5;p2.x+=.5}ctx.moveTo(p1.x,p1.y);for(var i=1,len=this._points.length;i'+''+""},toLive:function(ctx){var source=typeof this.source==="function"?this.source():this.source;if(!source){return""}if(typeof source.src!=="undefined"){if(!source.complete){return""}if(source.naturalWidth===0||source.naturalHeight===0){return""}}return ctx.createPattern(source,this.repeat)}});(function(global){"use strict";var fabric=global.fabric||(global.fabric={});if(fabric.Shadow){fabric.warn("fabric.Shadow is already defined.");return}fabric.Shadow=fabric.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:false,includeDefaultValues:true,initialize:function(options){if(typeof options==="string"){options=this._parseShadow(options)}for(var prop in options){this[prop]=options[prop]}this.id=fabric.Object.__uid++},_parseShadow:function(shadow){var shadowStr=shadow.trim(),offsetsAndBlur=fabric.Shadow.reOffsetsAndBlur.exec(shadowStr)||[],color=shadowStr.replace(fabric.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:color.trim(),offsetX:parseInt(offsetsAndBlur[1],10)||0,offsetY:parseInt(offsetsAndBlur[2],10)||0,blur:parseInt(offsetsAndBlur[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(object){var mode="SourceAlpha";if(object&&(object.fill===this.color||object.stroke===this.color)){mode="SourceGraphic"}return''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues){return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY}}var obj={},proto=fabric.Shadow.prototype;if(this.color!==proto.color){obj.color=this.color}if(this.blur!==proto.blur){obj.blur=this.blur}if(this.offsetX!==proto.offsetX){obj.offsetX=this.offsetX}if(this.offsetY!==proto.offsetY){obj.offsetY=this.offsetY}return obj}});fabric.Shadow.reOffsetsAndBlur=/(?:\s|^)(-?\d+(?:px)?(?:\s?|$))?(-?\d+(?:px)?(?:\s?|$))?(\d+(?:px)?)?(?:\s?|$)(?:$|\s)/})(typeof exports!=="undefined"?exports:this);(function(){"use strict";if(fabric.StaticCanvas){fabric.warn("fabric.StaticCanvas is already defined.");return}var extend=fabric.util.object.extend,getElementOffset=fabric.util.getElementOffset,removeFromArray=fabric.util.removeFromArray,CANVAS_INIT_ERROR=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(el,options){options||(options={});this._initStatic(el,options);fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:true,stateful:true,renderOnAddRemove:true,clipTo:null,controlsAboveOverlay:false,allowTouchScrolling:false,imageSmoothingEnabled:true,viewportTransform:[1,0,0,1,0,0],onBeforeScaleRotate:function(){},_initStatic:function(el,options){this._objects=[];this._createLowerCanvas(el);this._initOptions(options);this._setImageSmoothing();if(options.overlayImage){this.setOverlayImage(options.overlayImage,this.renderAll.bind(this))}if(options.backgroundImage){this.setBackgroundImage(options.backgroundImage,this.renderAll.bind(this))}if(options.backgroundColor){this.setBackgroundColor(options.backgroundColor,this.renderAll.bind(this))}if(options.overlayColor){this.setOverlayColor(options.overlayColor,this.renderAll.bind(this))}this.calcOffset()},calcOffset:function(){this._offset=getElementOffset(this.lowerCanvasEl);return this},setOverlayImage:function(image,callback,options){return this.__setBgOverlayImage("overlayImage",image,callback,options)},setBackgroundImage:function(image,callback,options){return this.__setBgOverlayImage("backgroundImage",image,callback,options)},setOverlayColor:function(overlayColor,callback){return this.__setBgOverlayColor("overlayColor",overlayColor,callback)},setBackgroundColor:function(backgroundColor,callback){return this.__setBgOverlayColor("backgroundColor",backgroundColor,callback)},_setImageSmoothing:function(){var ctx=this.getContext();ctx.imageSmoothingEnabled=this.imageSmoothingEnabled;ctx.webkitImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.mozImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.msImageSmoothingEnabled=this.imageSmoothingEnabled;ctx.oImageSmoothingEnabled=this.imageSmoothingEnabled},__setBgOverlayImage:function(property,image,callback,options){if(typeof image==="string"){fabric.util.loadImage(image,function(img){this[property]=new fabric.Image(img,options);callback&&callback()},this)}else{this[property]=image;callback&&callback()}return this},__setBgOverlayColor:function(property,color,callback){if(color.source){var _this=this;fabric.util.loadImage(color.source,function(img){_this[property]=new fabric.Pattern({source:img,repeat:color.repeat,offsetX:color.offsetX,offsetY:color.offsetY});callback&&callback()})}else{this[property]=color;callback&&callback()}return this},_createCanvasElement:function(){var element=fabric.document.createElement("canvas");if(!element.style){element.style={}}if(!element){throw CANVAS_INIT_ERROR}this._initCanvasElement(element);return element},_initCanvasElement:function(element){fabric.util.createCanvasElement(element);if(typeof element.getContext==="undefined"){throw CANVAS_INIT_ERROR}},_initOptions:function(options){for(var prop in options){this[prop]=options[prop]}this.width=this.width||parseInt(this.lowerCanvasEl.width,10)||0;this.height=this.height||parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;this.lowerCanvasEl.width=this.width;this.lowerCanvasEl.height=this.height;this.lowerCanvasEl.style.width=this.width+"px";this.lowerCanvasEl.style.height=this.height+"px"},_createLowerCanvas:function(canvasEl){this.lowerCanvasEl=fabric.util.getById(canvasEl)||this._createCanvasElement();this._initCanvasElement(this.lowerCanvasEl);fabric.util.addClass(this.lowerCanvasEl,"lower-canvas");if(this.interactive){this._applyCanvasStyle(this.lowerCanvasEl)}this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(value){return this._setDimension("width",value)},setHeight:function(value){return this._setDimension("height",value)},setDimensions:function(dimensions){for(var prop in dimensions){this._setDimension(prop,dimensions[prop])}return this},_setDimension:function(prop,value){this.lowerCanvasEl[prop]=value;this.lowerCanvasEl.style[prop]=value+"px";if(this.upperCanvasEl){this.upperCanvasEl[prop]=value;this.upperCanvasEl.style[prop]=value+"px"}if(this.cacheCanvasEl){this.cacheCanvasEl[prop]=value}if(this.wrapperEl){this.wrapperEl.style[prop]=value+"px"}this[prop]=value;this.calcOffset();this.renderAll();return this},getZoom:function(){return Math.sqrt(this.viewportTransform[0]*this.viewportTransform[3])},setViewportTransform:function(vpt){this.viewportTransform=vpt;this.renderAll();for(var i=0,len=this._objects.length;i");return markup.join("")},_setSVGPreamble:function(markup,options){if(!options.suppressPreamble){markup.push('','\n')}},_setSVGHeader:function(markup,options){markup.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(markup,reviver){var activeGroup=this.getActiveGroup();if(activeGroup){this.discardActiveGroup()}for(var i=0,objects=this.getObjects(),len=objects.length;i")}else if(this[property]&&property==="overlayColor"){markup.push('")}},sendToBack:function(object){removeFromArray(this._objects,object);this._objects.unshift(object);return this.renderAll&&this.renderAll()},bringToFront:function(object){removeFromArray(this._objects,object);this._objects.push(object);return this.renderAll&&this.renderAll()},sendBackwards:function(object,intersecting){var idx=this._objects.indexOf(object);if(idx!==0){var newIdx=this._findNewLowerIndex(object,idx,intersecting);removeFromArray(this._objects,object);this._objects.splice(newIdx,0,object);this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(object,idx,intersecting){var newIdx;if(intersecting){newIdx=idx;for(var i=idx-1;i>=0;--i){var isIntersecting=object.intersectsWithObject(this._objects[i])||object.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(object);if(isIntersecting){newIdx=i;break}}}else{newIdx=idx-1}return newIdx},bringForward:function(object,intersecting){var idx=this._objects.indexOf(object);if(idx!==this._objects.length-1){var newIdx=this._findNewUpperIndex(object,idx,intersecting);removeFromArray(this._objects,object);this._objects.splice(newIdx,0,object);this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(object,idx,intersecting){var newIdx;if(intersecting){newIdx=idx;for(var i=idx+1;i"}});extend(fabric.StaticCanvas.prototype,fabric.Observable);extend(fabric.StaticCanvas.prototype,fabric.Collection);extend(fabric.StaticCanvas.prototype,fabric.DataURLExporter);extend(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(methodName){var el=fabric.util.createCanvasElement();if(!el||!el.getContext){return null}var ctx=el.getContext("2d");if(!ctx){return null}switch(methodName){case"getImageData":return typeof ctx.getImageData!=="undefined";case"setLineDash":return typeof ctx.setLineDash!=="undefined";case"toDataURL":return typeof el.toDataURL!=="undefined";case"toDataURLWithQuality":try{el.toDataURL("image/jpeg",0);return true}catch(e){}return false;default:return null}}});fabric.StaticCanvas.prototype.toJSON=fabric.StaticCanvas.prototype.toObject})();fabric.BaseBrush=fabric.util.createClass({color:"rgb(0, 0, 0)",width:1,shadow:null,strokeLineCap:"round",strokeLineJoin:"round",setShadow:function(options){this.shadow=new fabric.Shadow(options);return this},_setBrushStyles:function(){var ctx=this.canvas.contextTop;ctx.strokeStyle=this.color;ctx.lineWidth=this.width;ctx.lineCap=this.strokeLineCap;ctx.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var ctx=this.canvas.contextTop;ctx.shadowColor=this.shadow.color;ctx.shadowBlur=this.shadow.blur;ctx.shadowOffsetX=this.shadow.offsetX;ctx.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var ctx=this.canvas.contextTop;ctx.shadowColor="";ctx.shadowBlur=ctx.shadowOffsetX=ctx.shadowOffsetY=0}});(function(){var utilMin=fabric.util.array.min,utilMax=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(canvas){this.canvas=canvas;this._points=[]},onMouseDown:function(pointer){this._prepareForDrawing(pointer);this._captureDrawingPath(pointer);this._render()},onMouseMove:function(pointer){this._captureDrawingPath(pointer);this.canvas.clearContext(this.canvas.contextTop);this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(pointer){var p=new fabric.Point(pointer.x,pointer.y);this._reset();this._addPoint(p);this.canvas.contextTop.moveTo(p.x,p.y)},_addPoint:function(point){this._points.push(point)},_reset:function(){this._points.length=0;this._setBrushStyles();this._setShadow()},_captureDrawingPath:function(pointer){var pointerPoint=new fabric.Point(pointer.x,pointer.y);this._addPoint(pointerPoint)},_render:function(){var ctx=this.canvas.contextTop;var v=this.canvas.viewportTransform;ctx.save();ctx.transform(v[0],v[1],v[2],v[3],v[4],v[5]);ctx.beginPath();var p1=this._points[0],p2=this._points[1];if(this._points.length===2&&p1.x===p2.x&&p1.y===p2.y){p1.x-=.5;p2.x+=.5}ctx.moveTo(p1.x,p1.y);for(var i=1,len=this._points.length;itarget.padding){if(localMouse.x<0){localMouse.x+=target.padding}else{localMouse.x-=target.padding}}else{localMouse.x=0}if(abs(localMouse.y)>target.padding){if(localMouse.y<0){localMouse.y+=target.padding}else{localMouse.y-=target.padding}}else{localMouse.y=0}},_rotateObject:function(x,y){var t=this._currentTransform;if(t.target.get("lockRotation"))return;var lastAngle=atan2(t.ey-t.top,t.ex-t.left),curAngle=atan2(y-t.top,x-t.left),angle=radiansToDegrees(curAngle-lastAngle+t.theta);if(angle<0){angle=360+angle}t.target.angle=angle},_setCursor:function(value){this.upperCanvasEl.style.cursor=value},_resetObjectTransform:function(target){target.scaleX=1;target.scaleY=1;target.setAngle(0)},_drawSelection:function(){var ctx=this.contextTop,groupSelector=this._groupSelector,left=groupSelector.left,top=groupSelector.top,aleft=abs(left),atop=abs(top);ctx.fillStyle=this.selectionColor;ctx.fillRect(groupSelector.ex-(left>0?0:-left),groupSelector.ey-(top>0?0:-top),aleft,atop);ctx.lineWidth=this.selectionLineWidth;ctx.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var px=groupSelector.ex+STROKE_OFFSET-(left>0?0:aleft),py=groupSelector.ey+STROKE_OFFSET-(top>0?0:atop);ctx.beginPath();fabric.util.drawDashedLine(ctx,px,py,px+aleft,py,this.selectionDashArray);fabric.util.drawDashedLine(ctx,px,py+atop-1,px+aleft,py+atop-1,this.selectionDashArray);fabric.util.drawDashedLine(ctx,px,py,px,py+atop,this.selectionDashArray);fabric.util.drawDashedLine(ctx,px+aleft-1,py,px+aleft-1,py+atop,this.selectionDashArray);ctx.closePath();ctx.stroke()}else{ctx.strokeRect(groupSelector.ex+STROKE_OFFSET-(left>0?0:aleft),groupSelector.ey+STROKE_OFFSET-(top>0?0:atop),aleft,atop)}},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(this.getPointer(e,true))},findTarget:function(e,skipGroup){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e)){return this.lastRenderedObjectWithControlsAboveOverlay}var activeGroup=this.getActiveGroup();if(activeGroup&&!skipGroup&&this.containsPoint(e,activeGroup)){return activeGroup}var target=this._searchPossibleTargets(e);this._fireOverOutEvents(target);return target},_fireOverOutEvents:function(target){if(target){if(this._hoveredTarget!==target){this.fire("mouse:over",{target:target});target.fire("mouseover");if(this._hoveredTarget){this.fire("mouse:out",{target:this._hoveredTarget});this._hoveredTarget.fire("mouseout")}this._hoveredTarget=target}}else if(this._hoveredTarget){this.fire("mouse:out",{target:this._hoveredTarget});this._hoveredTarget.fire("mouseout");this._hoveredTarget=null}},_checkTarget:function(e,obj,pointer){if(obj&&obj.visible&&obj.evented&&this.containsPoint(e,obj)){if((this.perPixelTargetFind||obj.perPixelTargetFind)&&!obj.isEditing){var isTransparent=this.isTargetTransparent(obj,pointer.x,pointer.y);if(!isTransparent){return true}}else{return true}}},_searchPossibleTargets:function(e){var target,pointer=this.getPointer(e,true);var i=this._objects.length;while(i--){if(this._checkTarget(e,this._objects[i],pointer)){this.relatedTarget=this._objects[i];target=this._objects[i];break}}return target},getPointer:function(e,ignoreZoom,upperCanvasEl){if(!upperCanvasEl){upperCanvasEl=this.upperCanvasEl}var pointer=getPointer(e,upperCanvasEl),bounds=upperCanvasEl.getBoundingClientRect(),cssScale;pointer.x=pointer.x-this._offset.left;pointer.y=pointer.y-this._offset.top;if(!ignoreZoom){pointer=fabric.util.transformPoint(pointer,fabric.util.invertTransform(this.viewportTransform))}if(bounds.width===0||bounds.height===0){cssScale={width:1,height:1}}else{cssScale={width:upperCanvasEl.width/bounds.width,height:upperCanvasEl.height/bounds.height}}return{x:pointer.x*cssScale.width,y:pointer.y*cssScale.height}},_createUpperCanvas:function(){var lowerCanvasClass=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement();fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+lowerCanvasClass);this.wrapperEl.appendChild(this.upperCanvasEl);this._copyCanvasStyle(this.lowerCanvasEl,this.upperCanvasEl);this._applyCanvasStyle(this.upperCanvasEl);this.contextTop=this.upperCanvasEl.getContext("2d")},_createCacheCanvas:function(){this.cacheCanvasEl=this._createCanvasElement();this.cacheCanvasEl.setAttribute("width",this.width);this.cacheCanvasEl.setAttribute("height",this.height);this.contextCache=this.cacheCanvasEl.getContext("2d")},_initWrapperElement:function(){this.wrapperEl=fabric.util.wrapElement(this.lowerCanvasEl,"div",{"class":this.containerClass});fabric.util.setStyle(this.wrapperEl,{width:this.getWidth()+"px",height:this.getHeight()+"px",position:"relative"});fabric.util.makeElementUnselectable(this.wrapperEl)},_applyCanvasStyle:function(element){var width=this.getWidth()||element.width,height=this.getHeight()||element.height;fabric.util.setStyle(element,{position:"absolute",width:width+"px",height:height+"px",left:0,top:0});element.width=width;element.height=height;fabric.util.makeElementUnselectable(element)},_copyCanvasStyle:function(fromEl,toEl){toEl.style.cssText=fromEl.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(object){if(this._activeObject){this._activeObject.set("active",false)}this._activeObject=object;object.set("active",true)},setActiveObject:function(object,e){this._setActiveObject(object);this.renderAll();this.fire("object:selected",{target:object,e:e});object.fire("selected",{e:e});return this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){if(this._activeObject){this._activeObject.set("active",false)}this._activeObject=null},discardActiveObject:function(e){this._discardActiveObject();this.renderAll();this.fire("selection:cleared",{e:e});return this},_setActiveGroup:function(group){this._activeGroup=group;if(group){group.canvas=this;group._calcBounds();group._updateObjectsCoords();group.setCoords();group.set("active",true)}},setActiveGroup:function(group,e){this._setActiveGroup(group);if(group){this.fire("object:selected",{target:group,e:e});group.fire("selected",{e:e})}return this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var g=this.getActiveGroup();if(g){g.destroy()}this.setActiveGroup(null)},discardActiveGroup:function(e){this._discardActiveGroup();this.fire("selection:cleared",{e:e});return this},deactivateAll:function(){var allObjects=this.getObjects(),i=0,len=allObjects.length;for(;i1){group=new fabric.Group(group.reverse(),{originX:"center",originY:"center"});this.setActiveGroup(group,e);group.saveCoords();this.fire("selection:created",{target:group});this.renderAll()}},_collectObjects:function(){var group=[],currentObject,x1=this._groupSelector.ex,y1=this._groupSelector.ey,x2=x1+this._groupSelector.left,y2=y1+this._groupSelector.top,selectionX1Y1=new fabric.Point(min(x1,x2),min(y1,y2)),selectionX2Y2=new fabric.Point(max(x1,x2),max(y1,y2)),isClick=x1===x2&&y1===y2;for(var i=this._objects.length;i--;){currentObject=this._objects[i];if(!currentObject||!currentObject.selectable||!currentObject.visible)continue;if(currentObject.intersectsWithRect(selectionX1Y1,selectionX2Y2)||currentObject.isContainedWithinRect(selectionX1Y1,selectionX2Y2)||currentObject.containsPoint(selectionX1Y1)||currentObject.containsPoint(selectionX2Y2)){currentObject.set("active",true);group.push(currentObject);if(isClick)break}}return group},_maybeGroupObjects:function(e){if(this.selection&&this._groupSelector){this._groupSelectedObjects(e)}var activeGroup=this.getActiveGroup();if(activeGroup){activeGroup.setObjectsCoords().setCoords();activeGroup.isMoving=false;this._setCursor(this.defaultCursor)}this._groupSelector=null;this._currentTransform=null}})})();fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(options){options||(options={});var format=options.format||"png",quality=options.quality||1,multiplier=options.multiplier||1,cropping={left:options.left,top:options.top,width:options.width,height:options.height};if(multiplier!==1){return this.__toDataURLWithMultiplier(format,quality,cropping,multiplier)}else{return this.__toDataURL(format,quality,cropping)}},__toDataURL:function(format,quality,cropping){this.renderAll(true);var canvasEl=this.upperCanvasEl||this.lowerCanvasEl,croppedCanvasEl=this.__getCroppedCanvas(canvasEl,cropping);if(format==="jpg"){format="jpeg"}var data=fabric.StaticCanvas.supports("toDataURLWithQuality")?(croppedCanvasEl||canvasEl).toDataURL("image/"+format,quality):(croppedCanvasEl||canvasEl).toDataURL("image/"+format);this.contextTop&&this.clearContext(this.contextTop);this.renderAll();if(croppedCanvasEl){croppedCanvasEl=null}return data},__getCroppedCanvas:function(canvasEl,cropping){var croppedCanvasEl,croppedCtx,shouldCrop="left"in cropping||"top"in cropping||"width"in cropping||"height"in cropping;if(shouldCrop){croppedCanvasEl=fabric.util.createCanvasElement();croppedCtx=croppedCanvasEl.getContext("2d");croppedCanvasEl.width=cropping.width||this.width;croppedCanvasEl.height=cropping.height||this.height;croppedCtx.drawImage(canvasEl,-cropping.left||0,-cropping.top||0)}return croppedCanvasEl},__toDataURLWithMultiplier:function(format,quality,cropping,multiplier){var origWidth=this.getWidth(),origHeight=this.getHeight(),scaledWidth=origWidth*multiplier,scaledHeight=origHeight*multiplier,activeObject=this.getActiveObject(),activeGroup=this.getActiveGroup(),ctx=this.contextTop||this.contextContainer;if(multiplier>1){this.setWidth(scaledWidth).setHeight(scaledHeight)}ctx.scale(multiplier,multiplier);if(cropping.left){cropping.left*=multiplier}if(cropping.top){cropping.top*=multiplier}if(cropping.width){cropping.width*=multiplier}else if(multiplier<1){cropping.width=scaledWidth}if(cropping.height){cropping.height*=multiplier}else if(multiplier<1){cropping.height=scaledHeight}if(activeGroup){this._tempRemoveBordersControlsFromGroup(activeGroup)}else if(activeObject&&this.deactivateAll){this.deactivateAll()}this.renderAll(true);var data=this.__toDataURL(format,quality,cropping);this.width=origWidth;this.height=origHeight;ctx.scale(1/multiplier,1/multiplier);this.setWidth(origWidth).setHeight(origHeight);if(activeGroup){this._restoreBordersControlsOnGroup(activeGroup)}else if(activeObject&&this.setActiveObject){this.setActiveObject(activeObject)}this.contextTop&&this.clearContext(this.contextTop);this.renderAll();return data},toDataURLWithMultiplier:function(format,multiplier,quality){return this.toDataURL({format:format,multiplier:multiplier,quality:quality})},_tempRemoveBordersControlsFromGroup:function(group){group.origHasControls=group.hasControls;group.origBorderColor=group.borderColor;group.hasControls=true;group.borderColor="rgba(0,0,0,0)";group.forEachObject(function(o){o.origBorderColor=o.borderColor;o.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(group){group.hideControls=group.origHideControls;group.borderColor=group.origBorderColor;group.forEachObject(function(o){o.borderColor=o.origBorderColor;delete o.origBorderColor})}});fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(json,callback,reviver){return this.loadFromJSON(json,callback,reviver)},loadFromJSON:function(json,callback,reviver){if(!json)return;var serialized=typeof json==="string"?JSON.parse(json):json;this.clear();var _this=this;this._enlivenObjects(serialized.objects,function(){_this._setBgOverlay(serialized,callback)},reviver);return this},_setBgOverlay:function(serialized,callback){var _this=this,loaded={backgroundColor:false,overlayColor:false,backgroundImage:false,overlayImage:false};if(!serialized.backgroundImage&&!serialized.overlayImage&&!serialized.background&&!serialized.overlay){callback&&callback(); return}var cbIfLoaded=function(){if(loaded.backgroundImage&&loaded.overlayImage&&loaded.backgroundColor&&loaded.overlayColor){_this.renderAll();callback&&callback()}};this.__setBgOverlay("backgroundImage",serialized.backgroundImage,loaded,cbIfLoaded);this.__setBgOverlay("overlayImage",serialized.overlayImage,loaded,cbIfLoaded);this.__setBgOverlay("backgroundColor",serialized.background,loaded,cbIfLoaded);this.__setBgOverlay("overlayColor",serialized.overlay,loaded,cbIfLoaded);cbIfLoaded()},__setBgOverlay:function(property,value,loaded,callback){var _this=this;if(!value){loaded[property]=true;return}if(property==="backgroundImage"||property==="overlayImage"){fabric.Image.fromObject(value,function(img){_this[property]=img;loaded[property]=true;callback&&callback()})}else{this["set"+fabric.util.string.capitalize(property,true)](value,function(){loaded[property]=true;callback&&callback()})}},_enlivenObjects:function(objects,callback,reviver){var _this=this;if(!objects||objects.length===0){callback&&callback();return}var renderOnAddRemove=this.renderOnAddRemove;this.renderOnAddRemove=false;fabric.util.enlivenObjects(objects,function(enlivenedObjects){enlivenedObjects.forEach(function(obj,index){_this.insertAt(obj,index,true)});_this.renderOnAddRemove=renderOnAddRemove;callback&&callback()},null,reviver)},_toDataURL:function(format,callback){this.clone(function(clone){callback(clone.toDataURL(format))})},_toDataURLWithMultiplier:function(format,multiplier,callback){this.clone(function(clone){callback(clone.toDataURLWithMultiplier(format,multiplier))})},clone:function(callback,properties){var data=JSON.stringify(this.toJSON(properties));this.cloneWithoutData(function(clone){clone.loadFromJSON(data,function(){callback&&callback(clone)})})},cloneWithoutData:function(callback){var el=fabric.document.createElement("canvas");el.width=this.getWidth();el.height=this.getHeight();var clone=new fabric.Canvas(el);clone.clipTo=this.clipTo;if(this.backgroundImage){clone.setBackgroundImage(this.backgroundImage.src,function(){clone.renderAll();callback&&callback(clone)});clone.backgroundImageOpacity=this.backgroundImageOpacity;clone.backgroundImageStretch=this.backgroundImageStretch}else{callback&&callback(clone)}}});(function(){var degreesToRadians=fabric.util.degreesToRadians,radiansToDegrees=fabric.util.radiansToDegrees;fabric.util.object.extend(fabric.Canvas.prototype,{__onTransformGesture:function(e,self){if(this.isDrawingMode||!e.touches||e.touches.length!==2||"gesture"!==self.gesture){return}var target=this.findTarget(e);if("undefined"!==typeof target){this.onBeforeScaleRotate(target);this._rotateObjectByAngle(self.rotation);this._scaleObjectBy(self.scale)}this.fire("touch:gesture",{target:target,e:e,self:self})},__onDrag:function(e,self){this.fire("touch:drag",{e:e,self:self})},__onOrientationChange:function(e,self){this.fire("touch:orientation",{e:e,self:self})},__onShake:function(e,self){this.fire("touch:shake",{e:e,self:self})},_scaleObjectBy:function(s,by){var t=this._currentTransform,target=t.target,lockScalingX=target.get("lockScalingX"),lockScalingY=target.get("lockScalingY");if(lockScalingX&&lockScalingY)return;target._scaling=true;if(!by){if(!lockScalingX){target.set("scaleX",t.scaleX*s)}if(!lockScalingY){target.set("scaleY",t.scaleY*s)}}else if(by==="x"&&!target.get("lockUniScaling")){lockScalingX||target.set("scaleX",t.scaleX*s)}else if(by==="y"&&!target.get("lockUniScaling")){lockScalingY||target.set("scaleY",t.scaleY*s)}},_rotateObjectByAngle:function(curAngle){var t=this._currentTransform;if(t.target.get("lockRotation"))return;t.target.angle=radiansToDegrees(degreesToRadians(curAngle)+t.theta)}})})();(function(global){"use strict";var fabric=global.fabric||(global.fabric={}),extend=fabric.util.object.extend,toFixed=fabric.util.toFixed,capitalize=fabric.util.string.capitalize,degreesToRadians=fabric.util.degreesToRadians,supportsLineDash=fabric.StaticCanvas.supports("setLineDash");if(fabric.Object){return}fabric.Object=fabric.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:false,flipY:false,opacity:1,angle:0,cornerSize:12,transparentCorners:true,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:false,centeredRotation:true,fill:"rgb(0,0,0)",fillRule:"source-over",backgroundColor:"",stroke:null,strokeWidth:1,strokeDashArray:null,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:10,shadow:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,transformMatrix:null,minScaleLimit:.01,selectable:true,evented:true,visible:true,hasControls:true,hasBorders:true,hasRotatingPoint:true,rotatingPointOffset:40,perPixelTargetFind:false,includeDefaultValues:true,clipTo:null,lockMovementX:false,lockMovementY:false,lockRotation:false,lockScalingX:false,lockScalingY:false,lockUniScaling:false,stateProperties:("top left width height scaleX scaleY flipX flipY originX originY transformMatrix "+"stroke strokeWidth strokeDashArray strokeLineCap strokeLineJoin strokeMiterLimit "+"angle opacity fill fillRule shadow clipTo visible backgroundColor").split(" "),initialize:function(options){if(options){this.setOptions(options)}},_initGradient:function(options){if(options.fill&&options.fill.colorStops&&!(options.fill instanceof fabric.Gradient)){this.set("fill",new fabric.Gradient(options.fill))}},_initPattern:function(options){if(options.fill&&options.fill.source&&!(options.fill instanceof fabric.Pattern)){this.set("fill",new fabric.Pattern(options.fill))}if(options.stroke&&options.stroke.source&&!(options.stroke instanceof fabric.Pattern)){this.set("stroke",new fabric.Pattern(options.stroke))}},_initClipping:function(options){if(!options.clipTo||typeof options.clipTo!=="string")return;var functionBody=fabric.util.getFunctionBody(options.clipTo);if(typeof functionBody!=="undefined"){this.clipTo=new Function("ctx",functionBody)}},setOptions:function(options){for(var prop in options){this.set(prop,options[prop])}this._initGradient(options);this._initPattern(options);this._initClipping(options)},transform:function(ctx,fromLeft){if(this.group){this.group.transform(ctx,fromLeft)}ctx.globalAlpha=this.opacity;var center=fromLeft?this._getLeftTopCoords():this.getCenterPoint();ctx.translate(center.x,center.y);ctx.rotate(degreesToRadians(this.angle));ctx.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(propertiesToInclude){var NUM_FRACTION_DIGITS=fabric.Object.NUM_FRACTION_DIGITS,object={type:this.type,originX:this.originX,originY:this.originY,left:toFixed(this.left,NUM_FRACTION_DIGITS),top:toFixed(this.top,NUM_FRACTION_DIGITS),width:toFixed(this.width,NUM_FRACTION_DIGITS),height:toFixed(this.height,NUM_FRACTION_DIGITS),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:toFixed(this.strokeWidth,NUM_FRACTION_DIGITS),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:toFixed(this.strokeMiterLimit,NUM_FRACTION_DIGITS),scaleX:toFixed(this.scaleX,NUM_FRACTION_DIGITS),scaleY:toFixed(this.scaleY,NUM_FRACTION_DIGITS),angle:toFixed(this.getAngle(),NUM_FRACTION_DIGITS),flipX:this.flipX,flipY:this.flipY,opacity:toFixed(this.opacity,NUM_FRACTION_DIGITS),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};if(!this.includeDefaultValues){object=this._removeDefaultValues(object)}fabric.util.populateWithProperties(this,object,propertiesToInclude);return object},toDatalessObject:function(propertiesToInclude){return this.toObject(propertiesToInclude)},_removeDefaultValues:function(object){var prototype=fabric.util.getKlass(object.type).prototype,stateProperties=prototype.stateProperties;stateProperties.forEach(function(prop){if(object[prop]===prototype[prop]){delete object[prop]}});return object},toString:function(){return"#"},get:function(property){return this[property]},_setObject:function(obj){for(var prop in obj){this._set(prop,obj[prop])}},set:function(key,value){if(typeof key==="object"){this._setObject(key)}else{if(typeof value==="function"&&key!=="clipTo"){this._set(key,value(this.get(key)))}else{this._set(key,value)}}return this},_set:function(key,value){var shouldConstrainValue=key==="scaleX"||key==="scaleY";if(shouldConstrainValue){value=this._constrainScale(value)}if(key==="scaleX"&&value<0){this.flipX=!this.flipX;value*=-1}else if(key==="scaleY"&&value<0){this.flipY=!this.flipY;value*=-1}else if(key==="width"||key==="height"){this.minScaleLimit=toFixed(Math.min(.1,1/Math.max(this.width,this.height)),2)}else if(key==="shadow"&&value&&!(value instanceof fabric.Shadow)){value=new fabric.Shadow(value)}this[key]=value;return this},toggle:function(property){var value=this.get(property);if(typeof value==="boolean"){this.set(property,!value)}return this},setSourcePath:function(value){this.sourcePath=value;return this},getViewportTransform:function(){if(this.canvas&&this.canvas.viewportTransform)return this.canvas.viewportTransform;return[1,0,0,1,0,0]},render:function(ctx,noTransform){if(this.width===0||this.height===0||!this.visible)return;ctx.save();this._setupFillRule(ctx);this._transform(ctx,noTransform);this._setStrokeStyles(ctx);this._setFillStyles(ctx);var m=this.transformMatrix;if(m&&this.group){ctx.translate(-this.group.width/2,-this.group.height/2);ctx.transform(m[0],m[1],m[2],m[3],m[4],m[5])}this._setShadow(ctx);this.clipTo&&fabric.util.clipContext(this,ctx);this._render(ctx,noTransform);this.clipTo&&ctx.restore();this._removeShadow(ctx);this._restoreFillRule(ctx);ctx.restore()},_transform:function(ctx,noTransform){var m=this.transformMatrix;if(m&&!this.group){ctx.setTransform(m[0],m[1],m[2],m[3],m[4],m[5])}if(!noTransform){this.transform(ctx)}},_setStrokeStyles:function(ctx){if(this.stroke){ctx.lineWidth=this.strokeWidth;ctx.lineCap=this.strokeLineCap;ctx.lineJoin=this.strokeLineJoin;ctx.miterLimit=this.strokeMiterLimit;ctx.strokeStyle=this.stroke.toLive?this.stroke.toLive(ctx):this.stroke}},_setFillStyles:function(ctx){if(this.fill){ctx.fillStyle=this.fill.toLive?this.fill.toLive(ctx):this.fill}},_renderControls:function(ctx,noTransform){var v=this.getViewportTransform();ctx.save();if(this.active&&!noTransform){var center;if(this.group){center=fabric.util.transformPoint(this.group.getCenterPoint(),v);ctx.translate(center.x,center.y);ctx.rotate(degreesToRadians(this.group.angle))}center=fabric.util.transformPoint(this.getCenterPoint(),v,null!=this.group);if(this.group){center.x*=this.group.scaleX;center.y*=this.group.scaleY}ctx.translate(center.x,center.y);ctx.rotate(degreesToRadians(this.angle));this.drawBorders(ctx);this.drawControls(ctx)}ctx.restore()},_setShadow:function(ctx){if(!this.shadow)return;ctx.shadowColor=this.shadow.color;ctx.shadowBlur=this.shadow.blur;ctx.shadowOffsetX=this.shadow.offsetX;ctx.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(ctx){if(!this.shadow)return;ctx.shadowColor="";ctx.shadowBlur=ctx.shadowOffsetX=ctx.shadowOffsetY=0},_renderFill:function(ctx){if(!this.fill)return;if(this.fill.toLive){ctx.save();ctx.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)}if(this.fillRule==="destination-over"){ctx.fill("evenodd")}else{ctx.fill()}if(this.fill.toLive){ctx.restore()}if(this.shadow&&!this.shadow.affectStroke){this._removeShadow(ctx)}},_renderStroke:function(ctx){if(!this.stroke)return;ctx.save();if(this.strokeDashArray){if(1&this.strokeDashArray.length){this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray)}if(supportsLineDash){ctx.setLineDash(this.strokeDashArray);this._stroke&&this._stroke(ctx)}else{this._renderDashedStroke&&this._renderDashedStroke(ctx)}ctx.stroke()}else{this._stroke?this._stroke(ctx):ctx.stroke()}this._removeShadow(ctx);ctx.restore()},clone:function(callback,propertiesToInclude){if(this.constructor.fromObject){return this.constructor.fromObject(this.toObject(propertiesToInclude),callback)}return new fabric.Object(this.toObject(propertiesToInclude))},cloneAsImage:function(callback){var dataUrl=this.toDataURL();fabric.util.loadImage(dataUrl,function(img){if(callback){callback(new fabric.Image(img))}});return this},toDataURL:function(options){options||(options={});var el=fabric.util.createCanvasElement(),boundingRect=this.getBoundingRect();el.width=boundingRect.width;el.height=boundingRect.height;fabric.util.wrapElement(el,"div");var canvas=new fabric.Canvas(el);if(options.format==="jpg"){options.format="jpeg"}if(options.format==="jpeg"){canvas.backgroundColor="#fff"}var origParams={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",false);this.setPositionByOrigin(new fabric.Point(el.width/2,el.height/2),"center","center");var originalCanvas=this.canvas;canvas.add(this);var data=canvas.toDataURL(options);this.set(origParams).setCoords();this.canvas=originalCanvas;canvas.dispose();canvas=null;return data},isType:function(type){return this.type===type},complexity:function(){return 0},toJSON:function(propertiesToInclude){return this.toObject(propertiesToInclude)},setGradient:function(property,options){options||(options={});var gradient={colorStops:[]};gradient.type=options.type||(options.r1||options.r2?"radial":"linear");gradient.coords={x1:options.x1,y1:options.y1,x2:options.x2,y2:options.y2};if(options.r1||options.r2){gradient.coords.r1=options.r1;gradient.coords.r2=options.r2}for(var position in options.colorStops){var color=new fabric.Color(options.colorStops[position]);gradient.colorStops.push({offset:position,color:color.toRgb(),opacity:color.getAlpha()})}return this.set(property,fabric.Gradient.forObject(this,gradient))},setPatternFill:function(options){return this.set("fill",new fabric.Pattern(options))},setShadow:function(options){return this.set("shadow",new fabric.Shadow(options))},setColor:function(color){this.set("fill",color);return this},setAngle:function(angle){var shouldCenterOrigin=(this.originX!=="center"||this.originY!=="center")&&this.centeredRotation;if(shouldCenterOrigin){this._setOriginToCenter()}this.set("angle",angle);if(shouldCenterOrigin){this._resetOrigin()}return this},centerH:function(){this.canvas.centerObjectH(this);return this},centerV:function(){this.canvas.centerObjectV(this);return this},center:function(){this.canvas.centerObject(this);return this},remove:function(){this.canvas.remove(this);return this},getLocalPointer:function(e,pointer){pointer=pointer||this.canvas.getPointer(e);var objectLeftTop=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:pointer.x-objectLeftTop.x,y:pointer.y-objectLeftTop.y}},_setupFillRule:function(ctx){if(this.fillRule){this._prevFillRule=ctx.globalCompositeOperation;ctx.globalCompositeOperation=this.fillRule}},_restoreFillRule:function(ctx){if(this.fillRule&&this._prevFillRule){ctx.globalCompositeOperation=this._prevFillRule}}});fabric.util.createAccessors(fabric.Object);fabric.Object.prototype.rotate=fabric.Object.prototype.setAngle;extend(fabric.Object.prototype,fabric.Observable);fabric.Object.NUM_FRACTION_DIGITS=2;fabric.Object.__uid=0})(typeof exports!=="undefined"?exports:this);(function(){var degreesToRadians=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(point,originX,originY){var cx=point.x,cy=point.y,strokeWidth=this.stroke?this.strokeWidth:0;if(originX==="left"){cx=point.x+(this.getWidth()+strokeWidth*this.scaleX)/2}else if(originX==="right"){cx=point.x-(this.getWidth()+strokeWidth*this.scaleX)/2}if(originY==="top"){cy=point.y+(this.getHeight()+strokeWidth*this.scaleY)/2}else if(originY==="bottom"){cy=point.y-(this.getHeight()+strokeWidth*this.scaleY)/2}return fabric.util.rotatePoint(new fabric.Point(cx,cy),point,degreesToRadians(this.angle))},translateToOriginPoint:function(center,originX,originY){var x=center.x,y=center.y,strokeWidth=this.stroke?this.strokeWidth:0;if(originX==="left"){x=center.x-(this.getWidth()+strokeWidth*this.scaleX)/2}else if(originX==="right"){x=center.x+(this.getWidth()+strokeWidth*this.scaleX)/2}if(originY==="top"){y=center.y-(this.getHeight()+strokeWidth*this.scaleY)/2}else if(originY==="bottom"){y=center.y+(this.getHeight()+strokeWidth*this.scaleY)/2}return fabric.util.rotatePoint(new fabric.Point(x,y),center,degreesToRadians(this.angle))},getCenterPoint:function(){var leftTop=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(leftTop,this.originX,this.originY)},getPointByOrigin:function(originX,originY){var center=this.getCenterPoint();return this.translateToOriginPoint(center,originX,originY)},toLocalPoint:function(point,originX,originY){var center=this.getCenterPoint(),strokeWidth=this.stroke?this.strokeWidth:0,x,y;if(originX&&originY){if(originX==="left"){x=center.x-(this.getWidth()+strokeWidth*this.scaleX)/2}else if(originX==="right"){x=center.x+(this.getWidth()+strokeWidth*this.scaleX)/2}else{x=center.x}if(originY==="top"){y=center.y-(this.getHeight()+strokeWidth*this.scaleY)/2}else if(originY==="bottom"){y=center.y+(this.getHeight()+strokeWidth*this.scaleY)/2}else{y=center.y}}else{x=this.left;y=this.top}return fabric.util.rotatePoint(new fabric.Point(point.x,point.y),center,-degreesToRadians(this.angle)).subtractEquals(new fabric.Point(x,y))},setPositionByOrigin:function(pos,originX,originY){var center=this.translateToCenterPoint(pos,originX,originY),position=this.translateToOriginPoint(center,this.originX,this.originY);this.set("left",position.x);this.set("top",position.y)},adjustPosition:function(to){var angle=degreesToRadians(this.angle),hypotHalf=this.getWidth()/2,xHalf=Math.cos(angle)*hypotHalf,yHalf=Math.sin(angle)*hypotHalf,hypotFull=this.getWidth(),xFull=Math.cos(angle)*hypotFull,yFull=Math.sin(angle)*hypotFull;if(this.originX==="center"&&to==="left"||this.originX==="right"&&to==="center"){this.left-=xHalf;this.top-=yHalf}else if(this.originX==="left"&&to==="center"||this.originX==="center"&&to==="right"){this.left+=xHalf;this.top+=yHalf}else if(this.originX==="left"&&to==="right"){this.left+=xFull;this.top+=yFull}else if(this.originX==="right"&&to==="left"){this.left-=xFull;this.top-=yFull}this.setCoords();this.originX=to},_setOriginToCenter:function(){this._originalOriginX=this.originX;this._originalOriginY=this.originY;var center=this.getCenterPoint();this.originX="center";this.originY="center";this.left=center.x;this.top=center.y},_resetOrigin:function(){var originPoint=this.translateToOriginPoint(this.getCenterPoint(),this._originalOriginX,this._originalOriginY);this.originX=this._originalOriginX;this.originY=this._originalOriginY;this.left=originPoint.x;this.top=originPoint.y;this._originalOriginX=null;this._originalOriginY=null},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})})();(function(){var degreesToRadians=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(pointTL,pointBR){var oCoords=this.oCoords,tl=new fabric.Point(oCoords.tl.x,oCoords.tl.y),tr=new fabric.Point(oCoords.tr.x,oCoords.tr.y),bl=new fabric.Point(oCoords.bl.x,oCoords.bl.y),br=new fabric.Point(oCoords.br.x,oCoords.br.y),intersection=fabric.Intersection.intersectPolygonRectangle([tl,tr,br,bl],pointTL,pointBR);return intersection.status==="Intersection"},intersectsWithObject:function(other){function getCoords(oCoords){return{tl:new fabric.Point(oCoords.tl.x,oCoords.tl.y),tr:new fabric.Point(oCoords.tr.x,oCoords.tr.y),bl:new fabric.Point(oCoords.bl.x,oCoords.bl.y),br:new fabric.Point(oCoords.br.x,oCoords.br.y)}}var thisCoords=getCoords(this.oCoords),otherCoords=getCoords(other.oCoords),intersection=fabric.Intersection.intersectPolygonPolygon([thisCoords.tl,thisCoords.tr,thisCoords.br,thisCoords.bl],[otherCoords.tl,otherCoords.tr,otherCoords.br,otherCoords.bl]);return intersection.status==="Intersection"},isContainedWithinObject:function(other){var boundingRect=other.getBoundingRect(),point1=new fabric.Point(boundingRect.left,boundingRect.top),point2=new fabric.Point(boundingRect.left+boundingRect.width,boundingRect.top+boundingRect.height);return this.isContainedWithinRect(point1,point2)},isContainedWithinRect:function(pointTL,pointBR){var boundingRect=this.getBoundingRect();return boundingRect.left>=pointTL.x&&boundingRect.left+boundingRect.width<=pointBR.x&&boundingRect.top>=pointTL.y&&boundingRect.top+boundingRect.height<=pointBR.y},containsPoint:function(point){var lines=this._getImageLines(this.oCoords),xPoints=this._findCrossPoints(point,lines);return xPoints!==0&&xPoints%2===1},_getImageLines:function(oCoords){return{topline:{o:oCoords.tl,d:oCoords.tr},rightline:{o:oCoords.tr,d:oCoords.br},bottomline:{o:oCoords.br,d:oCoords.bl},leftline:{o:oCoords.bl,d:oCoords.tl}}},_findCrossPoints:function(point,oCoords){var b1,b2,a1,a2,xi,yi,xcount=0,iLine;for(var lineKey in oCoords){iLine=oCoords[lineKey];if(iLine.o.y=point.y&&iLine.d.y>=point.y){continue}if(iLine.o.x===iLine.d.x&&iLine.o.x>=point.x){xi=iLine.o.x;yi=point.y}else{b1=0;b2=(iLine.d.y-iLine.o.y)/(iLine.d.x-iLine.o.x);a1=point.y-b1*point.x;a2=iLine.o.y-b2*iLine.o.x;xi=-(a1-a2)/(b1-b2);yi=a1+b1*xi}if(xi>=point.x){xcount+=1}if(xcount===2){break}}return xcount},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var xCoords=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],minX=fabric.util.array.min(xCoords),maxX=fabric.util.array.max(xCoords),width=Math.abs(minX-maxX),yCoords=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],minY=fabric.util.array.min(yCoords),maxY=fabric.util.array.max(yCoords),height=Math.abs(minY-maxY);return{left:minX,top:minY,width:width,height:height}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(value){if(Math.abs(value)1?this.strokeWidth:0,theta=degreesToRadians(this.angle),vpt=this.getViewportTransform();var f=function(p){return fabric.util.transformPoint(p,vpt)};this.currentWidth=(this.width+strokeWidth)*this.scaleX;this.currentHeight=(this.height+strokeWidth)*this.scaleY;if(this.currentWidth<0){this.currentWidth=Math.abs(this.currentWidth)}var _hypotenuse=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),_angle=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),offsetX=Math.cos(_angle+theta)*_hypotenuse,offsetY=Math.sin(_angle+theta)*_hypotenuse,sinTh=Math.sin(theta),cosTh=Math.cos(theta),coords=this.getCenterPoint(),wh=new fabric.Point(this.currentWidth,this.currentHeight),_tl=new fabric.Point(coords.x-offsetX,coords.y-offsetY),_tr=new fabric.Point(_tl.x+wh.x*cosTh,_tl.y+wh.x*sinTh),_bl=new fabric.Point(_tl.x-wh.y*sinTh,_tl.y+wh.y*cosTh),_mt=new fabric.Point(_tl.x+wh.x/2*cosTh,_tl.y+wh.x/2*sinTh),tl=f(_tl),tr=f(_tr),br=f(new fabric.Point(_tr.x-wh.y*sinTh,_tr.y+wh.y*cosTh)),bl=f(_bl),ml=f(new fabric.Point(_tl.x-wh.y/2*sinTh,_tl.y+wh.y/2*cosTh)),mt=f(_mt),mr=f(new fabric.Point(_tr.x-wh.y/2*sinTh,_tr.y+wh.y/2*cosTh)),mb=f(new fabric.Point(_bl.x+wh.x/2*cosTh,_bl.y+wh.x/2*sinTh)),mtr=f(new fabric.Point(_mt.x,_mt.y));var padX=Math.cos(_angle+theta)*this.padding*Math.sqrt(2),padY=Math.sin(_angle+theta)*this.padding*Math.sqrt(2);tl=tl.add(new fabric.Point(-padX,-padY));tr=tr.add(new fabric.Point(padY,-padX));br=br.add(new fabric.Point(padX,padY));bl=bl.add(new fabric.Point(-padY,padX));ml=ml.add(new fabric.Point((-padX-padY)/2,(-padY+padX)/2));mt=mt.add(new fabric.Point((padY-padX)/2,-(padY+padX)/2));mr=mr.add(new fabric.Point((padY+padX)/2,(padY-padX)/2));mb=mb.add(new fabric.Point((padX-padY)/2,(padX+padY)/2));mtr=mtr.add(new fabric.Point((padY-padX)/2,-(padY+padX)/2));this.oCoords={tl:tl,tr:tr,br:br,bl:bl,ml:ml,mt:mt,mr:mr,mb:mb,mtr:mtr};this._setCornerCoords&&this._setCornerCoords();return this}})})();fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){if(this.group){fabric.StaticCanvas.prototype.sendToBack.call(this.group,this)}else{this.canvas.sendToBack(this)}return this},bringToFront:function(){if(this.group){fabric.StaticCanvas.prototype.bringToFront.call(this.group,this)}else{this.canvas.bringToFront(this)}return this},sendBackwards:function(intersecting){if(this.group){fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,intersecting)}else{this.canvas.sendBackwards(this,intersecting)}return this},bringForward:function(intersecting){if(this.group){fabric.StaticCanvas.prototype.bringForward.call(this.group,this,intersecting)}else{this.canvas.bringForward(this,intersecting)}return this},moveTo:function(index){if(this.group){fabric.StaticCanvas.prototype.moveTo.call(this.group,this,index)}else{this.canvas.moveTo(this,index)}return this}});fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var fill=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",stroke=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",strokeWidth=this.strokeWidth?this.strokeWidth:"0",strokeDashArray=this.strokeDashArray?this.strokeDashArray.join(" "):"",strokeLineCap=this.strokeLineCap?this.strokeLineCap:"butt",strokeLineJoin=this.strokeLineJoin?this.strokeLineJoin:"miter",strokeMiterLimit=this.strokeMiterLimit?this.strokeMiterLimit:"4",opacity=typeof this.opacity!=="undefined"?this.opacity:"1",visibility=this.visible?"":" visibility: hidden;",filter=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",stroke,"; ","stroke-width: ",strokeWidth,"; ","stroke-dasharray: ",strokeDashArray,"; ","stroke-linecap: ",strokeLineCap,"; ","stroke-linejoin: ",strokeLineJoin,"; ","stroke-miterlimit: ",strokeMiterLimit,"; ","fill: ",fill,"; ","opacity: ",opacity,";",filter,visibility].join("")},getSvgTransform:function(){var toFixed=fabric.util.toFixed,angle=this.getAngle(),center=this.getCenterPoint(),NUM_FRACTION_DIGITS=fabric.Object.NUM_FRACTION_DIGITS,translatePart="translate("+toFixed(center.x,NUM_FRACTION_DIGITS)+" "+toFixed(center.y,NUM_FRACTION_DIGITS)+")",anglePart=angle!==0?" rotate("+toFixed(angle,NUM_FRACTION_DIGITS)+")":"",scalePart=this.scaleX===1&&this.scaleY===1?"":" scale("+toFixed(this.scaleX,NUM_FRACTION_DIGITS)+" "+toFixed(this.scaleY,NUM_FRACTION_DIGITS)+")",flipXPart=this.flipX?"matrix(-1 0 0 1 0 0) ":"",flipYPart=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[translatePart,anglePart,scalePart,flipXPart,flipYPart].join("")},_createBaseSVGMarkup:function(){var markup=[];if(this.fill&&this.fill.toLive){markup.push(this.fill.toSVG(this,false))}if(this.stroke&&this.stroke.toLive){markup.push(this.stroke.toSVG(this,false))}if(this.shadow){markup.push(this.shadow.toSVG(this))}return markup}});fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(prop){return this.get(prop)!==this.originalState[prop]},this)},saveState:function(options){this.stateProperties.forEach(function(prop){this.originalState[prop]=this.get(prop)},this);if(options&&options.stateProperties){options.stateProperties.forEach(function(prop){this.originalState[prop]=this.get(prop)},this)}return this},setupState:function(){this.originalState={};this.saveState();return this}});(function(){var degreesToRadians=fabric.util.degreesToRadians,isVML=typeof G_vmlCanvasManager!=="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(pointer){if(!this.hasControls||!this.active)return false;var ex=pointer.x,ey=pointer.y,xPoints,lines;for(var i in this.oCoords){if(!this.isControlVisible(i)){continue}if(i==="mtr"&&!this.hasRotatingPoint){continue}if(this.get("lockUniScaling")&&(i==="mt"||i==="mr"||i==="mb"||i==="ml")){continue}lines=this._getImageLines(this.oCoords[i].corner);xPoints=this._findCrossPoints({x:ex,y:ey},lines);if(xPoints!==0&&xPoints%2===1){this.__corner=i;return i}}return false},_setCornerCoords:function(){var coords=this.oCoords,theta=degreesToRadians(this.angle),newTheta=degreesToRadians(45-this.angle),cornerHypotenuse=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,cosHalfOffset=cornerHypotenuse*Math.cos(newTheta),sinHalfOffset=cornerHypotenuse*Math.sin(newTheta),sinTh=Math.sin(theta),cosTh=Math.cos(theta);coords.tl.corner={tl:{x:coords.tl.x-sinHalfOffset,y:coords.tl.y-cosHalfOffset},tr:{x:coords.tl.x+cosHalfOffset,y:coords.tl.y-sinHalfOffset},bl:{x:coords.tl.x-cosHalfOffset,y:coords.tl.y+sinHalfOffset},br:{x:coords.tl.x+sinHalfOffset,y:coords.tl.y+cosHalfOffset}};coords.tr.corner={tl:{x:coords.tr.x-sinHalfOffset,y:coords.tr.y-cosHalfOffset},tr:{x:coords.tr.x+cosHalfOffset,y:coords.tr.y-sinHalfOffset},br:{x:coords.tr.x+sinHalfOffset,y:coords.tr.y+cosHalfOffset},bl:{x:coords.tr.x-cosHalfOffset,y:coords.tr.y+sinHalfOffset}};coords.bl.corner={tl:{x:coords.bl.x-sinHalfOffset,y:coords.bl.y-cosHalfOffset},bl:{x:coords.bl.x-cosHalfOffset,y:coords.bl.y+sinHalfOffset},br:{x:coords.bl.x+sinHalfOffset,y:coords.bl.y+cosHalfOffset},tr:{x:coords.bl.x+cosHalfOffset,y:coords.bl.y-sinHalfOffset}};coords.br.corner={tr:{x:coords.br.x+cosHalfOffset,y:coords.br.y-sinHalfOffset},bl:{x:coords.br.x-cosHalfOffset,y:coords.br.y+sinHalfOffset},br:{x:coords.br.x+sinHalfOffset,y:coords.br.y+cosHalfOffset},tl:{x:coords.br.x-sinHalfOffset,y:coords.br.y-cosHalfOffset}};coords.ml.corner={tl:{x:coords.ml.x-sinHalfOffset,y:coords.ml.y-cosHalfOffset},tr:{x:coords.ml.x+cosHalfOffset,y:coords.ml.y-sinHalfOffset},bl:{x:coords.ml.x-cosHalfOffset,y:coords.ml.y+sinHalfOffset},br:{x:coords.ml.x+sinHalfOffset,y:coords.ml.y+cosHalfOffset}};coords.mt.corner={tl:{x:coords.mt.x-sinHalfOffset,y:coords.mt.y-cosHalfOffset},tr:{x:coords.mt.x+cosHalfOffset,y:coords.mt.y-sinHalfOffset},bl:{x:coords.mt.x-cosHalfOffset,y:coords.mt.y+sinHalfOffset},br:{x:coords.mt.x+sinHalfOffset,y:coords.mt.y+cosHalfOffset}};coords.mr.corner={tl:{x:coords.mr.x-sinHalfOffset,y:coords.mr.y-cosHalfOffset},tr:{x:coords.mr.x+cosHalfOffset,y:coords.mr.y-sinHalfOffset},bl:{x:coords.mr.x-cosHalfOffset,y:coords.mr.y+sinHalfOffset},br:{x:coords.mr.x+sinHalfOffset,y:coords.mr.y+cosHalfOffset}};coords.mb.corner={tl:{x:coords.mb.x-sinHalfOffset,y:coords.mb.y-cosHalfOffset},tr:{x:coords.mb.x+cosHalfOffset,y:coords.mb.y-sinHalfOffset},bl:{x:coords.mb.x-cosHalfOffset,y:coords.mb.y+sinHalfOffset},br:{x:coords.mb.x+sinHalfOffset,y:coords.mb.y+cosHalfOffset}};coords.mtr.corner={tl:{x:coords.mtr.x-sinHalfOffset+sinTh*this.rotatingPointOffset,y:coords.mtr.y-cosHalfOffset-cosTh*this.rotatingPointOffset},tr:{x:coords.mtr.x+cosHalfOffset+sinTh*this.rotatingPointOffset,y:coords.mtr.y-sinHalfOffset-cosTh*this.rotatingPointOffset},bl:{x:coords.mtr.x-cosHalfOffset+sinTh*this.rotatingPointOffset,y:coords.mtr.y+sinHalfOffset-cosTh*this.rotatingPointOffset},br:{x:coords.mtr.x+sinHalfOffset+sinTh*this.rotatingPointOffset,y:coords.mtr.y+cosHalfOffset-cosTh*this.rotatingPointOffset}}},drawBorders:function(ctx){if(!this.hasBorders)return this;var padding=this.padding,padding2=padding*2,strokeWidth=~~(this.strokeWidth/2)*2; ctx.save();ctx.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;ctx.strokeStyle=this.borderColor;var scaleX=1/this._constrainScale(this.scaleX),scaleY=1/this._constrainScale(this.scaleY);ctx.lineWidth=1/this.borderScaleFactor;var vpt=this.getViewportTransform(),wh=fabric.util.transformPoint(new fabric.Point(this.getWidth(),this.getHeight()),vpt,true),sxy=fabric.util.transformPoint(new fabric.Point(scaleX,scaleY),vpt,true),w=wh.x,h=wh.y,sx=sxy.x,sy=sxy.y;if(this.group){w=w*this.group.scaleX;h=h*this.group.scaleY}ctx.strokeRect(~~(-(w/2)-padding-strokeWidth/2*sx)-.5,~~(-(h/2)-padding-strokeWidth/2*sy)-.5,~~(w+padding2+strokeWidth*sx)+1,~~(h+padding2+strokeWidth*sy)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var rotateHeight=(this.flipY?h+strokeWidth*sx+padding*2:-h-strokeWidth*sy-padding*2)/2;ctx.beginPath();ctx.moveTo(0,rotateHeight);ctx.lineTo(0,rotateHeight+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset));ctx.closePath();ctx.stroke()}ctx.restore();return this},drawControls:function(ctx){if(!this.hasControls)return this;var size=this.cornerSize,size2=size/2,strokeWidth2=~~(this.strokeWidth/2),wh=fabric.util.transformPoint(new fabric.Point(this.getWidth(),this.getHeight()),this.getViewportTransform(),true),width=wh.x,height=wh.y,left=-(width/2),top=-(height/2),padding=this.padding,scaleOffset=size2,scaleOffsetSize=size2-size,methodName=this.transparentCorners?"strokeRect":"fillRect";ctx.save();ctx.lineWidth=1;ctx.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1;ctx.strokeStyle=ctx.fillStyle=this.cornerColor;this._drawControl("tl",ctx,methodName,left-scaleOffset-strokeWidth2-padding,top-scaleOffset-strokeWidth2-padding);this._drawControl("tr",ctx,methodName,left+width-scaleOffset+strokeWidth2+padding,top-scaleOffset-strokeWidth2-padding);this._drawControl("bl",ctx,methodName,left-scaleOffset-strokeWidth2-padding,top+height+scaleOffsetSize+strokeWidth2+padding);this._drawControl("br",ctx,methodName,left+width+scaleOffsetSize+strokeWidth2+padding,top+height+scaleOffsetSize+strokeWidth2+padding);if(!this.get("lockUniScaling")){this._drawControl("mt",ctx,methodName,left+width/2-scaleOffset,top-scaleOffset-strokeWidth2-padding);this._drawControl("mb",ctx,methodName,left+width/2-scaleOffset,top+height+scaleOffsetSize+strokeWidth2+padding);this._drawControl("mr",ctx,methodName,left+width+scaleOffsetSize+strokeWidth2+padding,top+height/2-scaleOffset);this._drawControl("ml",ctx,methodName,left-scaleOffset-strokeWidth2-padding,top+height/2-scaleOffset)}if(this.hasRotatingPoint){this._drawControl("mtr",ctx,methodName,left+width/2-scaleOffset,this.flipY?top+height+this.rotatingPointOffset-this.cornerSize/2+strokeWidth2+padding:top-this.rotatingPointOffset-this.cornerSize/2-strokeWidth2-padding)}ctx.restore();return this},_drawControl:function(control,ctx,methodName,left,top){var size=this.cornerSize;if(this.isControlVisible(control)){isVML||this.transparentCorners||ctx.clearRect(left,top,size,size);ctx[methodName](left,top,size,size)}},isControlVisible:function(controlName){return this._getControlsVisibility()[controlName]},setControlVisible:function(controlName,visible){this._getControlsVisibility()[controlName]=visible;return this},setControlsVisibility:function(options){options||(options={});for(var p in options){this.setControlVisible(p,options[p])}return this},_getControlsVisibility:function(){if(!this._controlsVisibility){this._controlsVisibility={tl:true,tr:true,br:true,bl:true,ml:true,mt:true,mr:true,mb:true,mtr:true}}return this._controlsVisibility}})})();fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(object,callbacks){callbacks=callbacks||{};var empty=function(){},onComplete=callbacks.onComplete||empty,onChange=callbacks.onChange||empty,_this=this;fabric.util.animate({startValue:object.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(value){object.set("left",value);_this.renderAll();onChange()},onComplete:function(){object.setCoords();onComplete()}});return this},fxCenterObjectV:function(object,callbacks){callbacks=callbacks||{};var empty=function(){},onComplete=callbacks.onComplete||empty,onChange=callbacks.onChange||empty,_this=this;fabric.util.animate({startValue:object.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(value){object.set("top",value);_this.renderAll();onChange()},onComplete:function(){object.setCoords();onComplete()}});return this},fxRemove:function(object,callbacks){callbacks=callbacks||{};var empty=function(){},onComplete=callbacks.onComplete||empty,onChange=callbacks.onChange||empty,_this=this;fabric.util.animate({startValue:object.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){object.set("active",false)},onChange:function(value){object.set("opacity",value);_this.renderAll();onChange()},onComplete:function(){_this.remove(object);onComplete()}});return this}});fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]==="object"){var propsToAnimate=[],prop,skipCallbacks;for(prop in arguments[0]){propsToAnimate.push(prop)}for(var i=0,len=propsToAnimate.length;i');return reviver?reviver(markup.join("")):markup.join("")},complexity:function(){return 1}});fabric.Line.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" "));fabric.Line.fromElement=function(element,options){var parsedAttributes=fabric.parseAttributes(element,fabric.Line.ATTRIBUTE_NAMES),points=[parsedAttributes.x1||0,parsedAttributes.y1||0,parsedAttributes.x2||0,parsedAttributes.y2||0];return new fabric.Line(points,extend(parsedAttributes,options))};fabric.Line.fromObject=function(object){var points=[object.x1,object.y1,object.x2,object.y2];return new fabric.Line(points,object)};function makeEdgeToOriginGetter(propertyNames,originValues){var origin=propertyNames.origin,axis1=propertyNames.axis1,axis2=propertyNames.axis2,dimension=propertyNames.dimension,nearest=originValues.nearest,center=originValues.center,farthest=originValues.farthest;return function(){switch(this.get(origin)){case nearest:return Math.min(this.get(axis1),this.get(axis2));case center:return Math.min(this.get(axis1),this.get(axis2))+.5*this.get(dimension);case farthest:return Math.max(this.get(axis1),this.get(axis2))}}}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={}),piBy2=Math.PI*2,extend=fabric.util.object.extend;if(fabric.Circle){fabric.warn("fabric.Circle is already defined.");return}fabric.Circle=fabric.util.createClass(fabric.Object,{type:"circle",radius:0,initialize:function(options){options=options||{};this.set("radius",options.radius||0);this.callSuper("initialize",options)},_set:function(key,value){this.callSuper("_set",key,value);if(key==="radius"){this.setRadius(value)}return this},toObject:function(propertiesToInclude){return extend(this.callSuper("toObject",propertiesToInclude),{radius:this.get("radius")})},toSVG:function(reviver){var markup=this._createBaseSVGMarkup();markup.push("');return reviver?reviver(markup.join("")):markup.join("")},_render:function(ctx,noTransform){ctx.beginPath();ctx.globalAlpha=this.group?ctx.globalAlpha*this.opacity:this.opacity;ctx.arc(noTransform?this.left:0,noTransform?this.top:0,this.radius,0,piBy2,false);ctx.closePath();this._renderFill(ctx);this.stroke&&this._renderStroke(ctx)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(value){this.radius=value;this.set("width",value*2).set("height",value*2)},complexity:function(){return 1}});fabric.Circle.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("cx cy r".split(" "));fabric.Circle.fromElement=function(element,options){options||(options={});var parsedAttributes=fabric.parseAttributes(element,fabric.Circle.ATTRIBUTE_NAMES);if(!isValidRadius(parsedAttributes)){throw new Error("value of `r` attribute is required and can not be negative")}if("left"in parsedAttributes){parsedAttributes.left-=options.width/2||0}if("top"in parsedAttributes){parsedAttributes.top-=options.height/2||0}var obj=new fabric.Circle(extend(parsedAttributes,options));obj.cx=parseFloat(element.getAttribute("cx"))||0;obj.cy=parseFloat(element.getAttribute("cy"))||0;return obj};function isValidRadius(attributes){return"radius"in attributes&&attributes.radius>0}fabric.Circle.fromObject=function(object){return new fabric.Circle(object)}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={});if(fabric.Triangle){fabric.warn("fabric.Triangle is already defined");return}fabric.Triangle=fabric.util.createClass(fabric.Object,{type:"triangle",initialize:function(options){options=options||{};this.callSuper("initialize",options);this.set("width",options.width||100).set("height",options.height||100)},_render:function(ctx){var widthBy2=this.width/2,heightBy2=this.height/2;ctx.beginPath();ctx.moveTo(-widthBy2,heightBy2);ctx.lineTo(0,-heightBy2);ctx.lineTo(widthBy2,heightBy2);ctx.closePath();this._renderFill(ctx);this._renderStroke(ctx)},_renderDashedStroke:function(ctx){var widthBy2=this.width/2,heightBy2=this.height/2;ctx.beginPath();fabric.util.drawDashedLine(ctx,-widthBy2,heightBy2,0,-heightBy2,this.strokeDashArray);fabric.util.drawDashedLine(ctx,0,-heightBy2,widthBy2,heightBy2,this.strokeDashArray);fabric.util.drawDashedLine(ctx,widthBy2,heightBy2,-widthBy2,heightBy2,this.strokeDashArray);ctx.closePath()},toSVG:function(reviver){var markup=this._createBaseSVGMarkup(),widthBy2=this.width/2,heightBy2=this.height/2,points=[-widthBy2+" "+heightBy2,"0 "+-heightBy2,widthBy2+" "+heightBy2].join(",");markup.push("');return reviver?reviver(markup.join("")):markup.join("")},complexity:function(){return 1}});fabric.Triangle.fromObject=function(object){return new fabric.Triangle(object)}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={}),piBy2=Math.PI*2,extend=fabric.util.object.extend;if(fabric.Ellipse){fabric.warn("fabric.Ellipse is already defined.");return}fabric.Ellipse=fabric.util.createClass(fabric.Object,{type:"ellipse",rx:0,ry:0,initialize:function(options){options=options||{};this.callSuper("initialize",options);this.set("rx",options.rx||0);this.set("ry",options.ry||0);this.set("width",this.get("rx")*2);this.set("height",this.get("ry")*2)},toObject:function(propertiesToInclude){return extend(this.callSuper("toObject",propertiesToInclude),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(reviver){var markup=this._createBaseSVGMarkup();markup.push("');return reviver?reviver(markup.join("")):markup.join("")},render:function(ctx,noTransform){if(this.rx===0||this.ry===0)return;return this.callSuper("render",ctx,noTransform)},_render:function(ctx,noTransform){ctx.beginPath();ctx.save();ctx.globalAlpha=this.group?ctx.globalAlpha*this.opacity:this.opacity;if(this.transformMatrix&&this.group){ctx.translate(this.cx,this.cy)}ctx.transform(1,0,0,this.ry/this.rx,0,0);ctx.arc(noTransform?this.left:0,noTransform?this.top:0,this.rx,0,piBy2,false);ctx.restore();this._renderFill(ctx);this._renderStroke(ctx)},complexity:function(){return 1}});fabric.Ellipse.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" "));fabric.Ellipse.fromElement=function(element,options){options||(options={});var parsedAttributes=fabric.parseAttributes(element,fabric.Ellipse.ATTRIBUTE_NAMES),cx=parsedAttributes.left,cy=parsedAttributes.top;if("left"in parsedAttributes){parsedAttributes.left-=options.width/2||0}if("top"in parsedAttributes){parsedAttributes.top-=options.height/2||0}var ellipse=new fabric.Ellipse(extend(parsedAttributes,options));ellipse.cx=cx||0;ellipse.cy=cy||0;return ellipse};fabric.Ellipse.fromObject=function(object){return new fabric.Ellipse(object)}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={}),extend=fabric.util.object.extend;if(fabric.Rect){console.warn("fabric.Rect is already defined");return}var stateProperties=fabric.Object.prototype.stateProperties.concat();stateProperties.push("rx","ry","x","y");fabric.Rect=fabric.util.createClass(fabric.Object,{stateProperties:stateProperties,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(options){options=options||{};this.callSuper("initialize",options);this._initRxRy();this.x=options.x||0;this.y=options.y||0},_initRxRy:function(){if(this.rx&&!this.ry){this.ry=this.rx}else if(this.ry&&!this.rx){this.rx=this.ry}},_render:function(ctx){if(this.width===1&&this.height===1){ctx.fillRect(0,0,1,1);return}var rx=this.rx?Math.min(this.rx,this.width/2):0,ry=this.ry?Math.min(this.ry,this.height/2):0,w=this.width,h=this.height,x=-w/2,y=-h/2,isInPathGroup=this.group&&this.group.type==="path-group",isRounded=rx!==0||ry!==0,k=1-.5522847498;ctx.beginPath();ctx.globalAlpha=isInPathGroup?ctx.globalAlpha*this.opacity:this.opacity;if(this.transformMatrix&&isInPathGroup){ctx.translate(this.width/2+this.x,this.height/2+this.y)}if(!this.transformMatrix&&isInPathGroup){ctx.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y)}ctx.moveTo(x+rx,y);ctx.lineTo(x+w-rx,y);isRounded&&ctx.bezierCurveTo(x+w-k*rx,y,x+w,y+k*ry,x+w,y+ry);ctx.lineTo(x+w,y+h-ry);isRounded&&ctx.bezierCurveTo(x+w,y+h-k*ry,x+w-k*rx,y+h,x+w-rx,y+h);ctx.lineTo(x+rx,y+h);isRounded&&ctx.bezierCurveTo(x+k*rx,y+h,x,y+h-k*ry,x,y+h-ry);ctx.lineTo(x,y+ry);isRounded&&ctx.bezierCurveTo(x,y+k*ry,x+k*rx,y,x+rx,y);ctx.closePath();this._renderFill(ctx);this._renderStroke(ctx)},_renderDashedStroke:function(ctx){var x=-this.width/2,y=-this.height/2,w=this.width,h=this.height;ctx.beginPath();fabric.util.drawDashedLine(ctx,x,y,x+w,y,this.strokeDashArray);fabric.util.drawDashedLine(ctx,x+w,y,x+w,y+h,this.strokeDashArray);fabric.util.drawDashedLine(ctx,x+w,y+h,x,y+h,this.strokeDashArray);fabric.util.drawDashedLine(ctx,x,y+h,x,y,this.strokeDashArray);ctx.closePath()},_normalizeLeftTopProperties:function(parsedAttributes){if("left"in parsedAttributes){this.set("left",parsedAttributes.left+this.getWidth()/2)}this.set("x",parsedAttributes.left||0);if("top"in parsedAttributes){this.set("top",parsedAttributes.top+this.getHeight()/2)}this.set("y",parsedAttributes.top||0);return this},toObject:function(propertiesToInclude){var object=extend(this.callSuper("toObject",propertiesToInclude),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});if(!this.includeDefaultValues){this._removeDefaultValues(object)}return object},toSVG:function(reviver){var markup=this._createBaseSVGMarkup();markup.push("');return reviver?reviver(markup.join("")):markup.join("")},complexity:function(){return 1}});fabric.Rect.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" "));function _setDefaultLeftTopValues(attributes){attributes.left=attributes.left||0;attributes.top=attributes.top||0;return attributes}fabric.Rect.fromElement=function(element,options){if(!element){return null}var parsedAttributes=fabric.parseAttributes(element,fabric.Rect.ATTRIBUTE_NAMES);parsedAttributes=_setDefaultLeftTopValues(parsedAttributes);var rect=new fabric.Rect(extend(options?fabric.util.object.clone(options):{},parsedAttributes));rect._normalizeLeftTopProperties(parsedAttributes);return rect};fabric.Rect.fromObject=function(object){return new fabric.Rect(object)}})(typeof exports!=="undefined"?exports:this);(function(global){"use strict";var fabric=global.fabric||(global.fabric={}),toFixed=fabric.util.toFixed;if(fabric.Polyline){fabric.warn("fabric.Polyline is already defined");return}fabric.Polyline=fabric.util.createClass(fabric.Object,{type:"polyline",points:null,initialize:function(points,options,skipOffset){options=options||{};this.set("points",points);this.callSuper("initialize",options);this._calcDimensions(skipOffset)},_calcDimensions:function(skipOffset){return fabric.Polygon.prototype._calcDimensions.call(this,skipOffset)},toObject:function(propertiesToInclude){return fabric.Polygon.prototype.toObject.call(this,propertiesToInclude)},toSVG:function(reviver){var points=[],markup=this._createBaseSVGMarkup();for(var i=0,len=this.points.length;i');return reviver?reviver(markup.join("")):markup.join("")},_render:function(ctx){var point;ctx.beginPath();ctx.moveTo(this.points[0].x,this.points[0].y);for(var i=0,len=this.points.length;i');return reviver?reviver(markup.join("")):markup.join("")},_render:function(ctx){var point;ctx.beginPath();ctx.moveTo(this.points[0].x,this.points[0].y);for(var i=0,len=this.points.length;i"},toObject:function(propertiesToInclude){var o=extend(this.callSuper("toObject",propertiesToInclude),{path:this.path.map(function(item){return item.slice()}),pathOffset:this.pathOffset});if(this.sourcePath){o.sourcePath=this.sourcePath}if(this.transformMatrix){o.transformMatrix=this.transformMatrix}return o},toDatalessObject:function(propertiesToInclude){var o=this.toObject(propertiesToInclude);if(this.sourcePath){o.path=this.sourcePath}delete o.sourcePath;return o},toSVG:function(reviver){var chunks=[],markup=this._createBaseSVGMarkup();for(var i=0,len=this.path.length;i',"","");return reviver?reviver(markup.join("")):markup.join("")},complexity:function(){return this.path.length},_parsePath:function(){var result=[],coords=[],currentPath,parsed,re=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/gi,match,coordsStr;for(var i=0,coordsParsed,len=this.path.length;icommandLength){for(var k=1,klen=coordsParsed.length;kP)O*Kcy3F453W6$Xl|~pFfMTG8&difoAZ_p z#3;-2e}Db*hr%7~5T4ULCo?Mde;i^9atDM;gp514Vm{MlzQUg{37WT+GS*&)m^h zV)qtnHl1CKx{C~)8~2}4*^%Qyie{I`vIVBvM zgmvsnO=a?#no4yPs0cVp;E)%u?RImRg6AV?<#C0JQ!Fsl*}VatVatj|mJPaK#i@Rvxel5~Mbrbr~t6!l-8_yO(9 z-MMK$MB4Bc++Y6u?T_=UJMN9L3S}onGg}4pUDgE|a}$VX)5o9%f78B_LSz_KEJSvY zZXvUc5VUUjF4QF$H0<#@EGsLJtKPP5*K_OeNT3a(DT(UL}^({65}pWb{^`wKf*>P`k-aAKB5lWDYf z^zd$S_raZ~FQ2?QfBx~=o@&nCk3T(r@%+hNR69KU+r1};hfm);-BWGYYu1~GhtGb9 z_Ed@JaMc4-8hpUsuLqZl)KFv#-$!zXC#G}!y7 z@+V*PVNHr#U*WdU8kQ_6q=+j@=EUT@S{u2*eTlKO7 zfN=IPFG*%e^Pt#)1~`eqU$s?4s;?l-WLjhADn~)ugA1Zv4Y$?3{H(geYbn05jjraS z${+4lb(!j2Hl&UfRq!elI{9Jb`nr=NrGKKUOGkbv87=KRq0skb{Zb&=?=F?&(h4>? zlfj!Qe<;k0iX!i|o_i%>+y}YW9#@n6a(J$_MvhL#>V#Ol7doPK(gS<{H&a#HB%rhU z6jJ0R!|rrIhd_6H?1CFJUq596f+}M9-bu%yH}z_l{JLtz3kt}_aaQZwb5rPCLI03_ zMEl<7P|(ygSh}@!KBW)9e|bNvP?br;h1%2)f3D81KxMIGd~!uou?L(y?gCXv*ovsH zTC+2Jm^M1K+K_uUe=Z7Yhq4A)4oVtc@STRkb(nbxKg_lAeE{&oNqGrBskE#dT!%*6 zIF7H#mxZ>;wWjV}N@L#tW;zF+`?4(Of@$aa<$Q=?=YIEmXsP^-_^{g4ZfgDeT)f8p zf8WZP)dFY2NWYl|cvAKKr>)A&35Y>3!p`fnl3-`kJS&(5;f0#M!4UQc1_zM(Vwf+o ziRuymR-)X$NA!mW+Px~hr>__Uk)1*p?Fc?|1zMFu40v#U&G{pLGSLhwT_gIBqYu()3$>duP*Su3- z&}PNwAXpwRxMcwya#s)p@pGdKelrT46SXx5(L*e_vzGa;n+J@)8|CB+_Gvf2e+(5D z*`dRKPuY}N_cF1$S?r7k`ehYrN0;k;WKRk>No&(j7BfP#@(_NQRI_df26WVQNwk= zMzsP@e_s}CJi*+uXywMwX*TH(N1JDgKc$kOZ{`cDcnW4AI>2k`DZQ^GD71A@B^4WMlgx--Q^8Rx1q_N5QOhAOeC@cXHB@8?yx z6`vm4qK&CP=%obwG%JWBe;}%2S3a5y9t{RqFR1tm?GF%+FZ9xa!3F2nmx=zhvJ{Eu zVrN}dAC>T$Xj)Pyxvnw;WD1QUOcyFV29d)|XKKpOQ>WN;hBfxt=6Xb|colhTLMtU; zERI%L|Ii1Le5bYkz;%tS{BCS*yOpj}?8a;%msMrS@!e{m06F~TUdd8e*$$vA=W zF{vw)s>ZO*`?i2pqi0ezEZ92+nZ+McsOl}?cniOdjR)mR9@FrW2!pI9I+nEws~Vz! z(Jw33^ouo3u@2PASFGRfMMi-x=iHN-3|0H~Nn`}dU$!i$&S3D^D0 zr3Imm!`lKl6wxPp4izU0kz6=jh`bl&XABRj?5JU_pxJG$l-Z^8UVN;?Sd9cBORk-M z3W#I36!!b0X`ad5n7fd-9e3ZT#KwAqoq`jrI-7sLf7ej|`%nBA{`Ug@jT`|xU_86F zre-g)b2h@$yM^|s%G*WF$pqVKDhQ9foSnoiw{ps@RJk(Yu{-ZqEG-s$axZC6nC2g! zAG8wG5ZKP*&NU3{Ga*Q@*JuSUaD%b9#lM49q(ifk^{^IOgZmEjQ$&9uuXf7DOs12u zJk;N&f40L5O#DR7gy%0(!|`M|SLEFGuhUgI5Jlr~Vnhk-2FYeJMIl z%BN5ATMEhc@d>>%hwp;)4Bx=C{8~NXC+YkbV*gy_A=dThy{@n*H|}us4W5c_&w&O0 z<1sU}?Q|?IE%a02WsA1>eC7KRO^fU=as!h?f0iZnA+Ec~@%Yj#=+?9K^c zbRwf+O68h{y6ucRE;*VrV7<}Yv30dcfEU`9@AT?JJJ9|<(NVHLb-3NM+0zFZz2keI zv|t6p@H^RtcP{7|o_$DPmor{0j~C*R>DCnsf!Dv;;wkx~liIF@-qSW=z=H1mNZ(IX#AhlSvTk7YO{b@DL z&!4;VA=sp=q&fD$OAfk8?ubFhK301kf08NC=0h4H)C0C;)dgtD!BQS*E`SZIQB*YviUIKsTvTwPN}R^meu_atQ6)q+ zIr`_Rt3biEpvZPmAuMrUp-O#bfA_)lyX#vX*}aG9q{{d$we~^z)z0o8ca&uP60mq# zhp!}Wmc;}HBLob}gyKW$0I!{A_2I)1Emq=py!MVd&Ni}rNBmKrF0tpA$%-!H6P8Y_ zh;-PJ{ip4(ST3M`T9yl8Mt-ZYSZ@-lln{4T+e@$f(koNixC`<`l9;xGe;vd_j!dl) z)WYaoplTS147Y@jSq-tatW*$jRo}CO$lhs5f2SMf2v+g6!#U-xvtsBv%=#Yq}Z1SaS2ezj){_OG)H>I^NA#=mHHbi=r!G7dBm3ZE`Y5s9bzhR zqNBvd8|`_xGBr|HGbLh29%xj0M_;h=vGrpdjNMfKe)YCkl=vE0f6}aP@D;zMPrfm& zUc2`c0V@|MNQX#)W1R1DyQ)0kr^8hSV!k#SAvem*f)dff^{Yu>|u zTKDfKdyV?NII@sn42eQu`{dN7KAz6e&85YHW$iy6mKWMAuH8&7;q}dvt9cG(K{$`l z%-Kz0!$zIRpX%JD*oUoCbY6cx&DGgzsFtERcSj(rul@fZf3LK8->8{nH5;?}kHcj) zdV_uzz8Qk|D(uyTNq93Iss05;NF&ML4`&5XpDT*SIlfy5y7%Mbo%A#$GXU$~v^#6p zO+2yNPu9J*<3Rq|2L&swt}#n=qO+-s&3k`eE<-k*o=xf{Q^p0NgW40Xd1BJhy2CPd zp&vR6c5p!#e^EKig|}@b0r8QpPALigIWA-zvjZcWJks}9B29ft*BkjIgg7JTJBE;o z8gM2hrYCaXxy(SwZ{CaWW7w`jS_8>tj&= zynQ{qn54BP2k?-IP0|-|;o~x_$AGmrT`ZV7N;cAAnucwFHag?)V4&1oA_r&t<5o02Rn1{zBPRLtoV zikHK(!jxDKebuq(i((`0`kIXcXzkBVc?|&qf9b)K=oM!aoSXnXaOlU>z(%H*@=|}g zfWZipPE8GjWfKm3B7$v5Crk52cmtbFd=scv7Wik3@CNzNwhey@IsF<+{x@V9sSt7LCskd?A ze{cGIz1KpS`(*1r}%wnNnKqc;TZnf8|$3HVBZ>^U(B4$xvw2wh$RVRG3QL{s{Yc z$8KjPiPVC65!s$42bn6Pw4+sz9ceypm$qEB;7BvJ0|lj-E!#XrbX%xq(kxufHi)%b zCTyu36LSxwrP4=<=tB$TbYky>{J!?On6G-o9g;UCJorw@Nku!ZXK13LO@9(Cf3Wkq z=nCs1@z@5EH!5S!CwHJac)U>w>zz^ovG*>fOo3NDUb~$DlO)IB;8R1$A}Owc>TVxi0BdBOs^O+bFz67jNsQwY*&O znY%)MDB*KtLONKEHv*V+NLc2sf3Ra`1+a1@8cqA};g%c@v2P>rs%=kww5BC&K^f>O zj#a+ig!I@)3M*8y+Kls<+`&Na1)7`mR+|s6iS7z+bpizOUidckDb*QKEa8sJ;Eu_N zRhHb}m-)`azv(1bBd3^NJ8pGkSs2eZQ=0!Iv)f7?*SCq?`plk(2YR^KS^wY>O!o_a1BlK0K~BaaSSZdL+3WxuUFmCXr<1DcU+#i<1md@VOXAjMg^V5 z5j&gOt$Uq2(54XGwsd`Ye^`-AWmOYw4cX&h!vurHcAX(FBDZPVKu(VOE7K_sfY8|BL zxP&59tAa#P#CTjhQw2*~rEC!ao~GC{o!uG3tnO|pLf#50mLMy&%!Ey7q z7p=8Xn~RWAVF7vsC#n>0e^t3m3FveTt7l67$McUmAz#fUf0%}`0C+4*{p;n5E>|-Z zRaHqi;E`WWNP!-t;`hF8RPoo^&`%kZh?9|T6oa8N1F>!EeT3%-wR|^5T^i6KXbplR z@}h&gg%K>1o47A0|S83Q+ucvMcEBy%41l3_Hu2#y>~V*+6Ci8lrT zLqPWy+6^}2f1+2cfJh%UjvDP6q4ywGHK>OGph6-CiHJiUS&CQEVV5qUtL|cq7;`($ zR)r7Qx7%!)`YowCRt=(EU24~C$dh#U-)ISXKAzp_VBJ5>rmfR9seEa%$ zSEH^I3o7-wVAx^fvk|K}wjO#XGj;@_aZ$tJ1<>8O4WATDN*(PC;U%3fJwF@TMB=)j z)XTH(f4qPB<21)Hr5?yD`qJnL*b0oxfVy90V{%vAl>y!1gb0thn=hF_i8&$0MlYzsEvXqF<{S(&ZaL0_?kq~u*+Ho{jV zh3(bR#kFp0svmdiS8+{dW*@-qLV61#e{0g^T{ucSbO=~miyqUx2f8{&Ca&acmM)$Y z%^Cd@jfg{!mYl>xPIP)D!Kn;z8)^*J58ven2vZ}wPxX12M0ynrFy&d;+o|LAZ!jRc z<06hE!cVSjFRJ=fbHyLEO=lhcP6kiZd>;hxnJd}pY(;5!QmGW%o|G3>Rg8+Ie?y@5 zuo#%3h4&O@)P&7*zyROmZRz47I39Qxi}|p3wNQH)@=+unckfV!7%XxFq!;X*(g2=7 zYm3&nh31-pb(RB2)eQ{{T{IYeP+NP1>>ITWdDd)s?Q$SIjI<+Z>eSD=^@hXIJgd=c z86`5r!i9|hN|`gh4r@oaZ$PvTf3M1M_q~35^V7syKY0|OLqm_rh!5fWhU7|Q<4c=ZpYRz z>>}To(4#m_Fl`!6eDTb3xkld36vHreR7Aj1t{=EJOsyAhQFa380A*OAV$m<&?RZW| zHr8qbIv1fTn|swhT0yhaf3m)^Bj$x!zYwvF&g3~7GeB@-h{Ah!egS_5FB`}sU`4-* zKf9U@j9NT5eyk`{dbTntJ}U}d3=tgQL^|p7V|z>XE)2*hvDb*AF#D~;?B@{}@nlQ8JYHrV3e}fF0sK#3{r{9|H zX!No)N|%0mZh`b!4jxy_N9Ps-+yInMyz(ZMOs(>kfWqnNP@QuZ{ma5>b%XUa*J_^} zdNmqNl(Vu>kM}aw@T?u`cxF{ulsJ}J?vTEvmeO%``5Sb_TH_`>(m?ou&j{*9}`j@XMs75yMP>Hw-_BIg=a8VnYe~J}mz2<@}d!-H@bXDj- z<)ynudWn}_k5N{ggZb&a-Aa1%_Pu1>Yk!sWM(z8_c+~znS&Z6$Mn@9*Wnk)^Yjt|! zhHY`*^g3CNtjhwA8?mGi=;WH{{=PeFpG1?|Jj;jwP>WwQ$?R|OGnc=`&yV)E_&G7Z zPm{n)$l|-qf8KC1U?q0k5nZ6k|ETh(AK}e8)xfMbd4=C@k&r?FHLnW8#1=Jvt#&L; zFJqn3VD!3U>5rFLHu8%94brxkUjS>P%jQoa9*dU}Z#}DE_q!fd_V*)&JyNq6GvjOg zgFc8tHC-q{;%YAH`IZvm&gOFX?!Xj!s=l_Bn9f1He@Lbcrr=AP_~f!Xx!787eyL7{ zw)|`O#C^bWW06xu-=~F?I+T=;bY*9!g_Kh8pJu7|9RelhPu1 z0>Yk3ov#pBVL;N-oYJ1aIg%EWM1i%pPUf!UEVFi9PP|gLUr}~NP&zMnMX+IA*#X6t zrDazPf1kX%Pz8krhLS&NjoDDNe3{u$=yog321KQcjcI~&3$B+Nm2Ive7>=*@LRnZ6 zaYFOT5JH|n0-v^^<)E_S7D6Dgi569%o60a200rVgp2d%SScVfb1s?qNn(2DA%=|V& zb|nkSBibJlPk;=fWO*z0F6BOZ`hO0Bty4F{f2Zzba%UdQjfP|n*NLoR4?13VN2BRSI%W3NNf_Q&?C)plK!pYuPsu}0 ze=)^qizIq_;-|%pkh?7D*@fP$zw&%Qy5k zs2}vR{5vv7X1I^@SzqB8~l&cu84r^;#;+b^&vD69= zMPt{1q~r}KE58J!HN4YSFlhH7`Al1&i6qT&nt|+7YR%%~?y5(OrZuuG0=fp)nxn{> z$6D4=40)>!rMi>Bh@DhD;=`GJ{H?|>1Q2>A&h08Ffh1kqUUn0B=&VJ&xqmS>oA8R^ z{Ay&Ha|!pVU~qs!+@KPNZc@h6!SH-2)zf9hgbb(E^z5OPUYNc;u2{zKa>AC6&ceW; z{zCMU-=zvq7359-6JPj->I|kHf1Ab|r%$1>F3@oh=vV{cqXE%~`qH?>na-SyRVP@R z^pED%VeA;iHtQ^Y0pY8-eo}}d%ne<%WU;eK=t1m{hO;+Qqy8l)g(^)t*P%`puC8(Q z8-DQI`s`*I=6IRdV0>0sHQAAtsz>nMZpFy!6<>}-xl7kkv_$)Ise?p2G4t+-P2TYSw z$k)d=9oNdcv*#m|3#>a6&%FID&g1O)vRHw%XK*C_09R?p_@%TsuQ1FhPqUx@hiv$!HA=3yHqmXB~sOqMo0Q(jBF_ zf*q%6nXW(~78FRzf8YR@Mayq=$s-&Kzr}9;e`514Vsmm7tURD#9gBsTQS7gb?1bHu;v^ z{?44&M&UDCS{!ZE5lBEIDVsCSx=dWX-Nxw2xL!R4CfndNe{Y*oLHI+#NB1fF@b=e0 zqXV+1Jl?NgJ8sx3qO1|=vN?Pjm`7&IGOCSGcrP7sC|umx`U-d`f_RC~;1WHG@e^p$ zDM4GY1zlQ8?++BRMC$-yFv-FC1a2`48>jDV)UE>LyGu5!fSA=fJK%k5y>DBeKk%KNBq%Ew1g0>&Z?aeds;sDL;WkWH zDkMN%>D8SLK_>Ma$>@1KqX2e=A$ZtugK*exM0>SX)>gFShvy z<8_zTEVBR0=8Ux^L1OvT6r4{ zgc($%fA~TS;^AeIkXkWDzR^y6Xkqp26x(s^s1O(vOIzE}uz`DBI$RGnQ5*36yug*h zTvfc{ot9$125NF+olsBRijBxmbAZ^5oi(8_J#%;+BhE5F+WT`*f z?6`gxxAc2vBxS;#)^y+?6HbRJ=l zfB6e2rG7#Rj5idqgLyu{oYy3dmqqt2kWUC$ZB$~=nrppS@s&_kqJEQjhKp=mX~gC@ z&X!REqB|ITdW+=gQ9RKx@nKmi6-8Jyb=n$u)mh}5&=?2bJ^HFl?@^?Uq$?RzvZmjy z&MUnlN}+Js+7aT_-a5n#ZtH{XW;Iv&e*?9gsD1%Y&r|)-N38|f@@4Ru=z{_b)kChV z^h-Dg?a@gQ4=+=v?GqlKBFL#;Mhh{FWmP+cGKRg)>TUEpqN0lyXQZbi05)A^v`#vv zxSehOltM6wO)E~AvM9KPqpHG9tAoYXJXceCw?NIM447o*0jgLOZ^M1-fXV{jf2PaM zDLnARww;_NEOGOYFPkB4p4ya?RY}e&S+>$;vl_}oUudgVx(a8bhkV_*x6R{bF}{(K z7%I!Asv=I{=c=jD#jz;WI&K9@b(f};`l(9|bGq78jZD*JYkz+QKUOk|F6%$M$8@z? zC%$$%s_1_QrDh2Nhfet|P7j4FfA+>?AK!tX=|G^2o{F^pbdkt2n_IL z-~!1kM-{evyZyUUZ-4Y&r91Xe&UWt@zJ)bU&WS-=H@PZ$afJ{JXQ)N@f2{(!d{ZgK z^2HRwqW<*ig>cufIbbJrBh=qrq?}x*&zqZQ2KqKQ)KOgY>>|Qf&G4O z=V!{&n0kea5yO1|a{Z%ep-*OO@(1J>V81}71bu6T7kLY^1ffsc=fDxR!)vB2^y1A; zL!_uqR0+n{fmgXRf2ZA*Wa|uG`V^l3b)+yWbA9KC#%O2Ti{~Dw^w{XJ=~He_q0ED&WZ>du| zvsb8P;V_!oD+K80X^0D6H};0E-w<9(9Ydn9_0qa@cf;Le=Uug97Y57y9WnI<$9F8p zG!F&O$Pat|BTh6pB_CRpWnN3z4Akq%my_G|qjwZ8IUqY4h4mNN+?+jY*Y!>GsNSI+ zA;}IV%Mk5Cf5CPUN1OkWZNpX`EqJP;BMOdK*MO6^D!2;JDIE(ZoYFH~Pq?Wslq4gE z0$@s^+Zze~FOIaQsOkJ!w|~h)XC-hYdlxF7Iu%bhVPA{K5Mib(>6pvmAoF?!`${AS z+7|4r9a`9PTIZJ^s58(a+bd+K#;rf&z%!b52f!b|e|@7Y&;R}P%O7lS{E|;6iCPmz zy>9<~0!CXOU_W-ei!%Z!SOULJB+ypupn`xbX$zfa^C3R{8KnHG9w6|tb}@%5;v+y^ zpLIc(g@xPjZ^zE>O5t@AEk@a7q^h0hgR!lM`!P>~PoExNuqz-@!n6hbGEi%Zp5shO z+YuoYf8GmF>_XN0YskF7OE4V%Hdz@>38hT3fGE(pfFcQxgLg!`y@FsBEjmS%cXMp9 zUn8Ly+2DB#hHtnhLH(Fjdx*-lj#}xC zeB==nCFQ-y%1+ ze_%iu82#uA#WQ;c56ylt`DqTmoIDx~NQg-Q3w!rXF;k6}RR8edP5uX|5k#=0c3M8#Miby9DfhXvC z(0w&zl(?)WeONsg%qwzF*Dw<{iQ<3yN+Xe`R@x2+5NC zBs9Im_Qk<2zf5>eF9c>Gw5Gp++UiY+&7$Sz#c0~=j^gX+O7#@T1pP%sSGKrnrj%c& zubZ2S^9}dA39Yhe>H3>2rr!*gnG3;bi51z?jRJjgyRAcC9YWkeh#|P;ei1_YG9*nM z2G@#HUay_h&^;E$oVkW|f4a?2J+zI`+csUXS(72SUUQzL^8Iu}-$^&<>g8>_Nk5L& z4~XFWmK7E7`&cV2Xfsz3$Q!CG8S=gc7gEg@nc`CrEixz0+c4J?VbI-1X__O@Dg;8= z)+Tjfv(ZYL_wOaG`}dPZ{m=K~h-)baLKw7-$_6~Gm|~r(*_`Nse_*4CsKS~_OnG&s zniS>Jt9d`GQ9Lbc@ z^P=SM;p4?nrL~)Ca4x%p=|{pveZ>;h-!8KW*>be&UvU<0&);;xL_^VIoKG>3ohtcYjO#V+;$BRW1?{TMiTFDIM{{~< z!`?mHgPBEfZ1!kY?a`c~KgWAGpYY#fet-Oy{~qsoqqG-QeqfDLjSPjXfnFfJ1H4IRy-KATXf* ztuKRKQi91?a~P#>VSjO+)dbLBbm0Ac`Bm=&QLk0+=W4fg0QZIyHB6H}NU_G!l4^-9 zL6rz#qr|btevM7gjVg3#@)sIF{m>Q@Je@Qr*0t;xXJ2^uP#*WSNMnGoi z&bKqpZU}Bn2~erNK+6O3q(j^i(|wsK>XtzB29nhtjb@j8CC;mi^e&-G9I-W_l7!UP zo9RqjDVlg>uJ;MRZ(h_^v_FYNJCPs&5{`?4DWb%MFOJ2vI`umV@AQG|^HHtYZnAd= zmc4E6e=+4kCrsFcdX8N4=E|SE5`04wzZ(com^5*%=AI_dW|MvNt*Qq1i)dLU- zNpva6cce4}HG&rKsE66Z$wtsFxB@OX(D6D2!xozn!75pIVs z1By~6(US=U2q*dSp$7qJMOiUGr_C)PmIQydB&KbEKMuejhvDgv;DFnQf+c)_Cl5O* z`S@Yyp*e#%XgRTjY!ab~T>Py$13!Gua1#w@V6v5mA&oz@SSmJ+{r%UtXE|=z3a1HA zf9*+T1Rdi?BqRsN*HigmfF7JV5ISt#TJDOo>Ff$tP|$u`>6Kg&5_}R`#q^~)foLNe zFi+TN4Rq~lxIaUXXckgvNiljLZ=BPi-_FFQ?;u7q6aX zXl_cuuT@nXBPg{fc?-YRmLdXdy$`z32i(M{D()Q3mJnB?hY^NsD_-9^ zoo}xn*&CHNc#4#Om;#B$%z|Z<-Y;4{L7~T@c%Si&F$obQVW~vC&LtIvz{aeg@~vk8 zE`vy*ltvxx?<+WTzkt(7;<445)di8pvG;CV(6?R}EJ1?Ju-^I9nOCi+-Qfh;e=_A( z8TS?P`#2J2$xbmq2&Gv!r}M}$3R9+vy2$tUF$bPe+a)o*V}Exr{~)b3jSkW!Cxqcx zU^p(vKxWvceQbfvcpNoCs@G!uD!Wo|Ce1_rEL#c-LJ)}Kq!ky)#${HM4Tlx{5jdl~ zM#xzAt2mZWj_y>P01EqQiV3bAf6!uj;b>Cr^nu|QBX*H3Y-T6GuD$7WlyxVOC)T5J z09#17j0e$a@kFL%coB<_xsQ;T{1EMmq@R8Fr=ggibXloQEJ-I>^qcBD!Y={h`cIl@ z(1-t?f`ygq6&?-VqDN?A;GpMYzbhntj7+e+v;X?#w-& z$l7hm*C-QVU|kt(4zd8H%s?*#H1M8!25rK*FZq<@9#LxI&_t2cTZv5LsOc?nv_ZPZ z@OX55(u99n@XtN?=PUTSZR&`6e4AdOsi15MXSicnM-wLvQ0XgSdzx3I+rvkDiMJXR9$I-#i~b92Qqe+5*eI_P++4y~rx z<}@1Tu&<>^K70v91>t6O#d=qQ3Z$U9(w$T^F5K4o@<0Ibxv!(?E#@7sznm@xKj4WI z-yVqNLC|GB)Vc8&b&xoUQAa`9Z1CDCP|UHjpOLwTI!rq%)Yf(ilu0h$nzG%j zQD`-cT#aYAD|9_!t&&}>M;JzHS~qA!#1n?1OO&0l=%zi&`JF-7;1TR7f12}?Yip0{ zzGeZ-OR_3te{j$88lD6itj0=DP)&saHeUPT)<5mJf40Lb-=qhswc+IAm3%e&SR_`2 z8K(s1hrHI3)5+u~yR!a|^X^R7n?bP0;fF}Rg)g!9l$VFzD|RoPU$d7K$e;ut-8`jY z8vWt?{G8sw!!5y&-FbJc`jMn0bM;~zXT*Gm!0B*Re^cSR0!|{o$L1Mg!CRHi_;H#K z@uqA=E~YC5=PJ7I)j7#@wK^Up#`}%&li9KEySpRmz*L-9JKT01YF9keoGazN+>Xui=gMVuy)%!KKq{dn?~QIbC;j2DQ(4$xt5_OMTwFxiP<6 zM-f__jiPo0N24wbyg}2)VM(u-P2)>r*-TdUYXxq4Y+fr_*{@Y=Ehn2>Ej%@JDpC2V z1@%c#C2VeMZIq|X?&6+T7%J#s4=^L;S^x=^e8o8R#>a( ze>{^lp-~q2r8eCOE}^9!T9tvsh%Vyd&4|dAA1%_Js*))BE)XOV7eLA;=J<}6-az@E zcPamKdHG$6hf0(5S5{htOO6Zr)fZDG$go3OX~1oKvTHZ>{8u}YAk>cA`i^zV$CeL5 z(-nw45j@0r-fwe{o5?ycO$vtUh&vz6Y{pkP=-awdNmB)Sd-P zQ1((SAH=ttGE)cl+P(|lks28p?;Atm_8Of6YyZWz_9@xV@_ahaJ^S2_YrA2u5J~5e zmSyXeqvJjl@!=Aao@et9=oPxN)mkKNc`#>ZSHpoi?8o|sB3t62&b4ql;?y?rfBk1Y zpxOQ;rqI%B!S#Z}h42BNiD%`)+b73B0L>GJK&Y>z#fH>>O2sFcb2Lx{urAthMk&rQ zSgU64@msE{D1JcrP*)Zow#@C7Kse`XGK;Zx8;l0oF$E%?0V>l@OPqdAR)XueNZm1A zQ!N(Lv4gXAE1brGw0I+h>`!Y{e?h$O!!U8Aw1RcLqZMTPw8B~_Rsv*|Fk385u%TpS zVhnvYTUe~O8pI83VKLr{(L!ut+j+Yo+{6|Z=j~YSwrl}G0eD~E#ue@^=sO-A@n%}6 z0g;e{J~{%;oc+BXUVduGCxCQ6MgvIC{lC#$|ttaW|5q&(bktT z4_{Q7td(kPcks(qZrUr_w6GLH}GHuYI8daP zVxv2nyK5;n(hbq*uQVRIVyzx+b7{~77^+^a)!Wn>!uE}ElS|m(f4dZ$+b6ts${umB z)fk)ROIKlO!VOM0$DcG2x>&R6M4og5Ou8V)62y%o8QkU^s%)%Cfx}Dn;zx3;?OK>f zg@rE^I58e?eaa4YNig-;@9t1Zx0OLOqRC!lN8RpFTt|P9VxFPW%-8ghEJj7alJn||k=i}Q#|lCd zZUCQ4aIlw1dK<9!B=#O+?`^=|lh}KR-Shx#jQS2vq*)*EKTb!hiz)hW$0fdUvKXnh zs0tN{r-|QPT4t3Mpc(a54l9?eBU*a{Q7}DTT!J1=fA3wGf0c|IqZ#vhF>2p#C^mqH zhN2uiI20Se3q!Fc7aW&E_RpT$R!VM*6YPxw45nJ3TaPRMshn5}>M+3KYc9Wf?w8_# z6G0dhbw20LXV3c_o!*vT{Llg=ECXHY-0e~~6)ty)Z3D3&oav=s6#}YXavO>btq#C|#h+_SM4=(UC(e`kG$+J4AEFVL=@>3? zCrums`~2~z76gT%t<_c~nAKm!rZYg=zMi)2dX)_9f5&{CpdeU)nhU6&f}+!<57u+Q z)SeGRQ~+{n9IYw7sM7%jb%JgOGE+0@wUTZ#>8iuYFj)#%|Bo??Sb3dh5Y@JhZ zpiQublZ~B?ZT+!r+s?+ejW5_ZyRmKCwr$(Cb@rU=Q#DmR)mL-T)iu-o&eO6=h4Q@$ zLpl<|mwAr(kjQf~BQ5RleS$4S2qJD`9>1@ioS+3CnjjDNOw`2h%LMlrh z)@txcA*?X#0>hOpDHLCLQNnZ{305SW{aOp|Aj07f{uLPaKI6!s_Sjbbw>56sIv_Q1 zWxPW%)i8$owW{o*akgym$&JglE{-b=hbrM8PU~W(zR}tkBRE*$e^O>jCl+tLIDK|CPbIti0m6NaoNGvqV z!CR6!^YG_Wo@NyDA()UXJ!O?2E16iabObI^5N@=`H7ZeH-jWg^rV!D8w3XB?U$%4m zCys6x`|WkmH~SBX*B&G zxDIWx!4YVdJZlhTn~G4v?8h9`+GQ=$c1wt&_gD`rR@UP}YFFtpaFWQ<4O6bv3nt2y z>IFG(uO3=X*A(lqXt?Fvj0IYT^KGVo(kByxE@9aa#~>1j%xh*f1oW1Yp;n-K^z@Z} zG^r)Rood(ok_)JWo=DR9Ndl3p-zKhJPO}f|K-lO-zyx&9wDbE zc1}iC#rO}8FW8nBc7Nv2ELzx+1vfguB2ln;#gIWqFh+nmLC-u~(iM7pk;Vy54#}@q ztg3>YZ8cfzr3xM@Q^17QjojU!*qsLQ+o_Nxw?S0`A?1vzhL9dv9Sq<`d3na#Vkng} zA%Fyj{_S19vtaQ&w!1|UC68chFVZ;-ldl3MKp#N*Bb>icT&a~hiN{80R;-Mh?H8J$ zHGJ9vwcn^GH@#&LSQ@8CjsXMy^B5eg(Qf&ezGQh>T?NprNK?3n<`PmeYLm}g|L1L@ ziTm@f#AWT9MtBVz8yv8<-@147)B^RZH13Fd%pZX``ekArgJU&5(e00q=7Rn)_46c} z4`*nWcceZG^XicI| zO`0!D;_rNxFC8UW&M^xJA2E_rS+TyB`fC-lEEF3(pyei;FTMd0qj*WX@uu#Tsx2*= z8u0kMZ=TN165Es8cToJZH`3*4ClP;2HZRXVPHV$%U(tjMWS4v_f+SN?0 zHAY4djB?&xG6-Pt327&nFi3B=5~9cVWhsi-?|k;*@)d>Xj}Strtj}u1`e7SpWbHo* zS!NAZOjt=whW!#kkQln<o(eZg}v_GrVv+>@8|6FCxOKqF&bz=24ia|fvr<~8Z7~XpE*NEiB#+%qsMBaciwRzlHerp9=tWt%n!VBi^=VLQ02D5EGu!hVW` z9EWa%D+l`Y9hx1{E^kTwBB5DiYIkrzB>s_18s#k47P^)sR|`-q0%NELmx!co?UQ>n zw^&vGYDJ6;8?%ask|b(7SLc3(eh+!C{8&h9y%~ng>M2#FrOaZ{YvQp5G`VdM{s}%$ zW_$PTvPw(8eBHnFLVAs>sZ!FiGPv#UbQ!`Q+JH==Q_GYIwGzweg6Gt|UGEt+BN*m* z{l9;CF~K9On!VaAY}oArKL;w`>(YZzV6 z=m&6CyjME>ew&D)@BcWy)<5CTT0j&dyOS(&C&L zYN&LnxctT3@c4>?kNkyE(WZ2X+R2A z!;p^5!9(A6(u&&j#%cPw!j+riR!MIC>3EumP#ubAdD=XIhx7q@6*q{UA=E8Sf~ejk zF0969UvL^n%%yUpUb;D~zf@{O7G z9)wO1jtAIanXpq^+?lNq&`SUvY60JW3zGi={dLAIXa^E%`=2)$(&Yf1{xW1Q#bdK3 z0M`rDP7}>)OR+_r`M)9Z4aTh=gne7Dd@ zw*Q|&*i@_&{mbF7?6Ho*wZ)h}1gx7ac=Si%*rzM)Bd}Qg%1~G3mp)8okLHbB&)&2vX*1I`OoUJ}k_+8uOrdO+f_1Lu_Oq$_v|TByhHwR4vYN3>wXSld$4;1%eMu5MaRvC|?z5YpRCo+phpD zP~n4F2K&+DXB|{L{!ka=MazqoH(I`zrhS-ilz`)`Ho2P}8XhT-VKRy*)QASp1<7>G*=EPZ}2(V7F z2n9O|o^sE*Ett;DUxuKMKjd|r93oH732cZM(F6lXnS*6&b=tnKqpgSA4+lva@f4yswzF4;PCXbXxPcBC@XHMKlp@8***r^G$Z*7@3G?dxO>s~=CV^#U6{pvN{ zYdyH_`_T1MMUx8bnr+4dzZKVW?N@#HYp$`GiioNirP*|Dl*6`>&^5l&ao2|HukZ$0 zbt$h(UXZFjD3dDYktehTrW?r6(x8Gj*N0d-=IP3{BRo$N6PY=Z!(LF=CzTLBuQ^^Vi^Kt^pX}1Jf zIvN|ER(_iszp78w9sj+5KZ(4YGG!?hX5Mc|>Tg`rJ)DC~LEsrSbctl=h|FhjIh8Wq z+$sB+e!c1)M_y%+bT+m!&_|tT{__iaRyoR%7ZtAsm2(Z>huF;Wh1B&~6IF@6JnvGf zn>Wnlg1t!~bLQkb`rCV~yNxzx2Se92nlNwwBuw@+o$mLzI(+syp#8o%Rj<(zJd)7d4N& z9Aj$iYzYWhW?Ws@`-aQ9^x>abM7*Y-k_snhWf;kZlK}!5e6yrcJcWquRJDW4c8<)& zBw%>PC$a1afDfw_pJW8`95%nA0C&GtqN1lF-EyHAY+WyIVjyOZIBr6|pf z#(Srh47e3wBAlF`Zvr#=@pG$G6j_T5MK}o>FV{&~i&(j;ZD1y2Psr&Eq*SGcce)E( zu01j$Fw?wVsW}_e21Sgb>4?>}XT!g~cTp0V{3+6MPNx;5Q!UQbnKR@B?X6)vQGOXl zs+mI#h)k3ps{Z`UqssvkL_(Tc39EL2P~j^I4M@&LWfCu*!kRUm?3khoibf1S6AdV4H!I$d560?+aSQ1R6YVM6B$)JNr z3_to;xV!Snqllec#Xa)goaH@7RQFz!RxfaC6@w?-fSGo;wAVM>O z*`)&U4RsRD03n{yr$I%1yTS9P(rS+jhMzYI{N(XKLFE%MuP7BG-GL%6CwB8x2gDqr z$Hv0vr_l}P!}$H@Vi-ec@+8zpzN>0K#O6_@%T~nQfm~L~@r_5ptat_#`)dt(zBJ3s z*pJqq?yo2{;MSF`xJC%(4%N-zK;WXDl$gcpLi_tF+Hhh+{E<-!Y25~h7m14=XtqXo zxDHj&m1o5#wsA^L_8FbXaP)B#g5GY`a_x7vyMQvO|2t#g1+x}8+u#oQF5;(*&Q0Of zJN5>eT4Z$e7eRTfXzxe>Oc?7EzXV+dljIL}Q;7ehX^|P}{A2&KVhgH~17P?IY6qt3 zkm$$CIG8jXeH$$90!G z!dz`f69c^5RB^RC2mO7q4~AK~F4}8Kt|7P5RyhHk>0Ha__}57WKIYTS%>{VhzEV9? zpWoUgs;FKgW&QLs zoImlVPyU*EhwA{e*-OxANIRy{Ma))Q{B`zDmowx zjr=O~ofJ9TG5xE}^VCo?aHtqZu%C|zIh>?@kMsc=;5<|mX+JZ+`h1+HEh3Tm@oNx`KSTB9NRg$+dY|;`G)d&Pvgn* zVp%>vw(5AFY$VDS6-De}(^@11LuHaOL}FlF$_x4t#a(si|763*rVB^|4|d_);mAO= znfbkJ=;*5>^k18ZDmTi8d+gP0Iw;fSI>MGZ9pP#)D~a=>ES1vLGQSx$ z-d`PhB9rt%(?TYT36*fX*s~QD--2}8irG89)4rGWG=lm8!k{4G-+}>UJ<s*2CH1=+S-i zWb1+Uh|FYObG?lXR$K)8M`x`pqCRgTDUdMe0%?g_;X*m5QWCL}H7lHWx(ltTVY*IUlW*oHqcE*Ri zVnP|`1;y+DdgtB-iA=J)!A)#20Z`B6a%I4Yx*Wofa_@3V_^;lsUF+Go(f9rN*D)TD z{YSiCORrAB;Yc3JAf$7XJywa>6-j(KQM zJt-C_I+#2TT+n*q6ky5IebsF=h~G8*b&pb?KtvPvUwL2T4_e77zrN>bc_!=fcLHE) zbWW^^+dEC%Bo$}tRI@3f^ToSG>1rTAhJ_}^ zbJVJ*0Q9@eR{|5Z6+fGyQETFtz)fmBaj(xQBR!A$`P`6)P`4F_ z8EnJh2~;2Yiej47{4SBo^xa73ZQA`*K{oe3h-I43N+PQ;@lN!fN#d`ud(}EwYr@&G zJV^5@g+^gz2z?>Rbeou|WOqO@DJ4kYK>Uv1cIoW-x>*}|J)745d}I)^4cxfJhwU0D zx+a3ZdSB}c*POiMlTJ92Yc3};kwPzHwa`Q_5X*Q9_&%`+58N=f!;SsDMsv?pl3bVtRcdr!DO4!VY7r!1?|q6~mkFTWAEOoD=r zl}9E{0kH6||C)zrA_Sb#6Ve?2W*HA|i}xz=>j(^%z(^dy$qT%#b zt(DY=r)9R(I$T)Q-maor3E{2N-meBRt`Y*6$CIIrgr^@rG%?6#6@ysfg z!MQ4deHZ)Hs79LuyHIljPx%H)M)Krpf&CA>v;7toLG?9-;9$6EtDf(>g@`={2AsFv z{v{}v%X3#l(8z#mw1bdGe!)0HHMUtEzwT?lfkE|;>1=zB-#N$!9^165?afrVW8k^&F>!mEv^V`~)6|_+{xNlt zqJrO2R=GL(ur&fKgpynE?Tv#Adopd5*5TBzJ&Eky3y0inZ??U$893b^~1c- zB2d55YZTO^Q!Ju35T{y+DW0wXx3gkPyYD}v7uj3GAmuEI1T=Cg*uX|hSX}N?v*BQT zABon23c!6MKR@;dXH?KL5xc=n^{v&6Q!`Rwnd_Zm3*z5C#A);vjJLG_;U{Y0#4o?b zGh|JEJPm@r(a`+SZQ%r^cimPp=YSz+9vEiWhbN~f>WB3(rU{e@xNq54F~))%aL8L* zSTEDBq5kGKem9ieo6-;kA-80D6L-%GvcAn=MIcTj7iVEtpe-aY#?gkEmE3-ka?U@X zTTJ9-3@6Qb6+bgFIq`23Ix;y(PnRi}mAWWBN1D+CY2)HTa^r&PLh7Q%gOr6_O)(JR z3eHkMrge?HUP1EZD%OcYQ~6DK`uP->g^NJ{F_eBKJoa#^%>RK88)hc}a2eL-RBqAp z0Nir7zr{J-yx~W#1Uo zo$FsLSmToh{kXijeVVj5Vx!NOCt?jr07^+(3;AC0*eb2Jm0JDYQ*+`j2`Mh`OK;as zS0p@~!9Q3doxm=k9<)`Z3e>hE^7eH5zKT{JeluEBy8%D!w_QxQ+LhU}sCN2u++5UM z@&|@tGiKI*pO^*T$+v-&+myBMtSPo=m1{TXr9;T1E+_&x+ae|NVGsfr;JQ!Hz&d+A zW`E?@;aAtEE*CHMx3SA>ZuWQENmkZ}t`8ob9{k`V+R}(JH5tx>k3_KR9EDUQ`Q^_9 zqj$7;)8mws%>PyFzQ=k;aNjpd!39*VIt-B@YTm~HI0;Vr=8*}N!Ij-4=ZNsmR|NxL zTrho_zZvwJl0nh=lWu-dmsW59^Vml%Q*k$wd`q}&T)5ZyP#fnD3IXx~0g zZ%Vl4GHn%B+*jFd4rc{4@ehq>=6v(CJACofhTYtkzim2g;$vZf^^>!{38TdPpJl2A zGUUWef=|qYWQ(RLWa+n}PiMZX<#7+lySSrnVOs$Qib%(U1YH^zyVYc=ANwV)Adc%N z`JHI2_ec;mb0EW)Y9*lLCU!V~gu9_ay0G!Q277UbP8zSmggJh53pH&nk>hqaJC92^ z(nO+b7GoRWFWSrk6Z-aiTRbi_tdGm(R|bE#8khAO0GAh}6pi_9M19}`u)hWhDvIh+GAb&qCw{F7lvLO^?8^!4KbpETeo~>l=kH!jx&Yfs%_XcU z^=BZ`#R~hGDrKF8%$*i~wTo2!mHZz!$l#(wUl*^?q+I51tzH6 z4PN{>Pq{pM16faNTc`GPcCx?!no)NtGq~&Cyp`@#FnNhXl2lHkYi$defpN z&p$ADHYmKzgu($|=5+tbE139xj$eJu=FNpE$e{vCavuu}9|v>@jT>EYvnlDRL~E;VE0Wv#rgHn_}%SJz0UW`}DNy z#FvHc3aQU=T-~dOqYwbJ7ct;%X+KxR*r$@`#CJ`0YaP)^+I367zhdg$>MW7sZ{ZRy z$-`iIP`JmA?_Jkf9tcv&u6nJJraCdeG(=H`Cv*~yUiX!Iy66jsTIMaQ6r#z`awOTq z2~m%^avPV6`X4gYiy1#YOCo%n%Qp1{r0v8JBUz1Qf8Ldjq2dA`Mu=!iK0+9gge_6z zm5w#5D9rGZCRJ+DGW*7l2zYdm3S}uoWE<9r6i?aIVXS2=^+|Tn`fK91e_ROQYtl}w zm%X|3>lSyKgDNCg#pQXXR>Rf($>W0$iIGuZayKa6DUcrx{XJ@arQQzbkd zv|(IDDu=JbDGumhOUq%9ke8U)Y$B254!)xz9l>=Uhv^bXKT(;{`_a6>+PQRu)~FI6 zHKk`dCU&37Pm*$nSYxH%kSCWwtpEve-3wdM2v6OoK04p^MlozkQ?Qh}A#ZuviQjRS zMo$Bs?C`H7+IThZ#-t+xPGT83DA^J&uPFH=kTtWM$mls@bvE%IOU=txN`zFmFr2T& z8VuAwxNk27qcELQq=mW@(-rxbK@nSSV+Sxas~%l%7TvT}E;`At~ALh-L1Kap&D!IoE7H zdtJDxa_GywvEBmR?8E(|P~;1cHu6-YxhI|WMP6?SEyptw1k-y#`p?O!z6MY7Zo@ORr`+|o=MNlHJ*;Qs zqj1L&v;J04DE4`Em=k$UIuk;Ss)@~XN5Vlz?FoSg`gt~AinP_^G?|3f@0Vk%vL6wp z40$F_h%>}?9*lW1mdV5w7!h=H{Q9j2+_u9Wadtj@D>DYnqVMlON-w{3$m{tPr#CZx zY0?0#Cj^eL1nuC4pURXA2tU5hbok;g2Mh*c0V%FSdKn#p%UC;V`}sJtADD_-GYB@b zw!RSrXMl2af_*{JFH2D#kt__JutZ79*&w)?HXD_O4Y{i;Gh)QC_|REPA+W&&a2H7B zpaI1mV1;%bXZr&9WMN}zx3aP1fh)5mRbB5>vSO%{UZ+~^?@yMGr`BO2{X{)^b;!z( z__45P8JoRJ6{v9RkT=Z1QHFlCI^d{C6}iN+NM0UM&v7=iH;gf0<>^?Wb6v3#Xwe@; zjVG4igejD^n_@Tiw5M&j zXrJYq&rTG8$KPK68^z2t|${WGoi4^C9vL;yPHM&Td7era-U67jnL z>k4Nrt%OfJ%~y(GD=WL7KJQQhxvWvL+GMbNRZtBWLyep}d-l5RjKGC2@loN$Xg zlLOP3*SXhLH#6o|nOntHz0>6|NBwzE@;XQ18X;BCy&;z&xMiO_ib6!_0u|Jau$cD; zU+;q4#8|R!Vf(!!7}%7PX0g411}Zdh0quBiqafmC#<5u6*Bc?FvNo z+wp3c@3%A(;oD^F)i!xJz>6Q52?;SslTpj$f{zzdhj{_ zj|-+@q?h57yuP#XK^pIpIGYR#E_z|j!(d|Fzkj+l$+Fw1zzUnM25@67ADx>#A8br> zv6s*`MiqqY>Ju^lr=|54X3evXbV_!IHHy-?l|o%9IFD(!fOqYpmJ!F} z-)IcMrP?C0MfS```OqIBW~>Rho7l_B^M)G`8u_q3uxKx2uq8zK-1C3guI~A}Q>o7C z(Bu6-5Pkh$+jkrfhJi<6eCGSn(b2FX3Xn1+@|38S@LA1O3kSUEs{cC8ipD802*?*`QG8-OW6^Wq=tSS~wAwH(9H$^=2Rjl%X$t+#-i;R%hjy+$}e zv6{gnG&>OA&xu>qy+9p^QLg2|JjKsw*20~P{NNpB$>vM z@%DINIYroFZ|Dcg>>K{eZdEZDk}!oSp+~!gACcl_Ww^WkPpC~4Ua;IPh{>;QYs^BU z?k=5C2dRX(ojDnijVzNC#n|iM)M-P}kPIxAy!3^#`=!_cd6b*)VLhHUfJ~m;k)laA z-Z9vXd)rc=1t<`m8_4)I1Etd0b-A(k1I+qEG_SoQhk(uq8U$p7JaL?dj=;vS7|y^) z2>Yh(Old!p_)AK~VN!G8Xo}$E&t?EBi(;N0Upu^npOnJ|AH~zB!c$`pMyz%xpJc~Z z0w3-940W)s5#GES86vrcAl)dmE@|sae_}R`<=^kA0HDtLVZ2O~@BK1}?_MQqb-_dR z+N~f(&#icy4)4D=Q4y!ThMa@Lm1AKX@p=q$Srbn^b#1iy$=J)?+Y=mw^3%41@(MZi zUB=s4C!=H#h{cL7cS(k#6y);=sBtHpHgk@2(qTAkE6!_yu5{>MOT8q2)oYuzOZoyT-E@Pxp=B zxH=dv@Y5@~r1~w(W3OxWeA#n_@9&4Mb3+3kZJMmqovYd4Db0m>y_+{kc(^u4oURom zoK?+WAIkg544SIgnwtf+u;H%4AHLDb8@%R^Lg{c$>Tb1BSQ*vfq;9R%`qzkQH8mqn zz8Zj_`i$dB2V=vwqG9R${!1$0AMKWG>$h+2s^MeZ)6DnxAU7dlwc&+^zm z1DROxWa@wF$q1D@w={n`VscN(2bSs9=?~tFC~>wfr~=&hy4`sRI5k;D%_CEA*lb)> z2aO$dRcVELU{hF&XE>{vo*GKQLv>+n-d0W6+)D}EQnH8~$N!*1HXXEJyyU)@-s zV;m}9U|HFBt2wy57TP4k=u{;YBC(j`Dn-`#TuGBm$ZII|&zx&s-@58mcJ$uhbP z)W1?P<>3DbOB^HYcyc52(3@C!1U$K5m;XqSkk^5^lckbtz}t99d;X!_~YoR>)#(PSbZ_|>w{Sjq+wr$YbXMkB4?2Jl%A!J z;EUjLie)ixGXE=KUgv14v6r$g7?{Ult!3VKeUbM9Py9(*Xry@Poq<6wlUz~jn!Nuy z_ibgfeSS9gZaurWmLgWlPp5X_@^$g{sEFD0+VbTfsf=vD!rsL9eY1P>I^X>5^Ct8s zQGFZ+bKBCnS#W+T<5S|4j{WNqu@l>uv1smBm>*EPMvH@;MTPCS|g6c~@Lue&wd z2E*O@!dB%T_8kKCV)^TtY3TL@i!|Y z>3Yr=&|gK}E`%dg44lHH(wz_=LeX(~kB%~^)E z852pXi%de@TnGjx35_cWGSm%N9Z1@BFC=W3q0D|gqp~anba*zOBr*y~nKx?uF>;53 zFgw1T%$<|zmAKVFMJ|6dw4ARUM}80)qy0YKZ9bX7W65q{YZcx^ULdGa(yLe5e(loT z{?h9dFBDRpm2A>$0~{hj6qrh z@wd)o%l8Wj_NfEwIu&4p@`D!{!YKt2HSNKJqfrp!oC?+)fmoB0<^f_k;$dQsnzZ!e z)DV)q9g1gLicgF7p$vYW-w*re?)HyVozH}vp=p~U8XSjiN_>FRG4AISQ;aJX=V2yZs7(Azh8GZ*Yl3q zC>Vcz)P@8>+@$mdMnR0~J{4$#OFWKPX;U+%=vV<%?j}QdEmHB|+C;S-qs}N4)ei^F zF=TL3xedfakyO8AP_-~3I@H72koi|g{;vGAh8F(O=*mO)616&#nd%WiuDGREBH2~C zE%@f=HY2I2D{bu(SlX_BCOm2G)q9j53S*R*quEsl-$k&Uveh<4i}{#$If`sEh$SmF z`2hit_*XYCf>ZdVMuAJXEN2$sYP;vl6@3B$ad{gi5C84+#<{B`ie>Mq&;C9A#(!;= zTaG%b6Swm7Ao@|g+Ced#5B}2?KIs(@!W1BYQO|>1?6oHdTeYAP^}CaKl=?g> zKGWgn{YBC0FCCXX6d&1|gPbIyf$Mb3m`$k~fpZ;QRQ##&Db%NEUOjJXJ?56#;JqBJ z;JuuKRfJM4y0^GLzJ*REEbN#0Yxq^o2?D=^hhN@mc|G}0`P&o6t!&H?>g{&yOLg`? zQa9Ah-Od}6tj@>bBvQ_2Z{h@VW*GIWtFgnT>Q1Dy5^J{=e3c7|I3xOGlfC_5Hs$Mo zADwyA<&>|c_(>eNk@x{}Q;?k6N-jLzHen=;2jiY38a9M;V&!?EL0c8EVR!GU#|H0C zTRgk}1;&Z2#U?gITKdvl5*N^6{7`-ez$=4HmRR)jG7o+O*92q|AMd+DbM_^{>s6Qh zUJDm+f!MsH7M0hB{zL~S%%b6z)~>7UG+Z>ShVAo8xjL`wS!e}vkH{?x%`waW0$tYpO|I~6C;=511GpcMpNp>8wTU2OE^YAzim8J znwk1`FChRPR0K8CXs%IrC~VW_tKpqu7P2>1Ms^mwMbweF}}CUa%}%Om4& zoNr6h)esVrwxr}1wwjk#-dDlus`Fgi;jbul(7>yNt;g&(Ap;_5N@&1u{rWrRuH(*> zPd#VfA&O<~_qakV!L?kM`20WduDkOGe5= zd=DDsIZnSbc72_4W$}D}Q&qLWx8H6Mut`IfCsSuw=N3I*!r{k87vrvx%6p8B$ElSw)$%Eqa7 z7~RL~a}S&Q+%%Eg<+iR<^_tduFnoo#v(hMUOliXUy8Tz%`xvl`TcG+z+aosvp<07u zeoMN+y_Ra?zl@ZKAiIu>h1v3}_N206_>}4!R+V`r9S2x2E ztk24!y$GcmoD~{+_EN>6b&MtqMf|5Q3b;E)XXtZ z$TJlSLgO1884LlHRq~`%_VmGQv5_rEVI~9`P@El+Kp#Loy#@3~Z_M-KM=MDgNHvpxYy&jmAO0ZC-sH~Bk$@Vm4<{)+cx(aufp-pQ!&$gL++gE@4w1I&Cj8S#KXxj&Au!egJ7>o&4JLUppW%RNR0?1dCEz&`=;D_*yS#w$}>7L8Vfb;Jj z27n$QyHtmGq7YRjCXe7#DhbqoFDif z(MuvQ(AajOsnk(i*dZg3c?G*Y;Z}AAcI<^zvjg;1a(RZmYaN?N8jEK|-F@#QCqN(@ zNYr_Lyf9*&9{AgF50_?he2!ewjlQZGPoKa?WsmDsOX?wB|FapPatFJe!Wfg~E9#Ht zlM`v}q5Qi%+a1S>_kj#aLNxY|o9epq1v|l_!Ph~wP=qbVp4qS_^n(!gGDW(v`BrKv zc^Q-2Xd^PiYxfuxoKZA3rQT8oxJt5fpv}ydt~jGkzv6iV{*J;(*jm)lWY20O8tJ5; z{>MNfAbS9x>Tk%R>gZrf;+GzSTQ|ePlM^C|PV?EMP$Yk%OFI_^J5zGDbL~(fTqz(% zslBtQKY>gV?m;ZH;ZMw)BS}Ru630j~mx}TJNwca}{-nAPqxHt#`Fm|MbGp70nBLD! zfo2C)i@r~1Cp2ZvnwWae4~tg4$v(F1BGz8_5a7Co%i-z&OM)>X+E&C-kKAg5xF?MQ zr4A|G>*O+9q0SJORun9xd#n=xULI%9@`leHlXHD{qV+BQgR}?oMS>fXa{`zyVpu4P z$38^?z~#|liG{QnnKMNKDlZCvm~^~iA(>BOu^{M6vZ|AX3M?U%|0EfA<}o0n$xK+P z+;-|~(FbvTzSC{uOMGvC>$>KY+;`!@P&a%0E$)N;f{+8B$SD@WXN}*Wv3bF-UbU~) z7x9GW??%p%tq@Uclb`$d55@?Mnr3N2pq~FQ?pgroK${#y|bHnpBu&pLhClaOPQA z@;3?p@m!@RkTg36UIaG=oZ3Is#x$_e3vD;uE2(f@u+F)rjN<%YFxv%9VIC?qEm^2r zS?qPaHx8-p6m)6=mB?#Dxp2l7F`vHh&)lqf6)gQ_!yro>V|gagW>81ypjs6H)!`z- zwKCJahI{)*y6zn{IfI)S8aZ!w^R^Z%Uw61**`?gdcY-LqvSZf|FhGkG*+c0M8aN0O z=MYy?xFDuQ>wpi3@rpzt2N~uiQN5UpPs!#D{)&SxB$p`NIllcB_oX$+RP8850OeJC z*{Cl_A-m9Xk@$j=?!J)Rt^tX|m{94k+nSgUnpHnX&nkC55Q@Pj-xj0s8;$Yoz9CzG zLb<>K5_b)1?+L&KqzDD!uelR%>>QYah|Y1ArM*x*D0zPRyPxwZi9lq(Tg}L0U;azr zj6zHD?;9)&p4y-(@>ya(bLS0$YLMFy{W>8l;R3SbEm>-l zoQ~6PlnkK}DgSVWQuE!8@0B25dGyg#TL^w&yUvswFlVIzmGU9=J98ufqNBVQK2x|n zk681O-ZoMkj;bGIkkbiH$S>EC7cZPlo$PYXw=a7i{i>>ysImz!OBVxN1ruvB&2AJ_e@t{1@XsWzcT8JP)UV zBT>PC+7=Aedb8p24WSeQ>3c0%KQY_J5>0Z-Chd^e`!dM2XsRK>8tr1=OZn&(QGEm(v5^#;E_e8 z)Kj|#rVp8@tKO@n?K2aCHgr*cEJt|O_%%HQA^_9mZ9ABEOGD0hBMo6Yl`KNto&EjI zTLB?FzLRKh@)9D&wbjOsnb9c@3k%JIQehwm=BxC5w~kuB4{5pgvtKRty9VXyd-{6> z1}1@nO&Y182x^CW9VzpzPgt;CeC-b9Fo&fCC18=9C?4sE{M||mQxPMjN#RikA-!d&FGKz2lOIWb52hj(Zf!}wi?A^W&-Yjfj@cx|Dpg2NwJpGQ zyAQWDg$rrE`%Vw(N#oPhwWiY>!H7@Y!r3!AhKY)-I`>bQ$m~UH|DjcycHHl=1W>+- zSV$(I!Bcd84wbG77s4S*uL6i^mUrqm2M^XD2x@934mly2=Ncqdbk@3Mnj#34+g0ZC zo1Jtoc8IRReQaQ|T$@8nb^oS*sJG~1a7dS`FY>ODDslz7LLY$1hhJ23(^82b)ki&1 z^Q6x1<4gLY3^HrSZT(LGlq+l0<&v1$H!r^7%ueU@P|)xUSbc@)L?xvDTb9m}e-3*! z!g{y24_wiuzB;j%7gFi)ju&h1rfhmuL32%tsJ<6SL;VRsg*mw8?wjZ0YXhTWsnxQ3 zZ4|(z!64G21^x{dHiKA5t|r7DMB3WwihqaK0-bnoPC>J1+nE!D%4KIl)=-_A$&Llwn2UyR~R0Agdj-bspQk;D@|ixFQ6m9ckmTC;kq30cD!&RbWaFz*3T zUQ+1O_;?JtRaayRbT-a zOKM0*6j_5v}te;3N9l0C(RfTwvRA&jKJ_0gM&kRsbj|qq4^D zh0#DYeo+J`LNT=kph!Iuzd-y#dm!5LY&ED6!GR)wrP~qYRsZHT9JjYtvb1>2)mOA?6{z zVA4$WR-z7wI^>ZDKNJ1STs~^8?Y(+!|Gz))9BkKXpON4H+&ataJ8|?Mok&hA`j3Z^ zluR-C5sWE{%~*OgmW@mWe=pFcSEsP6Ev*%=Riu-}3W2^+c4Ls z4R$Bm&=;`{=e9%NfBo^`bTSJDZ^FU7c=_t-FK<2`3Q}fKxM6)gq{`^~f?e-rf6+d?tO+@1^>Q5CEZ zGEx7SEqsqeed)Y*Gg1PSmVB2HltO*dLl8Vg&81MKMX!>zdQ*ML$18Z{Gm&vb-oiu2 z>gHTHe!2E2GL{ISJmd9zGlr*wL7L~2S#Fs%-E*uioC=TBWox|$wA&{M=HM*e>7bQf z8u~q$Abt{Ye}!KnVXnk!;)nRu#*FhT{DPB9b8r+DONHM>ns{-3el3Z>tI3Qs^FwO% z^&X8#QgdYtl8)jVaUBBH3mMHYit}^|k3MOaLSZix%@+vtD@x!=D$-@wTX`VKyRI@p zsnv@G_Uk+lC>tv53V++CR3@EX7>`0P08ZjcPX!Che^y~4H6R(!BhsWx(x8Mi0o1W& zrmkdH6fqyZI@_dWK62vM#GTIf@$REXal7@f9>rPya+uB0e_jj>-QrYyL2qQjmr~v{fmi9wYNx#$ zcOE^I4edS>Ee$Sag3!}e+?8Ll%D+E+_)ryik&gP;-A?*YeXCG=-?qh=No60+00;fS zDU1sT64FAHIkOa1c)L5F^II^NJXDMNYSzd3cfW}br4sma?DCy-IM4>RTLS4tHlrWZ zfB9kmNSr`a{3(VP#P@Ur(IIGj<2>`{VvH#;KFe(uC3S-NDZ54Ol!KDNjIpcj>kS`n z+9rd|*fv;%>}Tm||4Sw=Ky?ezS}H!PyiL-1N<`&QYhu7L#}kz{r=2QaxUocR?M<(<2)W(=jYrUyy^%%~~KeSiNpf@g>*xE1IAv^mV5vI#_>lf4Z`m z+KIJ#HnL%?Pt<3J$eyqDT*bKXU{W$;aj5Ld7aH1pmRXc(rI$Tc?T~<(ikpqo@<&t4 z>iUVFijz6TWT1n;?!F)*@@6vVJLBdm(olC_)I)X$a}R9QxnL3e1ZqT|KtPnVcj4l` z3q9PQ1=tTprtXUBVC%?w%lQZDe@YrItxyf514RYMy>7T+h1FH28(uKD2v&!ea*$tD zxmmg@nO=|wWh+vg2XwK#wzF7ejX6c3?cz&N;Oe}F~1u86pl z$O>&sWot}wOW3|jyLv=+(*|r*j`x8C(M4Uhr>&XO-X>PtgNemvJGlWUYH7x^RBY&! z2EZ3&lnI`@?XaYz?3vqjoJNXl$|V)kxZL%cGL~H$!~H`0#nlevFM{fG$sdZQ=vHby zhte^l`(ejPV(mV?^VEIVe@)-lZQ#3dyQ{y&fYhY5A|6)X+_Wz)^0~_B=Yjo{T~ef| zQsQUuhHF&_K1debfn6bi*OJL&jW7uU6HRy%q;xh#DYK9_f2%yD$+7`)K%g*YST&?A zor40e)C!biLFjzG8w#vdsR%XPS<%Y>O{QdUnB64l1<9qT>=;9me+fkI-SIQ_tR_v2 z8PzQ21nR4(U!r7?g=p1OpKH?BK}?%CPi&szraLR8z8RiVY)^-4S1Qtp*74H#vx^3x z#*#!UXM*INYihoc6`XQ&Qqn6P=CU;?9&bn|plys*#czWsZOcs8j5Be&Ln9bExc4-K zEn5Y}&cy9{Q{h5@e*)C(akto}u`|pb>RR@t9*-+IU#Y@^&;rkmV!)pTD{y1kA!8dj zbKP&FRyNm8w=K8{1(pWGE)Y}4 zy?H}LF9W8F5JJ&&S*Ui;pQv2I!kPN{g~o<#Sas(PWF~dw9#eB^g$CCw$7ZGa5oX9| zG5ylJy@--we~}-Vr= zXG!GTDBUx4{Afy|TfE+87AArzeWuJ!5u8EDgIH#&&?0A@P@?I0&nowvW)&l2c5Y%$e_Zt{cf8E=M8J8PB6cRY={ zxf(lcGh%9>WZ?nr)oFChtI6SMpK3m*SE-trux?ard)Vw4jNC;@7aL_4QlhBgWuw17 ze`;Nj8ZhY27gnK0qHalLyAZa?@|~z253Kz{o@&8@8Ec`=sB$VKr7);cUL@$p{-d~f zk6KML=QEq!o6q{qTYxBpfm|heg%7R`p3}p0FpBj!y`N4FyJlsGA&i30g980RRn zugS$|NLmRA)CkKZu@vYpP#H%=YjIm@f6Q{z3D1hq`ii1U{Kn$G*-(m^?@fe=(Fe z&kD% z$|4sxNQ;=0kLsI78||5<6SuWJH=)XtPEb))E85kT_n}|B0Fmp?GX_1%ry(ak(gv`K z=a}Lhq#dr{2_u1N8)DOi+fyuKe-LlmR^2(Z+^OQe=i58^{eiux3ZcaD6jHwz;SfcjvjfXRPH{xA2&FI1k6E-o1OEQw}ICRl<;i$&k6BUfptMb=v!_fA(M*A4?p3 zcl;`-DqMiFe~5!f$L2X9n`btD$8DrCA$FYn7T#mCJKaL>V?plAEgy%8zoN_w8Hbl~ z+a($P?7$YgofXU7&bZ*sZo|G}po}Y!6owjx00&}Zbt{SorLs$!TOGKKkccaPI+xgT z#_?sHbtsge5f5zl(C9d;f3;W?qJGGmB1#9rLeY>T>c-_qG$q9BMvz^R?#c>TnQ)GD zwGys{-dnsZvZ)a>D7Z4%wAH;kn8zHv85+eU)&*Wk^?h|^oezvX?Ss(kg^b0#f^LRnLLe11>@VaN&mYRxBaz|#Tyje4S8EFV~Nevg*FskMTF zQa8)bP(7Dt(_jk9;Qlu!UO}k>eJ}z>S#$Mj<#QF?BwUR2X*KKPVo}-E+^86r zpqXOSi%WQZ=B+-ee`0g&?oCI%+#&}s@Df5Az;=^q7%=)?6gGy=FvCsxoLq4;zsd`9 zNv3IvzDveL0+Ql9HY$`FOXoaJ`LCQbt>x;?4n{D#;-3GsIJ2)QZCOWjX@tSH-<0x?TGG7D5Q{9Bqcu zCK*f;Dj9t7_g2Muvk$Gv^D0k;>fzdZE%X|BqNk3_BU|>0@dc8uys&q3pRXMK%*fJK z4D3Ud8Wm-4YQU#_bfJJp_{gFa(}NyLY$*v{5?~ZYe;-xlRg#wfz2ccvd$_>l z`byUp;-xl}E4WT4MyBiW%ym14IxhQ)A=B|bR>8@RW8k0cA1vy%b=^`F`__4Fqi%e| z-3@pe^N{&;I828>_Q%6fI;$}s1*G1owNYh>oELd9xi}i7&qvwd_Yc|m#Yjg&giNZb zoA&w^f4`(rB^anXU|=yj1QtSM?8(KP!-_&$sQL+c59qYpu%fX$tzh4MC}4H0PHAOc z|A2j=_7VbD0m8Dy_p@2-YV__xo>L4I7YpV0#m@1@DmyUXg3BdZK{&$?V?YbMwMoO@ zcjI^SQ_%;Ju)1=O!+JOeZRzgCw76m8qCybwf0yE_RO7p(ek1;|^{z?JX%Xs;Ft{7Q z0_}!l)k$eDW9aVyvEgto@Y5yv48ipMG2}zU3RKs})Ku_iAszB4?!-4k3=glqK6&amnGX5yWsS4EU|F(egsLbJ)Rw&B9q($;mT-q2X6L8XZSUgukNqZc@ ze+cPifGPqmfkN)&j<`(&2CI!7EV2ltCS~Mc+4{80*9Xk}%2o*Q2tfO1EDMr0By8xA zCmp(mDR9c78M(ax@eqn9GIy_S%^R{{g>>EGK@d4xzGyw2>cL+*lMZ<=;V=rL%(wj`Ao~;+^z&?cc-oiB|uH|Y6CR-)(9<3UlD(laB{pRvC8>OpNf00qZ z8a+&DHWv$OWasmTo$|VyoA?8DiM&>{8yz(nD&d3Xy?q_52%A41GT?cCMaVpM5jW7L z3#SH$6Wmqrib6Ez2Rom~Uu`-0FxOnpRY!Rz(29Nk_Tv0)dWo`t*W)50fX^E&Pn$IG z3gTWoHjOz#3li(_Hkd(2nMfyOe@o7~VPPOxDv;U!Y;elASCK!Nc&I$&(L8BEs_YNP z>aV_MCp0@JC==T_W%@OkfZ^I%6Ig)Tt@qQ^~zt?goj zAUsI)M0=$JSsE(x@f5#qoCEW!S z`!wd2^+~zBYR5S5w)?JmqY0E09o3wU`K6!ppEclU^zm;CYF7Y8h!(o_!>|aFC%5V! z3=A}N({4Kb`;&IWrNW3PC!W@2GjPS#vKQ3=6EeVPezbh_snUlR)1kN(dC4F;lY2 z?G;u!dhF-m(R?-;<=jjhFi}n%Q%94*?>~vIz)RzAiI?0k-QxI<}zH^#NxU_~aM(6f?Z&x`+~6 zSkNupKvuEXAV_fyQ-)N+QC43BFr&_7fM%~E!)>=<%j6Z{A1}-@dttQZrH@?P4j?Tr zZ)N*6K9$$_wCaZCe+^mLz3@`_wX9`gl&9djtx1=2Ua&;A+07~9U&|dwNP&H5;gkGu zcIvbbQVIwn+@k2KR2voEi} zt}mTjy%x`LuPT?6Bx9dP=H>f5Q}no0fVH<}4O^d}P-w z?o%Hp&OHy@cF5ZV_*{_uJ9wyIvPUqXdu=WoLGP_~=B^=YHhazmWm%m#%OwcN_3#tj zC;H(~nQ}+atPs}pu4hW1fjVh47Zj~D9`KA4XLYFpJx?tc_uAPef~etUq$p1kOi4P! z2X}@JcrB4nf97HfkB8j)WF?^$rirP_t7flkoPnD41`WjP)6tDqRN$eRMaHL+ip_ji!|mbH>wJLTYtSP%#`hAyM+kY80eUdP#thn9AT& zs#(f`rcQ*@>==oFR68=Yq<03}39`y@a5H`wePz(vjs2VAn@ zre(vn3hcKJq%DHmnYyh7hG(_lxVDBe4zXlIMY@UMiC&MT=l~?#PZFkKX^+n@+%&p) zg$@ZwQ!hY{y+V?#ET1MPBbD(bCv|5>=}WFncwDhp@Hwo{&|W5!OR7hlSZ;1Uko}tE z&ca)ve}aCbDBgN};naf4i@xTMY)WF}{Q#2KHeSqCF&~XX;M! zL{EJ6EY09TZI8iaQ~>!RO$3m&vuOYnc%sK(qaZ6HpAh7UGyLEcKt|bP6PcsX{8@UE zjmIE~qCHB|=ap7hO3v?XBYJ~c^`e1_mG8zs3pP6w_m(#WYOeBdf3Etb8oIRIz@DEZ ze>X+9T}(ZigiDb7sJNk z1r`p=9?-Vbm%JJtZlKvyuT_Yc7}V+ve`;TboFe!0IhF$Tjs);{<3)e2bQ3ZA&GI5Y zPco3iYY)m=TM%^oWW3|a7`6Uhh?Le*CiQgds4=B8%mD3BTZf0R!2)BD&qk_$ev1;c zQzmP@zm%H^f1G7g389*4qAq)scQ7n7fHIL2sp~MGPo^)wK%6|&ytWCGeXvz1f9zv; zG+Lp9!gUF)XD_(O0f>gy(u|kqzBaE*mhh05Q4i#to}@#FG{)dzmYM;^aaPTT*bL3( z@uPNIS$Olox8NdS+HGA03tiiVuB}3PqA+fTD_>{a!QyYe-c;f3L!pRx27>R-! z}X~U7zB@kW*hZd!+u$NLdsDar^ zf{WFgNg6Wp-Ndr583JiSe^`t@mU)NEg?W}6MibMTD5pNmy`Rq_$djS;FZ3 zWGNpb+a)qIZRJxDHsaA?+>&7IIj_B)*qjY1X5f3Qh`HHOm*!=J+<-60~l^V&qbRL z=~}u{U@PF?WGI4ITHwdZ%GL_Vr2e<+*&#_YyH7uWI@r&W1dz#h-?v{rAOiS>b`#mbK6ihaYG)uRaY zCGHUnoRrHoGnGB)t9jNvtGm;sb$gsJ>}y@$-eNy?>J@vEff!TDBcba&;jN2Dfb?=T zSbGLB2`vpSHZp`7d1~gvdMs^+J%0`N)g^|jFs{A)Q^Se3f9aWu=s=W9M#cP%mJE+x ztmMGR7kWk-iqGbkcs~R!=CM2>?Zs-E##p7dVvu$v?5Sy0m16j$tlpEdk$_6HPfkc7 zLkbJso#vNDjP;TiLAKIefKYqhB0-!Jv7m@*etBc~;E!Rku3XO6!u8cZZPg~((r_}s zFxahuNSvoHe@CcjMk)eOE($6}!D0S%E-scw7hv|-znF`YWSY%o^!Z3ELs3N#VYUW& zj&={xbdqN%KHTUZ<&%+Utp{EWx*P4@1_o!_XnrsLH@%8_?tqUb!|SD&FAJ3Y;qZ+> ztaO~tLWSe#_w?G5Dhj^Ll_{>=px7yS&RhH$609bff3r4V8zdk7S}bXX03AB_(9$7D zX6OQLr)1&%aui4M_Af_)+=(@W((Z{97Gy_EC;zEG?cRLXjhN0>6n7qWBTEJy#Sj0{ zjg0ajoQNXrJD&E7xDGu0o~NJ^eH4Gw=7}$GMZWpA8;O(evOgQXK)HAXG5O}R(SNBi zefy{ze`#yLDE?OTKbTCfqxd^fbt>|1I3y7<9CjmdxmtuR<@Zi)i(`}Q_%ou~6YTrsR3 zSou&d^7L6$5z$rD&0oaU0=h5@TwqGHw;ZIYf2rFWLrX}D0R`4Dy^<3`y)P`r>+nqe zSY|Wi*F}Nv{V6SC#Ltk;h8aTOF~=<-_Nc&a3$UulwVIO)AVZUuATh%v_{s1~B9B{k_oe9d1QMWzz}m~xY;al!9IJwMcn5<0C$(!G?kA12{JjZjph1p~ zfBt0Fp0^s^;F?vx5*Z(7-1&4`Jt#U1k1kPBAM z84dL;k%-Ie?|3F zcV?tV;NY*j#BITOh@16KKy7+K`H3mKT!LcCLKI3iq80J+tlkSxr;)I9pk?7=PnIt) zXaTB;(?b_7vVhdf;Ypf=+ikMs7y~1g6qeU{5I($7&0?T?ai6QHj+zxl${KpF`_wJz zVN_|V=dORC>Bs)K_s$xf?pg0hf3Wz!qoC%20iLwZ=42y;HI}J1-^BKH#^=yV&5H`0 z+PFGb0bZ!4LMQ06>jkqemr*ahmk5W!hDLwQ=BFQ^Kuu~38GiD+anW}%yhY|xXosBgfPR}m?O&!}oyq?y%w{{pTl%czdKZMR z$MIV#w|-5@xC@4z`1aQJe>j}`$~UI3%1p1waD-2&|IbK=7-^$w?J&|RBg~|71iK3} z9nj-$IwNZ=g{j45t7=QQf9&-qP?6JaYEIkMfB)LtHt)?vdTS(Mu3O_n6|Ot5dZnB< zFMrS6H*b0g2hNM$Hy6&^uEdF3c=#9Q#x-74<;J^b&CU{Tyu{2y%XS=|Tvg%B*)P+t z#*y1>%f0a9zf7xf<5X@fUYvDN%&S(G)!PM|5&^V{Tm^{uY+`dce>*E#RF9u67|tR* zugC2If0BzOjIL6aoSi?jh=q%E-r<)OdU#5e-dY`p#!E@v{r7rL7!5gSAxW?$(Sw0xT%42Ud;^Lb;`c_z3B z7X6;{g)08Lnw?1fxs{gMFLk3T3i}kc-F#_*DfA}aRW$@Qv zwUVDXBDD|G{y4`pvO&O~I&RfZ7o&ML9c3xW`<|UZf7B~(Ay?!Of(POAM`gt6YmUY_ zj(Pi1mFym8yC7$@ZXaI>w1Df^_}b$_ADA^fKcLEl`s&t8WKgw9!(T8lN71aI!`1!<)1v> ze}U;f**Y+`W-hp4`#X-|)+PdoQ95=cQ=$HHLMaqjt@u>G`I6Ve{$M{Aegen90JyR?LmQ}y6~kcqw`F^HhdLS zr#SYq{-wgEMyODr1pvSJF`>w3dt30`9O?wSCA+Y0ZA*Yr=7at; z{q1}tqi)2};~iY*ClN#Rg&h&oSm`NqqX(98o*>7ReJNP~$>oEfe_h~Z>*{3lwwi689LTqKj7k4dMy zoyd57-akqG^cJS~)Py&n0K_E`J;&*IFc}KK#jyJzmaBB`1w$17wa_&dlq9>Q38qaz zjH-Vo^b7dx!DQ6Rl!gfow;RE2f1M3mUW33uV&Sd>ak z$(9=P&FLhckNf9o7wf987#iv7=Hh98ekwo3uUK41Pbb4}^ux=Kf*9~%cGJl?mp0R2 zVU|QFrcqFVwWT6(=YA`D7z%Sb%Q`F1ul{Li)fpZNdP~ zMXv$@aofRwftuGBE;_!-e`~l_HXh@5**9(ImZB0HSxML4!EVx zCYKxHCk<1t57q*Ja)L6N^oO*ebPup$RHYbfmeEc}PlOIntOMq&qTn;#`b~Cz(#mH8 zbU5(r;`mrx{U9TbjN zH#gzm4Hbe!5H9NR_EsdD4T>0u+p})QxB4iQ>;yZuIv_GeVj;822*n_%thRI&tf0VD zTJvVvc%j*aj+G26ESO;s$^f|wFEi*Ed;!N?A{Ag_&g}pGJpP<-@5E%dFB3oSfo>e8 zi391Jq@!j5j z+g46c=(j(@f1c`)gfZaUQm4?h&D5a;lP@oDtN^9pL|)x;x{BceX5d7#a7~k?l95yz@PfgE z#74_2Qn}?2QSB*^DEBW`cMK>pzxQu0SmcJ3yKsHLtTw>~dhq>UjqUnj-eLs+3%@X$ delta 44082 zcmV(#K;*yt?*#kr1O^|A2nc(3u?FUhe@m5;rtLXn01)gp_kuUjXA;2aut0|BEtwnW zDyOjDPl3#xIw^3mFO$6Pp|3a7nSTLcE(z_9#L88FqwEBBCXn(qL1HT`-wBcPUu(z; zImz5<|8?fMoNuzB!R-Ku+;PPQDKCS)Amoxkb)J8oK5VJQ^L$~_`P_ZjQeEChe?&C# zzbl$Z5~&i%cws0z)e~uzxDItD)}Wu#2{wihCR^kzS?SN8MOhgQ%cMXv_~5t=VPT_E zf=GSromhucQD#!Q@&#Z$buRm=CDnFN@cYH;1YNE-z4a>JtwC?azbil$=k`gNBWcFw7<}0y# zdo`QRu14KO22PECG-yfGM@*r*!tKi4);kZ4Awe#`s;6|j;^caYy#BUrf4H0yj!nWk zcBQ2n$M2?e?|$Hs)X(4@+vhP{%eLQ>YnWG9yB)8I0(jmFLOe>yD?hSiD$GJ5f+moF&Ml(s@>P)=sirzl?2P?ZVaS~nBK zX}x*5;wuoOlY-K#tTUKZ35c)dLO9mvrTQlg5AIQGk zjhpsAqz!Jt?d8wk{y5LN>CHE_zp!Ja?qtvf=VfU$nMQj@ z5AP;-AKZER^2wXye;=Rispjnc_|xMT&!6l?wZp@|-FtF)`1H-wJ=KQ2X1#fM`0R&h zPnC!+7mHc@@bKfukM)oD>eKnfAwRFl4;Aboz^Zc4JiuGv&4lWud;LP z$4C^4sWzy@PV=JV@M|l)gk!YKk>k|H7`H> z4`(0ql4O=N4~iXUfO8o9Ra-@*`U=8KrZsk|aulRJxFFiqa9iEW&#F7Tmg3vm=xRQy z{NZj@m#N-m1L{~&1+PJ&lOIN|k2^V1`X{=$bmWJU(b7&63VmPJF9nkQ?ov4}tze5Y z8N8W-f1Op(9!+J+SkCGgY-s0y?Wt zAw^y;>`n)C2z1BCF1RoA^;0Ggs3Ml{n{@nnQ?GW#ud7zPpnz=rX0^UOH-*j>^bgrb zwCjBi1x-zZrCVF)Q~Ch>miMy?Rhcwgs7?Lgf9mWCR2DnNCs#BTd%(%#E>MMpjfncH zH9NzHX`@rC4Y_yo=c1r?Bx{i6prqji-)T5pgP9lb!(1!h2LL~ul$Y?6O3TW@b!fDW zp4Pv|#p~Pu zf32KZEpR4`^qXmbCsp5n+N#W)fEWZL?7TiJ33fKkvw}GgUa09C3}J_0Z~&<6 zy4!V?>O34b4jJ@G;$;sGH1N#scIA|ef5Eqew=2i)q@JNy0#J*T7f!C9egET|<1@Ty zxqEHy?Av=Mr^%i;O{$a#gOEk*y9wwg(BVNqL#!Wlh2HObk5uTD*3HeGOuq4O%{ui3 zZB~2+g5~jYTNcovb_GEYH#fTAx1!KFQCo8mJ-~wdYMJl4cfh#2QBFQ!pLX-he^7Ce z9V%^neEDUwk@f$zu^=oI|9RCNK?IQYV!pbTB`Xm=Zan;DmR&?i!_E+OTw3=r9+Bz? zy+WV@x-%ff2)I<=TOP@LqM42`%2HxlXnXWuS20BXf%KGPPUjssA~Xz&tj+$~!XMLyX@e=3UnbxqrqC$DbfLl{5IM|rrlt%%b&5@ASYwxMu1Ca*SCO|Sv{C}b z;%Jri4}BoXx9Td}IRZm$4Bu|C1c)~uoEd)l!B0eP^$G-ld)dWse?p9db|a1I zYq?3yQ+u!PjzXHY_V;Ja`cnOxwdza!SkcESzJ{DyTEE|cysG-KCVvyeB~9qaCiI~_ zB{ju6B&RArM8bGT9iA!-`ZpXIDzg@~^Vh5HV2&cd)!eNw(eUcq{8Uu0{1x z&{|?EsV}`OJNR*DRZ?cp-o1#rpkTloTq8oJ1-GiN)3A(|JnJ@Sji}%=U@O zhJMqBw&|c_f2lSfICQJUw7egI`FwO$+n4LLXvm9DL(IYgfQnhPUth@}ym$$oaNWLK zS`g|uye)u35q+}9P;s&l$%Vs($a_(K#_*uZjvCeqn%&h(nO!>V#Yakv)kqMsWI7qk zL;Y=Pe>=Rq#82c*c=jSS98ZRGMb2$cZmi!3$E4VHgcBz?cvbLp>Yo7|nVW{um!jjO zeEKB6rI2hNp3wVp_%2A#@C{7MuhbKMiq3x_=Fe3gVqJgU>k5l<;|@pP;Hl{L99ZB# z9y3$hPRHWXLO&H=wrGpbSH2I?w8;JIpf9hcp)B_Ze6huc>S9#o{~RGxvp%{#lW^94aTQy449E# ze<7dvjVKk+u?K}y&P#?FyuwRu%-y(eA;kaNwaRv_VxQWHN1aQT zLX+XIR~hC*42SpGsvs@ROH6YWEaidb0@$z`MOBla7!dEkMFl6S#A$r(rx+v@O+sXo zgMXg73KU!lifjiJ!V>ots?=w8e;-`GyT0X--FuWys*K-KYaf(f?d<+>M@iN%0gIP) z^h)w(Su9{MLcm~5C_bbP@Y;D&A3hAxVkLgZYwxJzY$Mxu#2@wP5_^7`tmra6Vd=z* zNQW)if7)evjTN(B*D^*u|7?3I@Ece-JYU=?3GoKxO9D~7Ja+%9hn3mdtO zjP93)i-+#Altj*_LypmLU&r%vLx^m1DQ!xrHOWCx zG&yp!Kg#%ooW^$Dh6@CJe;r#-c!3l7QU@ZEK^3A=t3yfnXFweyP)MzaM^HtosBN3{ zJr$3J4kH@y0w#l4I%Q%LPAszRh4*N8tM1 zIy!8;(VmAZQzLaXQzCZcfkvfw^aU#)TR+CX*iH5CS8t0&iLZerf6e*^AMsoI0X)ZaJLr&5#lSr{jX8#*p@+i|8JC3a=M!V4*R4R5<~{tU zb^m^{*Qno%BMS+}kSGMUPfl&>qn&(g!g!2f^ zoZS>QY}ASTsm@)Beb_oh=k@2)T%E0kYAKp?cLcKf+W!yoe@dJ8jhabTvoV|hI9z6< zH|S^Kn<03u!d_jNgg4WX>R(WVG?M)Na8>~IxuR&CRJ_hyA z+t9#bP?PXpci^e~&d zlqzH%lZ6F(rSr7KdZIb%V!QLwH$cJj(PYWaBF-ji%y50z5QHT$3budKQU|e@Q+s8( zg0~%%gU?%NNVo!4amFyG?#F^)rz!b^#}$rI*vFUMoVFo#ilqUxDapcOps_SS#hgx| zcsVR9Oo{c-{UM9KC^q7*uh}?&*8c32*AO6(e;z!EUU5dj$qCQ{hki^AY-D;VFZH7f z7>qFK)C5vDEuc`?IKwNO(A%d3K@gvMAliot6LNzV7!fKo@EM2iCpFZ3A0ove;8 zXa6HxS+rbFJ%epD8x%80z=2mm8ZS}mewk`)m$`dRsL#;4pMDF&{<7_pB|^KMdK(vR zf0FPv+fRENN<0QtmWz-NGOjdgmQF9-KEe*|of|Q0iMD`RXPB_+E|w!TfZY)cUt9lR zywjkjNXi>B(!ZjQr&1j7w%_o6lvd6^`+kH zO&ue|}|Tg8&&l4^6L>424E*3z6|dg{jo-kFbw- z>~?07NG+%rk?mP>kf}0CJ6iSFk>=xeY0Fg$jx=LCP*9rLvdvROw}omZ&BE1egIK#| z!j{T0G50`PDt(lQKD1CyC-zRr?`yA%`Km|UA$e26gYT4_RJ6l-h9)Z7^e52*e><;> zuCOi=k8J>XqcY}vatEq|#v7He-YJCvnw|yb5=--Ak}WOXM6Cr@u%h#Us0q&o7Wd*Z zTXfsLUW2=)-kn^G)R3`r3`)a~1GmLiP**2iD_*yo>ylnI0&;r2jlx@W@wR?i%gZ&N zxhv#{5-+o04rCb(X{^_Zpq;g`!)h^+V<2(Yg)nO@zQk@aS67IMR?wE{N zWy$@0neROOn@(~ya*FA-<5owOh4FkdrTI@XyRFo5eVf>=&+K_fZg+(Ce+dTb^aZ3* zso<4I5R)~wcwtahEcRp}AZS2PIp%;ko$T}^j9169K+%P5p_76{(&8_ww@e}FFifzK z9%sh*lf)*dF2t$~*U&T%KpZ;|$G{>zbZ(RVdet3`R_a`M$K{zj4%28AhUNKZRM2T0 zv9qb&y4Se_Z3@wCOV^i&e-*h@RyD!akUb7IOrTg96zp#-ghMvd$c;GnSu{ujggV8J z1I3O*#g1(cP;W0Idm1n^_a{>3V&vQ}(o3J#LXXtdr;z$tqj8&VC3ZX?4QJX3hh@4X zz^38J=<_RGH4gKI(~PR@{$$k6@p>=a-nfHBVc+KYSKT^@rDa32fBS7(3Vi_0In+dl zSB5ew{j$4Gm7Pa15hEx>emfp;C@j|SpyA~R)hG%Dk~NK%(mO~6OB=;%u{fQe)h6{zaFFMf2*!`IzUdzAWg?*G_4Fx$3dD_f~I4Krei}>x0gH3h#xYS&$@#F zn%)K4DZi_!TYxm<5~Aiq6hYEPfR@!ZT2>w{tF5%Gw$ri#e+bDL9f-@N{;~@k95;V^ z(OMg|xd6@RS_{ggq8I2rjyF&Hv45Yx8aM|h4*%Xeecr2!p+)*v_{ zU)t=*?_=?uQJX4_m?I_zl&_^>Q4;r-F>v#UN9EK>GUrh*8AhXv;K;!=CIAMXcw-PS z1axnq-9R%ge|p6Vi1cCOsL`$wdJke%gL()6DkO4{h&betrFbPBcIgtj>Mq8JF}LGv zRrrv7yUmuV-;%0h)gao{rFP9$evy@5L^sqnPFff_<{9w5NYR!JpqUt=X{P>vrT(o_ z2hI3SpxBh%FjawwT2ms_NuPyRVE+t6L=%v=a=*49e-6Dk)4mF5y|gJoe%&_8w;E!} z%dj#J^A~D8BjaWri_5uS_v1L0gozs!uz+K#CtspK{lhRH;&q52!d|v!$t|(Px37P9 zHR?LCpi-X;h8;F88?lOG>!EitV@D7g7d0GS;M|?t@JYd>)X~lmUefu}^RuB%B(4ie zy*%sAfBTm|PIDYn>VdqXFAdMY<{xN&c}0dM=8~=BT)E@(Zx6D#`9W`rpI8B!3S~S- z<`&I~;fg|C8{lk2Rj$??TLdHm3KI~gh7jVbg}_@ZVr<2nRHw$Pg^mO30_i(J$7At7 zjiL}xO8(=Lv;Jk)e_xy#)7~%E%z@$$Q=noqf9c_aFH1|9P(hGc4K=rDbcN121LKu{hc&hIh7D&bI z6Ez<10Z`60P{J<9h0>39Y}46b-?OIm>|+=taf~<6+l;+?2^-Lm>wao8Tdb#Pnnhk&)U=rP@UpsQnK;!4hD>EcPz zoY6ngi1_np$w@rqM5R{}oXP;Vp~hhS@Lhg@Fg3FKRG)`Qq*uWJQ=WyrojP9s1_QD? zF5*Zc{N&2^qN-0dSNu`ibk^bTWbj1I_dx)kxssjER+NS(l}fSgNqJ#a#i&?1e*|g| zi-8$hcu!$QP1rmK4De0fmM$)Wdcn>q4d4m1 zwrGu8Xs#JpXE}gW-O#|$MT6l7wY5jczERtdXU&$^E(gNHNIR0IPW`M~Z#W#yvl`8o zQ6fVuT-XSplsV(;uy%y|21M)df2tgJ-|M$GKTWLllSctMH1ya_n%`r2n$O}9l_mA& zhGCo)DD{c9U<45E9EM4*ZR@(dd^%E$p*_=blpE1MdcrV|;+xP}}jh3YGBQBSY zG(b*S$LY?1S>(=c+hOPP=@_Q=6n0SfS1XzF{EcGFl=9s~+^t_*O$)Mcf9YEsGvVE0 z0rr-~+?^ZsWYS!(7)HVfG159t-$cqZH((6Ce_9v8*zJ2~8Yo0jW|A#5C7H10c5Ds9 zF7k~DJ&Mx=)289X7tbu0Yvk=rF$_~jMFcG6`hk1H)Ozt2Wha0RP=*yM7X9Mgj^~7A zW38rN15lOCy=ot=pjm2Je_z=V^TMlNh}cGF@*IsBAh92PkE`XQa|;1(0Lmv`d6P<}R(VT6;q-K<&bf>JW#P2C!TOqOwNDPc z8jU8(Sy`yZdzor@)(&+%v#Kmg97`>CNZ(RR>A1T54Z32jaT6YCApF2*1a-qJ7);Q( zQ41{r`O%DlHp_^Ge@6{(0h2?egVG5e&)$<=d`YM(uh~JD3BDSFxE4dN7@zY(TX1tz zNa8n+F$fmJ$(4REApk-YcW$XDE$A&M_5n8u!ft^ljKH%{YzO4SD;g8>AX42SA8KOY zuG3JM1j@l%WX>JtZ>CrM%hwcCBO7?AL|g@Xn+OKDs0~fUe+si+b3vB9QU?#ZD)gW7 z(p@9H#7nQoD67uF{B+)KCB1q3UNY{rze;+e_Wfi$YJZ(9M(sbNBMJR7F!j#0Iz4g2 zwzzM4oh(PzWr4?ySW*ada!qu9-<`EjqDgI@<->od#V?v<_P6+%%irSXNBdj+oS5II zN#G@9@m*$be>fSi5iyFUHJC>%G zu}*0)dfl<~$IC1mdBy(*Y1_*$fVI(O^CuCH#Y>5|o>j2>U5_gJ`;o#PsacGf@iqQI zA4H*=E|ef~H5c`KO9^pjb2)r>U*)$07B;L!i+6sr(25 zVNa#bR|u>yAZck%X;0uBNsCFMz}j0Ub60YfS-UPLUa8x!D7zvkotL{J*s!kbfMUzi zvMYv9e_mavg2Dnr$)B{wY$#g3%xoxhyOm}GqSD32G{LzA*UOE{HrEgg$5(ryEG&sQ zp?PHpAx|KIPg~G(P+4&cA&}Tai>lB~Wf%*90&yYF;>SKL!-<&!4}N>ibiG<;ej6dX zk_F`v?GK43Kn78=ycK(wa-Ti@KL^3qshiBJs=qI~D!LUO%W9=89tR*j(-5jvffq z5BgdD9hoCD+{gK>uW*d|GddY@v9I6ic(MdL%CPkpRq5@&=TZUjot^-f1fswEK{JrY+D!lIA$gK=vuMX7O=%)gwmJ8d(+rT?1>)QRK{H zE$b+Tyw!$M-N|6YPO2X9;mkh%R^t}}2t5<$b`_LB7NoP&s&lp-(K@-`aMa&qe?bPD zhWD16bl`fn6wT(a2q{#PQg-ka<;MDD+pF2Yn_(sa-+d7;y9qpW)*{~AzZjcMc*Ssj zH8Rb)gnLymI6xt8P>Dk~DdXv2cs`Ws=`v$NhSO?#_RvZ%Oy3??EMs^%VarEnVPH^y zA$rO0QiZ1q@}~cZFMLCF22+nsf8&kQr%+iJ=r{;;tby>+fM`U0X_|&hTjCb3E>9t@zk0cxkYHn02O(vY_qi~ge=crYpV1k~ zZ`u(kIT@c|MM=+n`{SdcWxCjZB$WF7=WW-!aV$Bf@>$X2HsMTqV{3o%?oP$#p=m8W z#*$?&gphhN8us6(5O%zO32K(?D68X#lC+!ctlqm?EYLqtlTC3=Atk1jU9NZr_>Mpn zP?O$X@R1&uO5~P!t6^_Yf7;U~rJY*{JeuVa$`lurXCg%i5Wa^)$3d5cGd?N9`KDfD zp)P9EWl8M8B=8#Sdp`>w0@h}SH@ma+q;)4y58Wd>UK({pS`I3@=@FvPE<#>lRlA*- zprpYPf z>*Je_YvtY9^O4B~)}4uG-u@QnarS&!tU%f`IFf#VtF&YMQd*o>80M6x+0T76d0p;i z2(1L!WKh54c722f-hBq;n~i5G>uWP80PRxtm>kArw1$O+L|^W+jzL{f&re6`j?!Gg zj?=VESD+9J3M6H4e}K!P+2=7>%d`oVB zXU=P*@R=in`)i=l z0ohX?@7J##H|!Nr)`)c396k-qBeP{0)kY}1myS3TF79l71w0f%yu@d4i5|uH2{h@H zpsm<~F0G~a2MSrDb$~FKE(|0y%R{`?fC7V@1%xaw-@V>R)x2;bg^wJhB zqfbS8T#j_Le;ZOcgGL*AaEx3hN_V_DO6#fhh>ubdlobpDQyAViSu6onR#dfc8>TB2 z5}>a1>duBBlX{MF0#0Yk^4@OBJm&kCpu5;|-|gNcAgS2}gS!Ra9gy&&E@=vQS--it zQ@|H=J;ViyxvpCqqdyFKVl1p@<`F8-tMIyk?polLf34%z7Q!}Ag+omk zw;?uWX`m9E2lQM@W(DOXdIKB=^Pa6a>Oi?pfr?CD{{dGQsxH_pWS{olqqrhEk1)vm ze+86MKOqIi8;aP$JRe}rYZAxHqWc!eCj_iEDlurywO*|FN+>H)zezm9MK-Q9Vsjj4 z%P0ZS9SlCbMe_70p6HnPuq>5|A}pFZZ4JEYEb>igjDznUeO0FSDAGpKl?*Cb)9+U2 zm0l60P`GUE2=Quf9byKz^}%+tnydVQe_BpdzksLbseb6A)`D#LGWbmNK>>#9Ay-!V zC7gry=%k2;m#NeC36D<^wt6x_m5RpF-9!D4Hkt0}!(pypBrOfvHTRV<3P;l6c1Wr1(ge`V(s z9(ZEgPEHe+xOvEz&5$-vZOX~2BxjW@Tj{b{4P~M)v{frzg|pE^zHZ#x=5eza-$+Re zm1R>^5hw6-)l}%>Sd?lVw*sZQOH)ey)TM?wU2UpHrs=Y^zrTVXD;Y(X^&j42x>~Ih zUppOD^uL2rvjl-dr~DSDhe8&6e`B(b??BLWAW%lnp)y$8(MgWeb#9j^p~WkXuL;2| z1?~;Q$*nQCUZI?lJHrBAuOkDiB~J&8bnC#z6c!5yF?RhOUGU51f;m~xhCx^a2KX{? zfn=7W3fsNi{@tm!KYFjy9eXHeyLSxV!kQ=N#GtL4Tot{zLI{R4)S~-Ve}P=Ssgz>* zVhUkVe|q&oxNF!PuoJow>hCU6POj7E%}q1|eH$F>A(FDr(V`!mxGFw4F-pcQJF zZjvESG$eNYmU-yP5a3FGe-`NcGWct6tFR8u`sFUZ_?YkdzCo1g80vZmf&=OknN#UI z1%L+VMjm-}jQ(YI5#g(5_*P%pMTApKNw3||OWt};MkP7K2@$>hpVZVSKB{=6spUy~ zORC!*jfUgyMRpif-L8t;pH#fyhemoIyxmdEv3ZP?$>!3v8!fI}U!*e%<+&j5x?7m4Pc8oO&pe{Bm5F^<0 zGi7N^y~4$a;XVMl{?WA1C$lyA1M&;7Um#P0zO}-Oyaic;(5LNl;0W8{HB%OP@#dx> zQdB3Z1mo+#tK6B>f9^`Mb%x6&#oV9&E#$HZ#nkV@ewrvq(SXVs3h{fuf=1CFw>QE%;j*9dA)*tC6WVe z3wG8HE$lh1^UDv^8EBF16*5%g)}L|U8BMzb;1A%we^Hj_|Ni>r54Jac$)}Sqiix#)lT%m*jB{-m?y!fPmeFy6_6-l+Jb%=s5M2;ai*m0 zh!6_ze+4LZp=$j#WM1GU7!H4%tc<3FQYKkI6zE()k%Y&=JEGlQL9mJzog&J+Iks4^ zgxYqwY5V*7SH;9g$D>le_x$_?HPiJWNNq0?#_29i1z_wH9~cw$fXdZ9MCDpXt#n5| z@(7BO@?PZeOKcnCFizPR2cgW^8JpJ&B^2J4f4Cwp&Ilp0ztIM*WD0;^t8A`>7Ytlu z@RZC3WLb`cL!c)b!6|Jy_MwH&zyMI*fZg24T&L^JLn{2NgQrtowTVJQ`EY!}d?aX4 ziJdTELH-gqlP8htAaxv<4rOtPtM|LJ;R5^H_7+Npr#?w#ol;V_8WndH^nI1)fmJ#% ze;^Eue)NUnnZ1LDX1|#HGzVW!9t{R0#H3nH7t&+q{*%u$*(gQHsXbev00% zE3!WlypGaK$8e%%!Q#=v=I~uv+&L?uwAiHJxFnz;5qszc^_ZO|yx&bHnWY&&?Euhs z-9J6V@!F|mcX{@+Y7Z+I#gPNa!a`CRf5hC#{5{Naj<*QMBa{Sa&J5326&9~iJ`wO* z(*>A;i0Rb=NGcMJ^g2=w)FLNaVECx;+7d6SD7J%$&y4a&JFZ{_l2#o>q?3uj6LdZ3 zz8W%0Tvn5E6iAU5O|0AmpGnkEdb-D&3jA#>?Y+fQcMYuPZcY%qp3nPEr(xkOe><=4 zMkdZf`Eu6ngJwNc9p{A$zFw$>r+*nN$ax&Gpp+yKx_tv7KZLiV3-mJ+KX#n!0ipI;> zY2Z`#Tt7oCc$>mrE#M>%T-QMqo1I04@j1@9!f1;=qQa=yJy!sU(`Vwi@-GsWT-%Il z&kZO8=?K#BSE6u3x0{%>I`nN$vERKw)_#d&Q{os(+&*IS4&jysMYoQ!f4oD4WJ!J! znqFf2;$W9wCOoGX0<#cW(_cVs^(Mq-(Q@-*H0^aq@pW{idJ1HM{vx6)TU<3$%CFPc z%}vGmhWp)wR@t<4{Y@6rZ-&dvh2XTritOn|fj+t2)}gNsA?_f=5ZrRV2qAqLlBN!W zYsD$A*G_8a9t&g6T*Eruf99ti+D7PYo37Zb$q-zxIZsmge!8LWq#Jbg^0wWiAIItk zL~wq~iVFCBtd$nDnJWn74ONy5d0&GIsb-5z@hONFnG@%2nCpo!=x(Dl%@Jr70-5r}k8GA4L8IIJ9p9EoQ2rORkt`sD4&8sr)SfrWJw@G?&FDA)?cGc!Ye4YQJIlZ)D z@1E_!%%V6pdo-)|Xim|e<2{^D`0p{lKYq)9kN3P$+KZ|YfAPVd;I2K7xAq*i+H?77 z&*vk+i4%5@C-5Gy`<~|cJ>s!F>fJpa@;zT=71wih5>(s9o{|s1p*HE90tPw|7*PM# zmq9Nn!DOsCjMBHTzc|lo0%$Ng@czF1s`r7Y*Q)n(wc9#?d&7wurb!>9SYv5PwZxX7 zN(8V`;@D#nf0TnQHl+U8U8o+N+?rBaQFfq`E7(jV1Nk%x5@`4>5%e7(gZXSXLI`*x zDFk9W?1^G1_pO5Lu{*jL@tqQb=-}Zd-?3K<@*YBCd^{bjoGlWT5|LMNu}OEp5{2s( z*eFo&2o4R_DAmz_v5XQ~l*76(e+QcCM+joFN8d$L4t>AhUGm z+Zks!1UIGxs8nB|<$-z9A#RE3zRVPLOQ3lJ$!d>AvrE1b=T$~}m(V4S*qTsDLh9?y zbf&EoO*}H!`vl-OFKR2=pG2aaNDu%C$3?*uQR2cE$KqO@`kjP#`oQ)1sMc&Z*}DVF z-ZuA`e{!J{r~Z?5tIT>ceNKB9N#Z~J^!?d4uO2;l^ZexxXHTDh`~1!8)DiCL0f>Yo zx|HNQQksDpK?``)!|ZfIi+LjPnB+W`d^yS-*eM3;icvCjK*54B2+0xUBrMrB2BCG3 zISEc_VR)3t_(VL?PMvY})ct)_OwwEfiCQkBf8pa5P<(iJyhM$Ok{!9uX@bZIx5JkK zMJbc$$%F!glYIHmgMhT6tQerv=9Umkg1=i5(>A~#2jGvx@N`IU!0ki95+x~yxv6yuN01yi$tS7gpHX4tY)A7EGS5GrE zH>Kd$sw$2Vlvz-c7$*lNw{f=J`odp9oVTdxb2Ai-u>?|kaatJc%*aDr@^e{!pg z`wIDe90{{zrx+lF(yW`)dE^*{DN{vV(MxX zEhJpVgXpw)B2zNFh{ea;M@US5h;~KN&%XQ9P|Q!dtkfo!q?0WAO?4jOmjH47Crvcy z!+%e~!piju4+n(FR5-uVgovo+f(`W8o32U0N_PBQT#LYxsg zI$H_#GLz+elMNERpATsWFg8-W1hKL`O%qG9gi>PHi{XdtsF;M!ktYjoyPXOpEk}J5 zw)WlQqWxKPAVD~ZfkvcAb|MX*U|JA^N!bFP8Wk8@WhF4 z55#gJ1GLhd^p_H|2o@RijyS40n+T?mMYlZUp$=I|ie;&HmyR+G76~vnaD}#>k zZ?nxFs}sU>YB5Uc-1v(+NF2qeqo8ayc2V- zv>HaP#xvX%x}LCB$*$HT45Kxz8#E%~2}98(%FbAH(;nsg&LC{?2zHb|&H2f-wMTVd zvw-C#Srsz4e`k3OPXY~AW2GmkrosRlul;cApZ458+u@aO(gW4naB}fVz8ZZj5-Y-t zQv<UTeweWb%_;S^vj*cc$yjAlT#ZLnPnAm)LvC%R}!KyO++d*-Hv!P=b$co>DQ5 z{&0SNPVeC1mf*+kygOF?NK%rydNGbOV!lJ*bhxUifAC!aCz0P{^9-@ztx9M7IL(K6 zQ??=()0KjA72WshoMgIM9gh;@{l@so>{$2R-4S(QD$c7NZo3Y(D;{ccj%984z6=^* zyTx^$Au34Sx^;bnVLqGYxFPZ|gL4e$aU%Ip6ONidd*`Z0De@frQFC@Wo{h34Xt@hY z!Mz5|e-`)s*5@i;ReOuq@J4&F!$iE`(&@Fmm2aP%t~)w|+Go6Es1J*!K5yRKnBT3V z2rbS=Q9FX8Q5Oc@py}hVq}R))@ujhBCM)~30yjN2ua&Iq*Q&Lalg+Ibo*FupsQlD| z`Xs0lHn+7l%2Q@{anCCZ6?Cu%n2~ZVfP_jBfBZyaJ9T>^sSYv8X`);frWjv^1RKSF+WrfwB5h zaydfQ8zx0Hpo@_o=2`caBjcb)5Jt%zUti~$U3RU_rSwHi3th?=Qz75NHp6i%tW|WL zf61EAC=2{jo9+ac&{7Yr%0Oa77jf}sMC8hk7HLmaNfdn-2oi}4AY~JCe8)>~p#0Cf zl>fQB{4T{qrAhiLD=oq$#|8cBi>VT1*rBa7;5I(lwVQhWs~t%YYR7GT$2#R>%Lk$9 z3dEiW9`4z=6OB4GwbvpLNzJJMe8k(heDeQw9K-LO}Pr1MD2 zvh~W*aUY8KaEVFJv-t<~3flVc!&=7~cf)K}7CL+U@J;*-od8Ylu-7wtHs6z3SM zRWtYaEmu_(KOlUlD~k_X=JrY;obxrA#aO!yMuY5_0uj#um1(CXPCq9r!F61u?wGEr z7K`cF!CAW%PUApYypclor!}e|f8O_Dm^e~e!Mfhj3bK7#VJ#FZ0kTS%EtV$OP_i;H zhCZ7uEY@2M;s&;`7;nXBA-1sXyxkCPVhfA&cC2<=wt%1jysvNL3U?Ru9gmK9GcDAB zNXS7S9f4-f{$39+K^4ZANa;;}91}$dtPiz9Kn<=~nG?#!HE=8;Ny-8xe{2uuKr5i^ zwsvlyr0u3 zFRDz|N;S4S_~j}$?GM8-ZgUP*Hdds-;iY=~C;We2+?n0oAYcc`S>${-riWG}L#Zg(iIqd#cEDYHLV9M{o*b`el7f4Wja z&*HMMEx-Apa>|Xuf9HWk2j`xI^yUR^eUD!;&roURYx+nQqoQERdG*Ce?VjRe1)&Ky zfX^j3*h?h64cL1Udk?YqHel~b>^;P8dH^;?eFrDftPl7fr=!)y6n(hk5??u4j8t1x zg^I+}#P2RGv&st4jQT2vl}pwUt-XOLm>w@KL64@t_b$vzf5wf`jCs8nwQn~R8^A+D zQ4Ss)iVfg}p;(g(j>{qYXHRV_CAY;1_C^5)Q!UV~$Cdw7PAmm=7+~==mtQ^iOL4%7 zAPkB+pL6H4=Y5V&Z_6)!Xn_)zfi89KcBz{Rm%GHafmjgEbuJzhofJ4QQrSR6h(g(F z@#eUIt{S*Ne|8Um;jjwS0H!4l^w18g+b*}@Oi7__4^u{2U+(Yk(((r>*Ig)}dck5_ z6*EI!WU;N_YE*=R@Y>7@0o5aSwc86a(6Puq6AN(T00f4)vo5G+8=1yoN#(dp6$>p5U* z&xau@068^|))ZgV>41VdLAL{$shRXzNw=AF)!}5AtcJ<5uf}bWHj*K<-vmH`ivJ^9 z;cci!fDkEvo-hQ)JHed#w7z=4XVU$BN*dUt_*%y_S<4a+(_#^m7A~_?1E*n^x|mAV z#g_5)e{z_bc z2ewW{K&{ek*19c)vDZ|YG0@R%R#oxk5Sp_bN`i41s)`{YhsGpLTk*9U-Gp*bk0qA? z((aUqgoWjTrg{Mh={0u8!l5vHG=(DyGYlWD&wZFV+o=9wcQ*hwT6KyuOZ9Cc6 z*x0sh+xcZV+=RVtt2nKyhVY;CQX+*3WA4<|e$|vmM!wpXCtrO(zR8L#rrI!2OT2)Xgia**% zP1guKB8DGipJTGUCXWz+%#WMQB1?ygxz%LL>Wee+C%Opc-K`ty+Z@p)^0OnrT%7=< zFU<5yCzvFYeKpiP)e6i*tk5a=d+(-fD8X54ic80|Q7W+wh9;Mi5SXh@FKvJ4Ryp+Z zBw_~Bb^l-$94B;-h&>Dw&0o$$XRgxShl>g{38* z3p68^eeLLyfJd!RYBV*JEu;(gktv2h2Cy&PZ+(U4o4nd{kSyxUfh<=`rgV}-`*3?k{ zST7$7ab?h~F78zaHy^KpPM`%i^=-?qYt>4XD4ep&BaT6$yh&czB?zXxZs!i*4^UI% z+hm~s(}>1q_j3@2IGqez!iu`EWx>W-$M>_Un=ow&NAgKA3pHcsSA`W zNMNAg{atE~){Q=gjt*$zC85nNd0YFzvt_@DQhQN;i{@w-lkW;U@IA7N%D5Pn?hqHCKdW&`em92| z$P}4weZAcpW+HWq%12aS5|z>oIfTRIP;R6cft+jlxcF@m$vN+Eq_TXsr!Fc*-jPT# z9t;gu|NA6PPolS;c6fA%$~CJGo1E3DHmqaLuoPSxz2hn46h9Z}kpv^}SI9RYU6B^h zoa|1M?w`f^uA-*IH){m#CQVQ+CNfKfU7l1(_CzzuPdmNm zvP~PSn>Q7hi&p1`lI_1_XKCPzDe^Lxdj=tpIq>@@t>fvq^A4}s8lh6gif8%PaLTFLHn=bqYPqs6N z*~#X-5u-Ll#e&yM<#yzXC&Q2H+Vf`JU6}{awdvKpo3;U4a2rn@V7Ef_vw#u9h?x2LCP= zWEQ*@qV}Kevvr*-^63SoM=Ut4NYfD^pn#V&ajlrm&f37H&{i3SO-M4?*ao?%xkbj1 z-T{~PAHCSYJ~M8CNP=`#+p^;K0I<(*`@?!t_r(NEVMmoV1#KGV=XzGNAU#1dpZ*@|reT3R@AXirB!pCjAWPifr^hi%tkrsTgH#vvF zx|YTLXt>`76zP?j|3;ZX(u`c&r<_A{4EHTt@L{`rvob-5bGEV%mF&3meESm;*Q0KhK)t|!#{^I`k!#m39i z(5H41eWF)*)*4v|)%3N{1V!&HPJp*bKRDN4awYRQEL-)yI_6vXz|XO%mXWbcve7m+ zP+RI=YV(;!o-)StR4v&@FOn5Rc8N6be0~K4;w@2wx36q3x8`Tyy|HulcpoiOCxTzN z{{~q2s#G)sS{q(zzr9zdb|`e4wa?-FS_v4sCYCu8EP@3HaNm<3wPWG5)TQMDdTeDj z%j&4ttH*LoiME6Dy4wws0z`K_NH9FkdsU1xxDaxC1Z;mdW7+DA^2(l>@G#+W%E2B-$%8_cGwBMZEiB^G?E=&Ukbg2RL6BNDf+*li8maTXs>B|5<1lU z|ASC_YAw=#c&#>_b`kgvf0g#_09NZxBk`D)$UD&!#Q%GEJx*HjUqSU$i5G}Qx5*_s`(C9lVnWGtO8oK5{M zwU(OY2uCWdqrmCVio~nfNA`OV5wys0BLbkPGWl$MFQvfb`}&&^JcP@32&!tT$4ed+ z?uT+Hx7ZbFk+YU&jrmGLMfl&)!iMrHDNOQioV1yWQxL>;p*WNM^px~53RtD#_yC4t z2}6qdz7cBMU!;UIXAX7=At6j)hC&N4LDpo=mOl}FqR8*G&vS}I|2`UlKg5N7#YTSk%ar= zM6>&4{ZXPWtJfKP6yMtTj+Zu86*Mrb!?KCQfvS~bb}X!}mZ;p^-DqRRjjvhyKh1h> zKUc0Rffer=%jv26K%|-XtUn*Vd^UeMjUhfLWU6Ikv1SvkTOXte3BO{ro z#S)~!R*wp4fsX5c2KCo^Z$ST}pFn|EQ{{N`YNF7_f?-e4(39DFyKPUo7v8WD-HL(T zPRyoLu$IOA5fvW&CbO|{>E%p|tpL%=b2PR}yaskrI)f+8;B{Ce-S;HI<-V3jtZ{lZ znuqEKl*SjD%#szfc~y>uHY)67Q2&+PK8`-tE2nhwi|8M&Lo5g#CEy&}EWOFSFUvVC zaD3c&G>e}NFQ>FGH+73C;w80YtI4?aM>hK&flL1Fj_Xf!mk~bne%ONFrElx=0JmS| zw=?lR^KqOHPZnxsymDT-I|nQR-WbL5b|=5j+kAzD;r>kbwk7%TIMv)~F%iwAC(?8k z-4!2ukG*~MvTFrbHc;k|%-<$ooJ4iv=b51O(k|E8*2e-8igm?^OlcL*dV-KyD&NtO zw2NKsTXQewA)m0dwtDj(EUPHle2VABHAmhJ_#PIjW#IA6v%=f~q z_aS%8=Q0sxb7GRn;tCgI%@2iEEI*Iy^UYADq#JILvhmzy{aCm*Cnmwk%5b0gb+h*S zC_2aMoE$d!=jYXKQA(a&L^rmfkI4s=JQ)Rf=3>#r9-^u26O`dBE_axv&rc%o9GETbmrQohopU8{e2B%ZM4vFTyUnCwx-o#QbLB98 zJ1Y{)Wl;{LKiU~!jXUDfUQAgyu@IIJw#B!ncorT+))Z9m1xZYZC`Rw1!Qj9AxjTO- zLIj)Q#D_uEb`!aeaz5#!(xg$2hJrr|xFtwO21fGAV#)QR^V!I`Y;vXltnY}SOkqNX ziQfO$xbqNDN*X!3K)CO^vdngas^GVyDCJCU3V;*K=_4MTYED!n_lPz}p(s~Fuv7#~ zUkXrXNA=|98{Fy6ZZgz|?oLQ=SYj88q~v-M%_*Tmh@M>KDw6o_-L0uXzgHvGkut4? z1!_{p%|!`=9QRRh=rU$qSyC91W}RhLqJ2t8$0*C8G?i@C=LW}DUp*r%`LA*RHrply z8m~q>*n5)Q^J^RKMgGtLMNXb^<*S7|OUNeVppA7a`nUDm7$-8LUC@b3Z4Y{qsRT}- z_oDf)2@aBU7()WQwyDqJ(zefcxl#>09Ec|%;?m{4w2bSxZmI3kQDtdrZY8RX0(pQ7N`{z zpZ(dFKeH$P+u`e%^gKES%BkhIbEZ1dALa$kB)%7u9WMav$9ABCqTV7g*^ zkl~NeGvCrzG_&lA!edI_{y&#>$QsAx^Of)E4x%!YUO#Lh_q58ybmN;u$FQ#=h8N}M zPk8&t@}YkcK-{8azTrVHxG1hqP66f=Hu;Z?`apCFOz6Luy(8#N=|U^T-~iE_rt$GA zlpA3V?{tVJo|dnEVY@>2bOa&Df8@E*O*7V*D@wu$kAkk`)b70pv+*DY=Fb1^@Lv^8 z(==KzMg)C5moqopgd{#%`oYgVRGijjR#4fiXdXaL^e<;KIBT*6zfLC`8i)w}z9%{- zd_Fe|G^Vq&(>9io`|GxWp>D;^T^t8zuCU%rLb{lXiI!gsWpowgx)B(JJS(M&MCtHXh`)6hM& zR<50luIQ7=3-fhO&yGK4jL;B_YTt^f{XsB&M6;@eu6BHng~8?`#Z6^m0$g2R=JBC z5c{6%KFV{xVUegJ@X^-XbEcMxyH$b;GLflzh4K%QK&1aq8g2)tasG@Xn|_KqYz58+ zW#iF?agMtu;HT{g6iy3*PKU-Vo`pAly?o?0JxbCeRw;zuf0Z7rNPGPbvgvYkrkGjJ z(tFpWlqNpeR?~Mj-Skv%`X|zFgqY{{7P>M`00<&vX|-hjF?9loMuh|ME9;(F6+kh% zCNnSsJ@?&Uof8ye+sSV7DK5T=a(H4(soi`|wOR;&dZYUQTsYf!Iel0cy9ctnED$LP zqZ{AfHmdktucRqeRK#xKG13iIIK;K@UA zSoWXSwsu$LqHmJW62M$_NIsuT2K;@xgmkD#iMtTSO=z9@KIv}k5pZQ zkIm})$9|*(f1#@WqQ2VND?5-Z%$B?R)K&MWe)Mo6MY=}2aOPF>@mx_wdhcQ;OaXr@ zK7F}%#KvntOrRq(ce$#0vQ3L&F`zZO0E2*<02HM}^#3eUPm zUF(*E2)^@WW^;vb3|);w#;V~!$%g1=&v|nm7C_?wPfgBdFx+V8{JN7M;@n-uba{Ba zi^?%|n#O{$MH050uJ#>!i5|js@S6~0a5WqZ%}YhYA&3Vxk!vgx`*yG;j7dsI{-GVn z8Plul^=-a5LXIV|BYL#LC>CaqB+Rhye}lv%i=Amm-0}93)w69Kr3dU6m!cUEsgVLo z#jAS2(3DIz>rZ?8^qA0=w>EkOpc2gX={ zx<};7n4M$f^};?*Hs z?HwPvFz-27MD`?%o&CeTXwPM+fANie)N>G0(@2NyGflf}(tL>f#6EgD4-p6kageMm zINitYgstiE1eWTFp(44hzspOSrtLr39Adou0J^{eVpCr;U|22UAFW@li|#m-(zQ%zmBpxAJC&fq&B~-R*PscH z6=Kc#0c;o6mU^=A)G@xy!s}qmbJELVP9e)FfK5)|LK-&@`9{L2UYhaHi&m?+Db7+& zDTsBsM4O~6u!gu$jzjWzoR=Dqndl>OCiBYS_^-lx)~V|8eLSxDdP~ja5W0FngfK9k z_dtex_Osg+tvq@nq>#QZUROh|FN9UYWvhf$A$|Bceum#)A~QKw|5hg+VJ`XfTsHsB zJaME@eMH2z@(u%mp}%y*yCeE5CX%jHpEAAltSAi7qO$L^L5YBc zS3)IA>cPpet3Cx?kLziJm7e61n6BG%DA=LSsmd{42rjs@k|w1c8+gN^e(3chg^e-P zuv=Iaos{3uOw}->szF$Tf5K z-#aV4T+WcC*wGQ)bj72+8O>8-1S9y%|`EA&}tAC;t?v~^}ghGY`?}ZaVWo> zW^A>bpb91L_Atso_<2mv+W_cXH55XJl%pPtQcOv0PaeZ+-*45)}fnb zy|RAVZ=owKcn{DB3boh#y;-F65nVMV7l&|z=+FwSBQME)Q)sF()JJg>u7#kQN2R54 z0WUnWX-X^Tk z)N|M<%ht#5bccQnpb-%JeP(1vn@^fzwz~G{$)x+Unlo?~t?_lWrLngV@S0EZd^ISu z_0_0%9e~ttkq&7J#VnWp9mSlB(N}k1*hOddEqX<1xJ~d$L=$t%oTu@_13}LP;2f9mDFv`Ca}Z@xjQG270vJ zpy`QX>5z6024)W&NXAM(t929Ge(kqqf#X1U`*4e6yx9$6o5LK10L34q*vg8aK`$H- zT`a)Ocu`hYVJI2cJ9Y?v*h0D3GU!aCSqaCn7Y$#etKa*m8ts)!VzB zPvUEaFxhqyJ2f;eEwK(8jtXM9UH^lfjx-fdj`=NN&H8Ly+nV-l;*9Q%ypeKcUT}yf z5Jx$&(j(kX9p$?{Uq2#w={xDc-$!aX1`^AEU(SQX?9G*i=nD}-v?Zq}vsQCP-654A z3n=y!Cd2;}kTC}b|CSLO{@aQ3yOH(z+}YC5zXMgBq)xTSu2EBn4J z4L6L&1C^C0nEtE+7?-pCRo=fcy#b|)-Wzu6NRD0rQZLQ#gg%!YfUJYdnnZ&|04{mU z?i(li(7bjRAzRUi9y2EY;NAU!R9glHP?g(2y;V81P2q1U*K&GaA9GAdKp^}uG;rJ& z3x!~6@@h}Xxk35~-n3K}bj=lheY|;FMn4;?13Rq8L=*yWjttUzH29EKP5MY#iNDJD zN7b&wP5=3VoBJO3>`S^%TJgi3;D}VWdx=yv2}j|HAd0yrS+E)mBytaA^a-{DGG?Q8 z#lD?^?XPP5?C5Xi_K%rqK+jb{;fqlK5%Fi}o;R$GDGdfHf_Ha8KaW*X;ZWiev~-K%?8Man7`vY%{9;+JYlR`bOSW7lC{UGNBZ3IhZ8Z&IV@v%@1_^FZq1+zId%rWm zjp+Naey)!Pz!J%LGA64oWt;-=F1i*{FGqyZMa8uy0WhoOrsd;sbh7?9C3x;GE)p~N z25?GzC_$vL+D@`p9&C_TZamvumjl#ksBL^Vt(3rpPP`>qIu5>lQs%%|dO+(ce8{r$ z-9m#t-qBt!)E1`&gxMZS;5bAf=0w_~8q2WaP)?mau>nlxZdJdK)Pm7%rY zUu`B@_LzK=SUM#k&6uNqIH)K?fmXc$To}JreR@^;moGXzVSe)u1FJRaP&5Hqxxgkv(M>YB><5lz|zv^443=0-CJRNMwTd=H;6@`wwui~8zK zF5*oa9_mjOZfDxt(Lkb_8;XawwHpw}h`J!Ztj`nTp!76X;|2HOp|7XYD=2!oXgBj+ zx#RFdU~9vH6gAwu_VY9HYc%7MtG(?uu{&S!mkY&MX!H3mxkRNBW=??-Do7remO1h1hm>c%<99Y zzlMQoS_SMs(Jlm_vT(+T=WT3#JZO7}=HUrv5wF{yCn9XMwH+3;CJ(_@ z&coNnS~puB0W~dz*97et>2K$19!wI~#dtbC8CLf>ya-aYSAca6W2E02{Zkojkbw8( zoaMpG_s8Sp-UBis1Tnv2w9}dQ?Dnw!hK_DuNXtNqa-pM^${3c}iT~rQ-O*iB}< zftJeIMEK7k$`&I9W>p8@6zezo#r9A7Zv@RAye6$0pck^L)tQPa#kOxLB8w;@3+L$A z@BRLK{!DoyTrfu+V@X9!O6^Kg82Ytg-Y3qVwH!Y^o-`~M)%y#j>Gt|t3E(gKDO?q! zId!<)!LLy0(txNqAYpN9h|Itu=E!057fHpJe&SXs70EgQypi}U2lK-P>FX8ts|}DA z|L-ya7>$+H=e1zumzLPg883-cmpIpMi*s(@>UsbAqepzsIzE}V_gt6isNzm&xq%eT zm)uU#EN&^M>9h5$SpV5oC-V1%2F)*A`Q5KWp<05Du{=veD4C^6k-s0m=%%rEw%OX{ z(G^zm`n0uKF7T#yP3hzM!dYgiO>kL7B;L{hD152Tn=U-Apslv@Hqfdl*TWEK^AjPw z&k#5nEBM%5KeS+SQVL73Vi=UAb})L)f);fa5`W`mn4dJ1Y>H_xoA^g{@89O43iT#Z zP7251nC_7ID{!=u!O-_)Ul{1iZ2?=4rn{OkSVF;ne^L$2rvJR^<@g(8rRIaZV#>_{ zYS>eaA|^p3Jg}7bY9lG%hP) z%0MA*^IamvnA$w{Mj6O1MFCC)H!uD`$j_lV%1*0-`&(zOF*cFoRyIE=e8}}W&Srtt*j9z6SDtxoaaWkdcwY~g{3WMm+Vxq-Yxyff~-!p@y z!mq;^Mh|b7ft~=vuwQ=Xw=-qT-Ae=y0(O+wc2L|!Jl90O)Q|nxAEnX$DW4;tyzMRa ziSpeDcp11U1wbu0R%kNQSHxojCTME0#1Dh8THiAdXWbz%i~PmZBJ?>pF64%pfva#A zo})7n=+NlCtU0l1(vVW^4jAS^9Of?As4I;|O3zhH)MtcnBBT?ukfQMg9Pwh$RqVL= z!6r8Je`M!v@a%txg~EcUmytt3bKsg!@D)#(MBBhum}dm6J|p`P)bM@-<}Kxh8SDDr zFEPh>=mY&U?LH?f745vfk0mk-si(-Dj`*ul{TyHDQ8HChs1?6%8$|2ssbd);_YtVk zxxSr`@q+ss8%;n&d`CtU;`3y-2wmnGa_t0KEmXk-^NS8%O_lmIPbWil#Z|k@OW#wl z@w%7%6VzHq>Zpam9-dYJq6B2E4_uW4g4M5@$ZU@*6$sh&e)0;YY&A949+zo4!!^ue z6GoYo(ef^B85g9?_@ZJk$_0FWaVi%OJJy*YiBseXT(TeM>o!fLNPk|yGe71lurPjP zy|@z(!?pDnCK*142Im|VsQ$UMG*Te9W2p+UF^U}zjf(ZL8pQ|zkSwf;HrK1U%l}9v zW1@Mk(%=r9VEAxldFc$KC0Qb8Vg4&va220_62or`qi)X1mv=NHQ1X1{Ub*t&cjqn7 zsG;;rf9WyE*xx+}LbV3tp!$=b_^`#P!tW=&;c`M2XK~wC^FBTyz~n>KVY07h6!jYd zwza=g*hd=#3H6d1xbQ{YX$}rxsQ|L~dN?_$N`$YPR>jAv7J2&le#Ef+jP`-PALKG^ z*xd*K%dn~dccse2tVe>=IJ%l_joag5I3n^+Jxv!to4jzDq!`-(K3v$~I8B^~F z+NM~=I6Qp;Y3XTt?9Gi?5R1(y<#xN&O;}n*c7HB*cV$YXlB@nEe8D{Ua!o6V{Wv>o z9GP}R?<;ZPn%&R9TZDbK-Q%MEBX*v4mZ&zgisxo>YXWE7)XB9_<)LmX)VSN1%(H=q zO`+{75m9J}lvFMWy^gAVAhG2^VIL%N4Eef!jA>s8^zw4-IQkE-lJsoul5D$r-yp(y z?KH-FusJFz3(tzEjSIJ+B*loizI6WD%Mf6b3|=)Yq?{JLmy=?Jrp9B^^d-n|mj(Yf z2FG<#HprVgWBDmFvXNu_)g>oSWQuhU{{(g8xBZw;_nsy!Z2_bAqQZ+O_kJBB(QWhc zr5`~6^fEcD&$L9y@-$1;6vM^3RIBJ$%&L8SH^-Aof3o2?lNP5bZA$G}L|K0+j~`MG zI4y*MTv{<4cqq6msE>ZjUPpg$l7HpA`lRsx$c%^?69iX$DY=3sJvTo!4+E6pJrL~V z76{2EyUCFprl*atX79+L7qtsD>h~6Hb7>EO2(eRVzd_Q=T*`75x)7MW1 zF$A_>M{Rv5%E_9)U=00i8x}Mm3ZzZ(55KfM@X@VxTqEQ)DApiVSe)~$%{#;%i+@*~ zR(UbdH85w6M1*@K_*y0L43W8W4u?Am`G*Kw>@dC|8%-5GR4;sf*0xCbT0sV$-kNL)BZXPcPD8* zvp+)NJOV?f;u{+;;Fo->C>BNg1BnwZDXqDozQajvx@Z-p!n1!Jl?m;hG_eu*9vSh7 z&oxyNtuv;)OGJK%u;Px*Tt(ZIoibeoRwzLTK*0K9fa;J{Q=1r1~|3{_TqW6-kFmW?acV)>6g>%18n98w}y@&KEf zWp2A5xB5N8K-2O7VRH|*G`%~$^hfcuP`O&vf3|Uuw0cP#ujPiySy(=i33{3&(xuB- zodXJeh=SY%`Mk;%f|6w`Sy2y&Q|py6M`Hfj2RPF|ckLAbzwRXyPlDT^9D@n=U~j}* z0*K7KbV*Mv<3-N3KhqmDO#21(;Hp@Wo{$IR1nF3>&wq&ZNFj68I{L5$^&HF^>9k(u z{#HRP#OtNWgyAMmp+qqA-??(zmog>(9!XUFNHX|P;R-j+B7D1)O8JFalE{U&UOn0> z%$s%HNTjO_kXjkbGoA#M>2JH+JN^F6?oT?ar>_`?$qWtxa*#N7n1zYdTssfJ)SV0O zsrOiVJB9pRNYiRgZ|q`$^e}wY8-YWuRFkb2O4dWp^+bsF{zdh!Z5Sn4wM9s-4~!9} zxLGFmGcw1X(xQeX(&eU@23IHOe(a7-C$s$nj(@EJ>~Cgj`PrXOec7)x)3(-p~0g2*4>U7AAqz5^ls zU|SCDI1IT*-x1kJ&}%x2;Cio^p2H@C2paJr7gb4cFS9@u z1R^V32g)^ytKYG&N{Vo3|8wNU?!&OXG<#|SCc2AlkLWuSOB^2;G%pEmM^nB-TQBwo zbD+Cq7Bu`6_?)&+9?$tM2qnI%xwY2_G3AQMUwIn#9x$F7v^w|$21TpzMj4xuAlO%o zjUxP9En&+^?ReQR@@j8NhO-aUJ!5sgl#4|1lef!FLnz8k#6jjeM5p7U-)ZY> zX-q2LCbH<2mGNxsj~g;(6wgW|45X3+Q2jWgjFn|4S6GCu8|1OJd@&j>G$Zm*Jl$6|`R7H(QQn_5t5E^?M%QE4A~%SX)G})V`XqF? z$=+{%BtPS-nfPrj@S=$$i>!W-_NMV6+6q3YXexdsoA6c%JW|Bcd>cfA9A?mb z|Cm;IwVgpAWMfF!hecOi${UF~q?vDu#UDTViz@a_`4S|J0{-ihO*+LeYT^~{xv~tK zO6vv{qf&Rky-Fu8VS2R{*KB_q=qPD;SW&CbM6j;lIWa4)MzF~-vh?sNVJ|E@FBeKE z26dWSO?|Ku2zfU1OqR>PHO&;y-FfwdDtRO?Kl`DJQf#=j% z2Vq^Q6NL?i%A8&k?Grc{+?=`ddnm?|7#gMHQmW#MCB|}Kj?s9^=BJWv?Qq1ko~)lduOb z)%Ce;Qp6zt4El)oKP8CTKypNJ<{+b3$3SVU1(I7Z2Gbd*4ad>s3f9kU~iBnzy-(Tv51BEBQu zJa&Q{zMM=j67Y&$@9Pr+zGudb`1PeHa-R5Zd#90kM;?>{1^J7sz>t z8I@wVmnn4Bv`ajlm6k$we@z%3}7sr>6({(`LGgn;X`DU+l zj^tHh1XRvt7QPusK_1Z3PL*?B+G>ySp-;x|kSOJkAcR(s^rn#dcU1hzaO#4wnp3Gn z`3`4GRWn1{Om0xVI>KDn#KFxk4^gLHlPcu3ZE=%rcE0==Z#peFS9fq}*RkH*AM(;2 z@@$LOD;=YvWa}4F`iBvg3PmZim{>YNZ$$I2H6#}e4HF))vZ#@Q36?-kTC|0;Tb)<6 zH?836)Z!C6Vj4%un+Rl*F)sg1lm4Lk&bQ}gfeu7Ci-V$x11*cwvU?}^#j1v~{XUyh za}jYp7lK4Bbd2za(VWaAf`P}kWQG-Et|JJv;r``F z@w8~C;H3g4eDSTe@pQ!u`i;aa<@^3d$JH`6O<^rvH_sm08flrjX0`0vce~mFs4-yC zLZQ#A-{<23ciU0^=PHhg)UEFE2RF7xm{p}>;=f9nZ?i4sj0j!=*;O+LYqs9BrmQPtgChJxJI ztb!Jx`pb3ZYZTITdH=*-u|g6{jX($9aqJ0X<)LIxm$t8xqUtWc2@k=o<8w)glHzx@ zdF=R)lcb;V;jMUMmcO5Qcr4&@kPi#;XmB6~)7FLrFez^XUqbfczCUiR>}KzA(Xbi6 zGza=XJtqu>h64{6eUupj3%pI)88EOX7});+yeuY48--G!4Dp&<2i!188s2w0l8GUO zifhRGV(8UH5%h3k`W1t?&_uQ<5*Oj@;3U7-+Osfyhiwn0Wch|rsjq2O$+s6Ai2Ve4 zEy*hxi`aSk7WC-c@{U-$4DV+L!0V(H=?%0X4dNVR9rP?xqP%CHOre{N;fwRlzd%ud z-sN>`P_!Od@j$ZnbNP9Ms*YL8`LCW|QcCtLZ-1N!M?1>K@)evaEdM=x$9}9A+laeq zk+BO3<_P2%U^pnw$gtH*^y;$KjK3`86|HEFmjxWABu2_?OgeYW(eED~n564PoWH&` zl1+zN^=k?$lYTAR>L=|h1%~rLj(_9=QABazbV@;IJDf;^wruF6g0Dqyh5q*{j|@bF zj7hq`C`J|bM~8G3p~v(78(Zf2cN&dWEaq8ae*UZCi`b~NVfnO~-K;}?t?T?>NtcZx zyh?-y>FwFA*)=RG2}zH9_5KHKTOi^V0TETx`Q`Yqn%{edC#B?m#LKnh$FhPfFaT!h z<@kwR%Jmslfw7_BYaey`^PuI_U%bOMmuw zG3lcoaXcetD7Kf<0t~;3x;@K)Llg!3?vO8mt{LexUu||k$YDuR^wqE2rPh!8I_m~q zXq4n~M0$Owu{-$*c@7iqN10zBuq4ECp7wKA-nqZW11XX0>+^>AlyjlqZrPoP-}(un z4?Y{Eap~Fl7qYV}PX1tHQ@d?OawbN4?dECeOx1^-LL`y-rx7G!9qTg-%{b?|e%(+pG3Zhe2ZJJK01l24^&K5lb)u(F37Ed}|u z>Y9iQ7H{}gGIGY*_hRjT^@n!)21ZC(au4H|xq~e(zJ+8Sgd64pHp``tD=1&whuzgI zy_#=Y2Aje*e=Ax#3jXpSbNNThzJ~wVanCl!cW#W^Yl6$kwyxIwc9Hyr6~HGiF)E;| zE7< z*D#J<|6z$_+%u&?ft9Cn&+u5P!&rU5LT#P&A8G_826U+#LgNbdGRU8aY=4vP5IZqw ztndZhGHR;SXbO~iS<1`zWQ5yrAKS$<71iy%%4I@;?R!0N&9%-iGFtk@jG(Xfnk=7(HKe&c3)cINp3g zOq6O4fr?yZO@s+#U@z$bZr2NjU&ea-eSOZX zL=l-wVG@~pcG$0UJs~#y`%C8Uxca!O<%~&WOkB!ZGq!3n@t+&w1a6pL=|4Ycu;Z4~ zG?zF5C;J&dg5PFE3aFz-2HU<@$xByS&NhUJQS#ZBHx*~UYbjzo(7RopzqlF1zuX zW(w{`OEA3rcy%S^TSPi#JKs(QF(d=1BJ?-Dol(1)qoNBR9d&MJswB1@@DSScmS$ByF`K(#Xh{(ec{HVN$K)vLgh?YKO^0%(KcDAmzVPD}tpJp7m>(n(h zGVFjBLjUhtr~1vee=XabvCTSJ*WESOuG&aMZrHTObq?KO#@qhS44CgvywuI>{v*if zk(Xa4SdskRF9?`ED`nRg%{(4HaCwVua7$NTms}NbS~DX~6qTVIONT{}JCfS>k}qyP zc%MFa-&j^d^bZTg{lBpx7$n_6E)LvR1C;=3%6SG@wwyo#NxL@d1p_OEDTvZu^SvAN!gi!>r4-f};hz?St`!u%g4OW#Q1zQ=y`;J*9AH?S-lr{L z#ks_<><6-nDf~4xmcXo5B@2QLg4gYdu2mm!U6wc{O#sx^)cP%FBXh z1eE`KmCJ}@!BsFn{!|*2pnaLXXWK@uvg^#re1@3GGLk@nGbPoV&(I3j<$!XchybGl zD>CG6w^Xmdl9HS6&#k_%`W2`)+Jf_mNFX`m;q_1nko`t61p6S%g2O-Rv6#oQUL1{f zjSvJafenezrN>U2%Ij5kSN<>mW9M^=zUuOYg56OyT&>lki6hX-v2U#4f+SGuaWr^u zR#zhT5W2tRnxz)HJ^QP96c@YIm*$>aUOlniM<=RtFxl|6;+L?NvR1qbEOu}!rhUY zHdo`Om`bmnIp#!;jcnX`m~8lgyg8+MO(29cPlm8alF*pf;mU2^(HkYFe2EATE#D8l z%;tOag(5wA_oN$okry`^s@Q`?3RvR8Zy+ffg&6YfUy$Zl{98uJOLNLTelkAsp&=JW z$#FSd>J%KeGy|Q7ID7y&-!vuHa8q*~)?Z7@@ZE7wc_vH|eq%MA^g;MdvkGxc5%kFZ<@IGB#rsBag5>lIbz6B5~1b41wvl=i%F) z7+l7@h*PY7M##t$;DAHV-dw$CM$cB8%-OW7H3^u<52|lD3NitaLnKZSyF$j!q6K&b zrBqMIn6UbxgWz3a5vTzsgebJ`r&1FN*}{NS@LXbn>dn0;qttih-rwa`@;I=rm8Z3z z#AuY(hELMI5tF=Umo~nY&sNHq1dUW^TTJXYK1hR^`Lt6gO);ir$-ypG-cZE z&irYMWoxY4{%a33vrG0JO_wbd=WHyIm8Do$W zO)D=GvO{kyZ=rN$Oo#cZbS0p{b2&sY|nWsJ_I`=z{ZEdI2T#A?E%0oL^ zd+PM}qwC&6O|%hh+EX=tHzR2czps3Gq>bw(%&r3PW>){a`($^}M|dr2H*3#NL+E12 zmQrCh`-5~n?K{5%sYQaiJqopsEH~3667JJU1*ZC?Tza(om+NVh=-$nz)jk2&LNx}wA0?ZBSNi`fh}Q{9w*xb-$gYjN~}V)LpP z$BwluZ&MK$T^9>_mgdCGn8U+t2LyIR^qoXQJ@w-bEy16SOqo)3bR;b_({YS9x3^a> zImEGq4-$c>s>sxr7uxzKrpI_}Z1i`kBr^c`_rj;6R`So?u=Aa--SQDY6XyN<7&r(9 zAIrckg3_J`bIiI7llLxvAlvIQWB zkel1(*M3Kf*P?8ypug-fN%S^mJJ^q5Dk|0(W1;`A3kWYY=#`vnTW`#Uj;6<^^|WMw zj1reF_g;~8p!D96A?jve6)jl zIc_*ED(*aBxCrCBzuSOT@gb2+3&Y0{X(`kcOXeBm3_g$9wc`I5wy{N#OE4E-~=3~hcIdrUf^?w|5agXpYRPg#wMPO32#Q7;A zM$2aj^S*e=wd9)Oa>DGk@hjYZaZF4zFmU2p}E@ z#T*=Tq6&I{!8UIW0;Cq*`H3c!^Sq-^T-f_oGDgNu2=mPhOaoxKDD{ z#K|pUp}_wMnk!}0iDDToN$+w=%Dy&7S? z+uH}O=u%&uSj!8kba=;$wRclCy{e$OCPh@=3#6g`grLG4+;aELbMdu-(XrHO*}XOj z;L>0aY0(1z1`C@(EF@PGVh$yS+woU2}0&~_^E4(H)`1PUZ_;N zjwlDHtdBnslQNh4yc#Kx#?cdh%?hIyLXNsRtu!C>r|EC!Bm1EXF%y6Z5xfdgtn!uoAYm93zLz%QKwEeYX(a@Z1$f;YmSt@=5X2&v4xoalR+UT->-|`XNfuYaj ztO&@v5Foy@1B6KIMc@cEZTBgWBhJ8$8>TDKb<~Z9*U_3Zh0%}gB8;j;IY2!YX zg|~owhgZd%8_p5gu@6fJ9ugwhYoKNlv$v^_|EIH3F=#s%!FdmEWni=9Bj)M_6!+aLB-a;`j7Amhces5MMB9 zrg|$;2Sgq6$b+AW{$(y7wbu4ty|(|~pLY(n>$T6w?|*Kc<@KF7`j1W|rxpFj!$?Y| znEVLF6vbvNJsQhKrh>m0Xw$1x*wvQSiq|UA$zp{-UO>mzi^4R#5)9%7yRB`Q>(d6i z6K&{=*oJf4q3`~GcyKzI1%o%?;9k6Z_4JoF9}fj7IDGZ)t@!c!|GrE*-&%!A13YQ{ zc0gVo;ZK>>K>Wlz1bhksu-;Re^o5o%cZ}u)I1>%8AoiP=r_}h7&^Hn{zcsvCVD0Pj z+H;T~`IWDc;i?(C6cc`~ZYrzXWa&y`bJ~g)gM|HN+K~x=`sr<<7-ViwhK#5RRtTA> zf6NxXN20!TUb`770ZL20%Lq!LKItI{o}%VbsM4ZW$y&XszU1Q-yz-gII3jQ1p<{J( zE*!sHdlVT<1W=ywdcGOM)4?Fk^T{l?%$n{wRu@i%N9wY*-UHh0lLT{c7VmV>N-qul z9!wBFiMYalFOe`;;xzF?d}?FH`4xV_$)!0sii)Me?;=gSI6uFZMBvqAMwa(lQ^tR7NNF&egaO&-~D}it-I7g9{l&6*jIywrDzo;Aw#3eKG3Uvf{(+ zOH}Xa;-Ii4HskZtYy@#=Nh^%D{tt&=&PQbC^izM_KM`$PRG@y7j#}ARH1gxepWc|K z5V~i7t325I?3u(Uj-u_{Nft++XBa27g$KSN`2HJZPZt`cb3w#GGgM%4qKxYl8BIra zG%l&aTxv0@&1!MHOUxBN;&YrbU4&@&{Ufn6q~&&oG#bY`{F-ixU- z!Deh5EJF6P^tAsa6BnSmg=j4mpH>P4TtF%maH$x!RBTykQ%IBx2O1$Yx@;VP!#&Q(-R%6KRI20SxoK3 zT0I-tFxDsPvqNOh*LtpETzD`knXx!jcI68VZ9dB^%CyqU9;#%cMZsbzKj z#81V^oMJN2!C!Y@5D|GZ8T6fTa}{Z*yD#b?yMwt0w(4B42z~-JqE8?oO4_?{ao>d= z?#}}32P0E=MRl-sWWDA519c^T4VPA^2GW6|0_0vd+_1vxD$@-w7+eIa!%I2Hud3WE zU6o8P$b+&KDb54BSYF#%tg^Z>`bFxO>1p=S;3=&LfTqp@?hBF>B7LvEn|jP!DPlzYq=^7jvK&#qFq-+TuNkx zwxzN)Cb=bSU!`3=BD-k=HY&&aK!WI^F5A=A%xP~EtL?$WVzZsx02H+}<5?;;bV>u@ z3o^P<0P?mpWb=uKJ2D{@9Q@3UAf)W-(o;&(pnJ@t8Z@F7Z>?lW%TpFe#$N>QdBAN zGkC+bDg+-Si|)X#kicunFXe-O`In-PjS@WvFwns4V<~| zw^1vbYp2^5+=K#4gJBm4Duzbxs2E<;ZllNGEOl9!WwLGwDdxLl0FnWsnnoNVDyHE^ zV-eK;um;GiRj4I{D^huWFiHhAg9LpH3sa|be$I&zPxxwJxqYnEfPQvC=sD^vL$*{_i4}hV)s}MsIgwgXqB+3HX_-980=#s2_WV z`mtw{xj1_w;iU0;bF-E`NYt!uZ_hyH$#@qKjnEJZPJGw;bpH&rY0uE$@$9kFTm8mB zYt{CD7RLA96AgsTO%&1+JOU$iX}-M`?t^n-WE`ZhoO7CpPl_uWBL_x!<5>ZgY;0l|)P{~GON_a-*%N!p;)u5juC2q5xg2Y|N<{en`ulo7C zux0gvz&&V@vrZ_{bi8Mkdrq^8kuf_rF(OTUm#1!jMoyvNl@qNqn2S9U*wP;sj7>f&P?Mh`#Hiuk&lME_DYv%Xx7 z9kv-UHBhqffcEM%I_A~n@U%}gpVO;U%}iJ~Dz-grb__=DqNIzBvI{9u)bO&=Umvx9 zE=Ua+bmt4JP$N;dq_SNI+hqApRF4PNej!h_V8M*FP-j#*6_QdIR4FeK^ke@~T)aoE zrkV4ZP43NS{pKw|6v9BR61~C)*9On&VLBMa`k|h2NzS8Nk$6g+l+Z+hd>4#!l-bwh zVl*VJgam4Y<&szm^cSd%BcipqEj4C;x$n{Ak=_gW4=HntDq+B&0DF+l~Uk&FmfENV4ro%>!?FrxjO=%%&KEw=OIiUB!(D&N}Oi} z&*-Y86A!XK-kA_8t9T$eye-w|bz ziyNdx%*jXfO{0zWOw)|s_9_7=J6CY^B8+PmNAHbw{5HLo!vJ1fGHRq49syl^OXl^@L*>*t~yM|OU;Ty z3?gK+(ztzK7VHhxvEzBlAHhV6QU<>ZCObE$8(zj#jixMTDw-O1_w3s6Ji8X~N~(uq zc8R<5T-`I)@~c~TOgx;2<5ch7JxwAU${Z@N_u#Ar-4!%2n z6;u^2K-oXUL8N2zoRG~k8^7Z=Qkf7tPJRpTvDuw&q4%*M_vMz4!^B@v=7o&I%ed{5 z41acDi`~wO-W|+i4&Drn;u7luucZ3Ey0Xp(#-8>;==DOzVqQVIp?Rfm z77KP$dZpl#`whrQI&y6tVK5{Wt#Ys6AXJ9gj++0z?&CmfN~48;f+O=RuErw06f83{ zZuTLl$}o#O8RDX#WPPEmsXabFD1k8K1b(&VlQ-b$fc-{2(Jqz`tU13&%iq*mK|!gT zMMN>}qaQj7!i= zG3v!7JU{bRA62n`Id=D^qh4;20~mM-Aq`-=$utZYeJ=_dLuZ)brhHDWxS3z&g}Eft zG)3PfVlC zl>h`dpb_0U@ejUzyCl!6A zYYXvG8_E@2rxPR7^?2sG9YYmKOAu{&lV$NYjAuUw>guDlI+HF|T*qv6e?>-c;I##E&GOvHY zzEFD!fvW&v+2Z@zEOs?|cOlOy28xS?^7~@vcw?0v7;wSm60IPd;fFDx1>V}E;qSZg zyZNc;gGg9ixyNBWoP)M>_hMSyuyIi#i1$l>aaF4ET~fah|JZuhr028<^+p)n4Pb$G z!?Eh5w3jjTcYxS%I2ZWol6;0>`u-U5Az}rp>tkvv__L4>c@%fzo1t=#LUXlTro^Cs z4gT}ymhFm+&N3N)6ysC{YW06xKzUT=@JlNcUVwNA#S@vk*S6*jS+GL7Zt)<9oGo9po=)}PubfGTyq9nog;8dAIm+w? zQD(OkWx|ss)l6sE5t3>NJy%1nE!v%bfVh07WpHj+g0s6**Mt(FCVI628vc~W231P0 zw!4CM&rW@*Y)bHwCfWYN@vr3N#`vR2hj4xrMLuLc5dtHQz43~ckF)Xc*U4-s%{s5q zSkd-%^GfiM(tDvYfF;{do!jgf@+iGxiLvB!^D2*44NsNzXT5%Nd76#V)vCyUC}52q zrZk(21vRqs`NK|m-OWw>fx1LqE82~YnhcfjLG#|e4pxNC9}gMuyuTu39=nJeXw!vL zgTo2#s&_>p8uNpl&*QJQoP3yTF6XMFyc1}}zJGgh{x-ctS-|UY5fQ-W4VI@(8h8b9 zFCLr59H9k?b$A=hprcHr6S5_LXWg(c5G)nQY=1U5<=d;spG-Vd9`b0Ov>;XXhhz0u z-?I~%ovzc9RCoz5Xgo{bPR20eWM_Zl^Z0Ws?mhUt_qlnnqmV+EpaIe2roz^CF+va? zBzmH~(t#|H(Fyj1e;=r2aGM4H;(~GNs0G1%b>cx|#V&mS@ZT-TGlz1j&o&NnvJK|DdM3fUx>#`ZR;%eE8YJdqDU^G8kKKfMY!;9%q+={$p5FN^P&<}i# z=|cq5i4m^GT*}1(ZcRFWCG8?uz=KsK_Rg*4Fn9coOF-O*Rrf9e3@umEHd>IX!A^x( zr|26WMZy#sfP>Fth)+RHTl&|+xkf!(@?;Bsh7_ofJMoe^5XR7Ihps8^&L|5RY@wdcF`Xq&K4w?mjeZ|>MBrSAz{7X{o z2u;d^WhyvAi#;s&Z)#9th0sm^cFoORl{L_3c^iGy$5p^3q3xvYZmvZ zj}zyf2W~s$Z328QNd6r>R4~~in9#j8myMwJ);e?7kTsh<=Yq1VPMqZu1mt@7iS85q zaHveVBWP9#YkJo+CD1^fG@1*FRvHg@#)-4KRDqtSmWzAsY!gA$a5GYrCkdt`o#BH! zLkGN;$R~4uv4zJ&Zhf+n&#>!fAGlL_n$?nOf32gY5)ai8R*G-f64D!Nb`IboXNChV*>Kac zVOs_E+XvDX!R<`l)&j$`T5w!jLm7uyvY{f~#PCF~$5M0v67DAn)3CJ1=NE1oUA#hv z1f;1KAje)INmiCmlarCk_>z;lv!nDS*Csr!*em!P)@NuhlgTC3BTg(gHy_A;O>$@9 ztx!RKKT?!%ah{4>9aZ+%0Q%%btOfKM-seRDvISjR<%(8@tI3in!|iPWXsnH)_dF+t z?r~sIMRwFHM$ghO|T@z#8o{jQE1r59`YRa&Lc*_Yja*V3&9gV-2fLJ$M{unEx~lF~DECwZbL zzIv8saG|!x;4&(Je32#s$lBR70176_HN}^28Z_@CqQK?6HZ=QE2`wJ;}yn zkVMfQCF%1@t1Bhv_qGweL9KexK*h>;DUXRxDc{ef+X z2{Qm+&V}zaI|AO44=FjH)XrE0N4bmv&_r-jFnM|Yx^>i;(ivuecBrkxL)c(}G00~l)jz*Q3EC-> zwccOK&4fSBvZ;hn%`{P$J<2;6mKi{q$cfZ-n9nEEmtP=Go@rj&gvmbGDirpAF+3Wr z&_Ut4gx0ecT;u>mLu+Zq%X43w*Ck7M$jhh)a!yauAw(Ku@Gwiw0OL5T=0j|T=JNPa zyR9s|`QTe{kudGHu7ZWG?Lya9Aw5wTH^Y^$GwxvVH(zh6@b;n5%gjg|{b>utWhod) zqa=EB(@ha12^?KbrXWJ?pCDm>fl^MA()2FS6c1{fJ6hpfn_O!Q7v%xdRg`xz4XLmL zWOF@C{0i!Vn+;k(oy=o@D7Ki?Kk;diR(gg`EJ{<_4_dUW*bmLog<){EjBNYEKoM?b zS}XBTxAaPebRZ?Dvzs)<0FKkt0gZCwtVh#1`$hVFGp77(m)%3%vp>?K@D;h zB;%T>I3va0i@iRqY{u%HIp2z3O^WmdthHk}Uc7ctD71Fwd5%L?X&IPFFtI>^LPkZr zLypXC;YqR#Mh5bZLdMdH%k?uzV9hS`>#Kb%9gVc%$mtRYuY*I2(pK0@sTdhn#8ToEv+1Ct#G$Aa1Mjy+(!{x#}%MGK6X-$+VbM4TqYb&>3a5G={0U5uc1&(m;e%Mq*+`4r~q#Zko;b-Jk&0lOM)z6^nNlI zO!!cOYjy07r?^&P8JW=>X4f=w#~P1CaZvsGIGOszu?upihti6F$+RBNXmpmn9Hq%F zWaqlsn3o);C$kg`1>g6FS$~|@h%@VtPeuZ%t$nG$p(m!g_M)EJ_~ii%H=yUD&4+X? zT`8~?@NY5{K`brsV`XJ)1!VG8`yOp@2?@Xuw@&8481mwi@s{Cw&kM$yS;wgz58cwE z`P((wcz)A#>UflYO@Cu{z>u!>C(DAP8jyJu5WL#A3ODmJ;^|fDdmySb)N9n#Uns^xf-lJ zgP4St1{WI{LXA8%^I<)fw!@ykhWqLg!&Mm9UjC`!#M|_LOht4c$|a*>{zglNM=w@# zVB`xuBMrr8^Gm!Rf)?{wo{;upHBDoz(pxb|yAt-)w5m!md{S2LN!dt1CE6z^q>v$n zh3-!COC!d5$%`Oc=`KL1J#Ud9&WTu1L^Z#>F?{gHuvk|vXKUg5>Yui1lWb`?8DJRf z)<7iA)0ZQER5T+M0Vo#*6{FxVe>xWz%cBc0d+cA##Yr;F<}&(xB$lD5B8V_sgFHvO zhiE#1K@P0XpBYFFmqd@M&8bWFJ#0d+sBc_x8)Sq^5zUxLzXDf<354({igO1{d|L8_W zc@R!Sk@g)=`$b#_9)8bLP>DW@ziIQt7q}wdeA|u0$#>bG4PT&KJc5{f^V#UX)R?|~ z)Qz-%HDDBfEBYTyrq@yYov1n$R74EwJ28O4#XLe=TAP;-?vk)p;juu$oD6a$hFI*D zUQX}giyXfI;`7PSyecZF(g60Yw0≪Go82z=2j6EH*bq0r`D7UOkzCVwom z8S?9*!1w-?7BS*y$Y#R~A@G>vmJoYXV7CQWRpeUD$pw(1NlTEJVG{gg_$84?tk!q- zXXl~fViw-mKcM?k^m+mbP(xtt9(JHAtmOANBy2k4QF_C*>i@*{B_;m7gDhxO~UOqS#pel5lafo>pTb_-l%3V(7m|N)l^5#3L|9=z1Mx}mh>>H zG}Uw0KhX4Jf82X#jZXKhcO+PU{NGVf^S}U4T4!^z5yBeFRGV*N`#R%uXr<;w1x{^T zovQ#ZR8yf7^x5@-S(nSGm)=W+!(cp~!0^gU zVMi)%7EVP@q!-}a8i^wk%9jauLiZ3)yyJ0=VJpxAAo^3&PgvoFf{mnqqtID>JSe^* z6#$|bir7m}UHtU=R)@IgyBOXgb1Ae#PI*ATO`!HK)346te-&o49pWv0R&u=y!q?;Y zEtOlprexd&!%lpAYx_SO&VA(@(^qAtS7bQCC)EFEq(h9fQMGm$X_XOXQaOU%g_#cM zaW|cjHI~BE;<8n>C0zD@`V*+gX*V^eZR@{(ZEl))cDw-l#TF+nHe5!%o}1&Oq;AKVvyQUSkuMZyp$+**kOEg} zj8(VY&PDiK3l>^`orRpAv#>Zvbt8v-HEpV@pyD`fEU89MzjYUv!rLY-lLgQ%Hgx^; z_7m5q)Uy;ritG}R>+_+)ec!^f;EpJzc&py^!=o4ZQGMA>p5V0{23FWs<>D{|Puqmr zp;XP4Y1D#))kUZx0`tTZBLv8eU+60n9~}Ks>Z40lBR@rd&98!VYsr_)4i9db6$D5H zEg||=Ks#UuIz?y)GO31-ba#SkvWK== z7IpRITuO<5GuF@n(<@plx80ymsn9Dy;?`u$mSWu0z&WpG2JSj#Uwz=bh1CYmYZ{Aw z&-p?X|6R>auxrbISIDoK>*paf)@HM(M^M%OSA`*iC$+_TTC*5|_n$v}l#(*|Yp`0$ z&m583hiQMDV;b2Y;7=X5>Zgm*Je!WPl;nNSP9W-k6}ONpatOhL@cE-M;`B8~;~dAl zeW^-zkF#BnGg`NguLN4a^=o|Xah_dpvKM*!R&Z`#(!J<9>PExsNcv7!V_<&MA>*BL zBwr*m6|-{0rn=j@Jz%eniEhTK@M!eQ>|0DV@7cg|Kj%32(V=S#oq`>}(@jsWL2G)E zpQ`wOAE*}&3yD5?M7DMyZ(`!Q>TVVsVq6^t-MS3Adn)7KE|J{o?)VFY6<8c8#4{&Y z-3`N%;t4%Fsa2c>U#M7*-I~_Id^8eWLdZ2k5)<(p4l zWml;(A`O-&Yqs5bw{49q5T=j~Oubnc^lo#1p?>e|vDtqlySGX&wcR??p%bloWEw}X z-`NG7Z)f=e!Nl*nj&c$9w;lt-z5&4tlV~e0MYnh>+5mno7cetHP3anOqs^5Ic^6Y4ocHv1ShL*aL9UG0r zsAiMjQ~At~zhgM_yV7B~8MQXJ6w5u&#r!G&e@o70%UcA>HJD<8(eG`+@8&T@s*koB zp+bVUnvVK{&)JD~PU2`QsyCp)ZWK9xZ9))C*>%I1%Kv7-zQkBtpre7Pr3aV2a zds+WdVN)YiD9{3cU;LO*jk_-+n$g58o`Shu#NMjadU0R-N%tZZ{qFi-PAf13Vw zK9W&4;^^@XuJej=XeGto4I`@JhivL>Z8VgF2-O>cpCLl)D zKNI=|eD+{6YGq2p1c%#=;5N~J-uvd8hu!bm2qV$GG&)L58%ZKc?BRsF@NXil)nX ze}0immJ0Oz7t zfq=N}V8B4l>kAhhU*$D_Tq_$9j~SjH=Mc;qZlwL;D{u*p<@uar0IHgJ-5CemQfHIP z4e^tPsn-W<0YEuH8BO{_+EBU&*f6S63^vPXr=urAhbPtn^HovsnQr|iJ3ndVvjI9B zcy@7oEUtc#5l2Va7+!9~{t_h)p@`_Fr@GnPRKMtal)c8HuvE)`IX}TRX^)GUi`tu; z@b88SK_Unj^>}+LlFbH148-kOH{)A<6iRl29a|j`86&ZfS!IM`5L8xMx(ZfMU@EP7 zvuwQ3>_W#%h7}gfFbHLU+=Z7JbPT?LV=j>jFfnKLe}5i-&bN1BGTfJmpZ7pF4%5Ve zbWT#fia^l=Kzeb1c9n2Pey^tq!O|+q{f~EbkMbR%t^ISW?3t)s-W?`mi36+33 z9n7-nJd7FjCE!iJ^hfkFu#F%pvWeLZ$XpT-oOKx_P%18exY)I35U@4rD1R*}1n&*A zdypl=Mo-4a*@+4#&N2j@okK_{ITGFcF{KMO0E)`5MEF{b4?ZOL$Rg;5H|Fny|615ZdTWNjrLK