From 631226d26b9225d8c5f3f75cc8bc871b18cd149f Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 17 Feb 2014 11:55:54 -0500 Subject: [PATCH] More JSCS fixes; down to 295 failures --- .jscs.json | 13 +++++++--- dist/fabric.js | 33 +++++++++++++------------ dist/fabric.min.js | 4 +-- dist/fabric.min.js.gz | Bin 53951 -> 53952 bytes dist/fabric.require.js | 33 +++++++++++++------------ src/mixins/canvas_events.mixin.js | 12 ++++----- src/mixins/itext_behavior.mixin.js | 2 +- src/mixins/itext_key_behavior.mixin.js | 2 +- src/shapes/image.class.js | 5 ++-- src/shapes/rect.class.js | 4 +-- src/util/animate.js | 2 +- src/util/arc.js | 2 +- 12 files changed, 60 insertions(+), 52 deletions(-) diff --git a/.jscs.json b/.jscs.json index 37d83f05..e33dbf0f 100644 --- a/.jscs.json +++ b/.jscs.json @@ -1,6 +1,9 @@ { - "requireCurlyBraces": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "requireCurlyBraces": [ "if", "else", "for", "while", "do", "switch", "return", "try", "catch"], "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "requireSpaceBeforeBinaryOperators": ["+", "-", "*", "=", "==", "===", "!=", "!=="], + "requireSpaceAfterBinaryOperators": ["+", "-", "*", "=", "==", "===", "!=", "!=="], + "requireParenthesesAroundIIFE": true, "requireSpacesInsideObjectBrackets": "all", "requireCommaBeforeLineBreak": true, @@ -16,8 +19,10 @@ "disallowEmptyBlocks": true, "disallowQuotedKeysInObjects": "allButReserved", "disallowSpaceAfterObjectKeys": true, - "disallowLeftStickedOperators": ["?", "+", "-", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], - "disallowRightStickedOperators": ["?", "+", ":", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--"], + "disallowKeywords": ["with"], "disallowMultipleLineStrings": true, "disallowMultipleLineBreaks": true, @@ -26,7 +31,7 @@ "validateLineBreaks": "LF", "validateQuoteMarks": "'", - "validateIndentation": 2, + "safeContextKeyword": "_this" } diff --git a/dist/fabric.js b/dist/fabric.js index 6e90644b..2a3e2ff6 100644 --- a/dist/fabric.js +++ b/dist/fabric.js @@ -915,7 +915,7 @@ fabric.Collection = { a10 = sinTh * rx, a11 = cosTh * ry, thHalf = 0.5 * (th1 - th0), - t = (8/3) * Math.sin(thHalf * 0.5) * + t = (8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5) / Math.sin(thHalf), x1 = cx + Math.cos(th0) - t * Math.sin(th0), @@ -1878,8 +1878,8 @@ fabric.Collection = { top = 0; } else if (element === fabric.document) { - left = body.scrollLeft || docElement.scrollLeft || 0; - top = body.scrollTop || docElement.scrollTop || 0; + left += body.scrollLeft || docElement.scrollLeft || 0; + top += body.scrollTop || docElement.scrollTop || 0; } else { left += element.scrollLeft || 0; @@ -2173,7 +2173,7 @@ if (typeof console !== 'undefined') { 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;}, + 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; @@ -8601,8 +8601,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab */ _finalizeCurrentTransform: function() { - var transform = this._currentTransform; - var target = transform.target; + var transform = this._currentTransform, + target = transform.target; if (target._scaling) { target._scaling = false; @@ -8912,7 +8912,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab * @private */ _fire: function(eventName, target, e) { - this.fire('object:' + eventName, { target: target, e: e}); + this.fire('object:' + eventName, { target: target, e: e }); target.fire(eventName, { e: e }); }, @@ -8969,9 +8969,9 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab return false; } else { - var activeGroup = this.getActiveGroup(); - // only show proper corner when group selection is not active - var corner = target._findTargetCorner + var activeGroup = this.getActiveGroup(), + // only show proper corner when group selection is not active + corner = target._findTargetCorner && (!activeGroup || !activeGroup.contains(target)) && target._findTargetCorner(e, this._offset); @@ -13604,8 +13604,8 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @param ctx {CanvasRenderingContext2D} context to render on */ _renderDashedStroke: function(ctx) { - var x = -this.width/2, - y = -this.height/2, + var x = -this.width / 2, + y = -this.height / 2, w = this.width, h = this.height; @@ -15790,8 +15790,9 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (!this.visible) return; ctx.save(); - var m = this.transformMatrix; - var isInPathGroup = this.group && this.group.type === 'path-group'; + + var m = this.transformMatrix, + isInPathGroup = this.group && this.group.type === 'path-group'; // this._resetWidthHeight(); if (isInPathGroup) { @@ -19901,7 +19902,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag * @param {Number} direction: 1 or -1 */ searchWordBoundary: function(selectionStart, direction) { - var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart-1 : selectionStart, + var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart - 1 : selectionStart, _char = this.text.charAt(index), reNonWord = /[ \n\.,;!\?\-]/; @@ -21204,7 +21205,7 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot this.selectionStart = leftWordBoundary; } else { - var isBeginningOfLine = this.text.slice(this.selectionStart-1, this.selectionStart) === '\n'; + var isBeginningOfLine = this.text.slice(this.selectionStart - 1, this.selectionStart) === '\n'; this.removeStyleObject(isBeginningOfLine); this.selectionStart--; diff --git a/dist/fabric.min.js b/dist/fabric.min.js index 02a3542f..aa86154c 100644 --- a/dist/fabric.min.js +++ b/dist/fabric.min.js @@ -1,5 +1,5 @@ -/* build: `node build.js modules=ALL exclude=gestures,cufon,json minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.4.4"};typeof exports!="undefined"&&(exports.fabric=fabric),typeof document!="undefined"&&typeof window!="undefined"?(fabric.document=document,fabric.window=window):(fabric.document=require("jsdom").jsdom(""),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sinTh:a,cosTh:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i=u.scrollLeft||o.scrollLeft||0,s=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n=e&&e.ownerDocument,r={left:0,top:0},i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=n.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:r.left+s.left-(t.clientLeft||0)+i.left,top:r.top+s.top-(t.clientTop||0)+i.top}}var e=Array.prototype.slice,n,r=function(t){return e.call(t,0)};try{n=r(fabric.document.childNodes)instanceof Array}catch(i){}n||(r=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var l;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?l=function(e,t){return fabric.document.defaultView.getComputedStyle(e,null)[t]}:l=function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=r,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}function n(){return t.apply(fabric.window,arguments)}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={cx:"left",x:"left",r:"radius",cy:"top",y:"top",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes('//*[name(.)!="svg"]');var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.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 e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];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(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;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(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;r"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined",fabric.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"],function(){function e(e,t){if(!this.__eventListeners[e])return;t?fabric.util.removeFromArray(this.__eventListeners[e],t):this.__eventListeners[e].length=0}function t(e,t){this.__eventListeners||(this.__eventListeners={});if(arguments.length===1)for(var n in e)this.on(n,e[n]);else this.__eventListeners[e]||(this.__eventListeners[e]=[]),this.__eventListeners[e].push(t);return this}function n(t,n){if(!this.__eventListeners)return;if(arguments.length===0)this.__eventListeners={};else if(arguments.length===1&&typeof arguments[0]=="object")for(var r in t)e.call(this,r,t[r]);else e.call(this,t,n);return this}function r(e,t){if(!this.__eventListeners)return;var n=this.__eventListeners[e];if(!n)return;for(var r=0,i=n.length;r-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){var t=Math.sqrt,n=Math.atan2,r=Math.PI/180;fabric.util={removeFromArray:function(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},getRandomInt:function(e,t){return Math.floor(Math.random()*(t-e+1))+e},degreesToRadians:function(e){return e*r},radiansToDegrees:function(e){return e/r},rotatePoint:function(e,t,n){var r=Math.sin(n),i=Math.cos(n);e.subtractEquals(t);var s=e.x*i-e.y*r,o=e.x*r+e.y*i;return(new fabric.Point(s,o)).addEquals(t)},toFixed:function(e,t){return parseFloat(Number(e).toFixed(t))},falseFunction:function(){return!1},getKlass:function(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),fabric.util.resolveNamespace(t)[e]},resolveNamespace:function(t){if(!t)return fabric;var n=t.split("."),r=n.length,i=e||fabric.window;for(var s=0;s1?r=new fabric.PathGroup(e,t):r=e[0],typeof n!="undefined"&&r.setSourcePath(n),r},populateWithProperties:function(e,t,n){if(n&&Object.prototype.toString.call(n)==="[object Array]")for(var r=0,i=n.length;rr)r+=u[p++%h],r>l&&(r=l),e[d?"lineTo":"moveTo"](r,0),d=!d;e.restore()},createCanvasElement:function(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e},createImage:function(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")},createAccessors:function(e){var t=e.prototype;for(var n=t.stateProperties.length;n--;){var r=t.stateProperties[n],i=r.charAt(0).toUpperCase()+r.slice(1),s="set"+i,o="get"+i;t[o]||(t[o]=function(e){return new Function('return this.get("'+e+'")')}(r)),t[s]||(t[s]=function(e){return new Function("value",'return this.set("'+e+'", value)')}(r))}},clipContext:function(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()},multiplyTransformMatrices:function(e,t){var n=[[e[0],e[2],e[4]],[e[1],e[3],e[5]],[0,0,1]],r=[[t[0],t[2],t[4]],[t[1],t[3],t[5]],[0,0,1]],i=[];for(var s=0;s<3;s++){i[s]=[];for(var o=0;o<3;o++){var u=0;for(var a=0;a<3;a++)u+=n[s][a]*r[a][o];i[s][o]=u}}return[i[0][0],i[1][0],i[0][1],i[1][1],i[0][2],i[1][2]]},getFunctionBody:function(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]},normalizePoints:function(e,t){var n=fabric.util.array.min(e,"x"),r=fabric.util.array.min(e,"y");n=n<0?n:0,r=n<0?r:0;for(var i=0,s=e.length;i0&&(t>r?t-=r:t=0,n>r?n-=r:n=0);var i=!0,s=e.getImageData(t,n,r*2||1,r*2||1);for(var o=3,u=s.data.length;o0&&f===0&&(E-=2*Math.PI);var S=Math.ceil(Math.abs(E/(Math.PI*.5+.001))),x=[];for(var T=0;T1&&(h=Math.sqrt(h),t*=h,n*=h);var p=f/t,d=a/t,v=-a/n,m=f/n;return{x0:p*r+d*i,y0:v*r+m*i,x1:p*s+d*o,y1:v*s+m*o,sinTh:a,cosTh:f}}function o(e,i,s,o,u,a,f,l){r=n.call(arguments);if(t[r])return t[r];var c=l*u,h=-f*a,p=f*u,d=l*a,v=.5*(o-s),m=8/3*Math.sin(v*.5)*Math.sin(v*.5)/Math.sin(v),g=e+Math.cos(s)-m*Math.sin(s),y=i+Math.sin(s)+m*Math.cos(s),b=e+Math.cos(o),w=i+Math.sin(o),E=b+m*Math.sin(o),S=w-m*Math.cos(o);return t[r]=[c*g+h*y,p*g+d*y,c*E+h*S,p*E+d*S,c*b+h*w,p*b+d*w],t[r]}var e={},t={},n=Array.prototype.join,r;fabric.util.drawArc=function(e,t,n,r){var s=r[0],u=r[1],a=r[2],f=r[3],l=r[4],c=r[5],h=r[6],p=i(c,h,s,u,f,l,a,t,n);for(var d=0;d=t})}function r(e,t){return i(e,t,function(e,t){return e>>0;if(n===0)return-1;var r=0;arguments.length>0&&(r=Number(arguments[1]),r!==r?r=0:r!==0&&r!==Number.POSITIVE_INFINITY&&r!==Number.NEGATIVE_INFINITY&&(r=(r>0||-1)*Math.floor(Math.abs(r))));if(r>=n)return-1;var i=r>=0?r:Math.max(n-Math.abs(r),0);for(;i>>0;n>>0;r>>0;n>>0;n>>0;i>>0,n=0,r;if(arguments.length>1)r=arguments[1];else do{if(n in this){r=this[n++];break}if(++n>=t)throw new TypeError}while(!0);for(;n/g,">")}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\xA0]+/,"").replace(/[\s\xA0]+$/,"")}),fabric.util.string={camelize:e,capitalize:t,escapeXml:n}}(),function(){var e=Array.prototype.slice,t=Function.prototype.apply,n=function(){};Function.prototype.bind||(Function.prototype.bind=function(r){var i=this,s=e.call(arguments,1),o;return s.length?o=function(){return t.call(i,this instanceof n?this:r,s.concat(e.call(arguments)))}:o=function(){return t.call(i,this instanceof n?this:r,arguments)},n.prototype=this.prototype,o.prototype=new n,o})}(),function(){function i(){}function s(t){var n=this.constructor.superclass.prototype[t];return arguments.length>1?n.apply(this,e.call(arguments,1)):n.call(this)}function o(){function u(){this.initialize.apply(this,arguments)}var n=null,o=e.call(arguments,0);typeof o[0]=="function"&&(n=o.shift()),u.superclass=n,u.subclasses=[],n&&(i.prototype=n.prototype,u.prototype=new i,n.subclasses.push(u));for(var a=0,f=o.length;a-1?e.prototype[i]=function(e){return function(){var n=this.constructor.superclass;this.constructor.superclass=r;var i=t[e].apply(this,arguments);this.constructor.superclass=n;if(e!=="initialize")return i}}(i):e.prototype[i]=t[i],n&&(t.toString!==Object.prototype.toString&&(e.prototype.toString=t.toString),t.valueOf!==Object.prototype.valueOf&&(e.prototype.valueOf=t.valueOf))};fabric.util.createClass=o}(),function(){function t(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r-1?s(e,t.match(/opacity:\s*(\d?\.?\d*)/)[1]):e;for(var r in t)if(r==="opacity")s(e,t[r]);else{var i=r==="float"||r==="cssFloat"?typeof n.styleFloat=="undefined"?"cssFloat":"styleFloat":r;n[i]=t[r]}return e}var t=fabric.document.createElement("div"),n=typeof t.style.opacity=="string",r=typeof t.style.filter=="string",i=/alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,s=function(e){return e};n?s=function(e,t){return e.style.opacity=t,e}:r&&(s=function(e,t){var n=e.style;return e.currentStyle&&!e.currentStyle.hasLayout&&(n.zoom=1),i.test(n.filter)?(t=t>=.9999?"":"alpha(opacity="+t*100+")",n.filter=n.filter.replace(i,t)):n.filter+=" alpha(opacity="+t*100+")",e}),fabric.util.setStyle=e}(),function(){function t(e){return typeof e=="string"?fabric.document.getElementById(e):e}function s(e,t){var n=fabric.document.createElement(e);for(var r in t)r==="class"?n.className=t[r]:r==="for"?n.htmlFor=t[r]:n.setAttribute(r,t[r]);return n}function o(e,t){(" "+e.className+" ").indexOf(" "+t+" ")===-1&&(e.className+=(e.className?" ":"")+t)}function u(e,t,n){return typeof t=="string"&&(t=s(t,n)),e.parentNode&&e.parentNode.replaceChild(t,e),t.appendChild(e),t}function a(e,t){var n,r,i=0,s=0,o=fabric.document.documentElement,u=fabric.document.body||{scrollLeft:0,scrollTop:0};r=e;while(e&&e.parentNode&&!n)e=e.parentNode,e!==fabric.document&&fabric.util.getElementStyle(e,"position")==="fixed"&&(n=e),e!==fabric.document&&r!==t&&fabric.util.getElementStyle(e,"position")==="absolute"?(i=0,s=0):e===fabric.document?(i+=u.scrollLeft||o.scrollLeft||0,s+=u.scrollTop||o.scrollTop||0):(i+=e.scrollLeft||0,s+=e.scrollTop||0);return{left:i,top:s}}function f(e){var t,n=e&&e.ownerDocument,r={left:0,top:0},i={left:0,top:0},s,o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!n)return{left:0,top:0};for(var u in o)i[o[u]]+=parseInt(l(e,u),10)||0;return t=n.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),s=fabric.util.getScrollLeftTop(e,null),{left:r.left+s.left-(t.clientLeft||0)+i.left,top:r.top+s.top-(t.clientTop||0)+i.top}}var e=Array.prototype.slice,n,r=function(t){return e.call(t,0)};try{n=r(fabric.document.childNodes)instanceof Array}catch(i){}n||(r=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t});var l;fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle?l=function(e,t){return fabric.document.defaultView.getComputedStyle(e,null)[t]}:l=function(e,t){var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n},function(){function n(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=fabric.util.falseFunction),t?e.style[t]="none":typeof e.unselectable=="string"&&(e.unselectable="on"),e}function r(e){return typeof e.onselectstart!="undefined"&&(e.onselectstart=null),t?e.style[t]="":typeof e.unselectable=="string"&&(e.unselectable=""),e}var e=fabric.document.documentElement.style,t="userSelect"in e?"userSelect":"MozUserSelect"in e?"MozUserSelect":"WebkitUserSelect"in e?"WebkitUserSelect":"KhtmlUserSelect"in e?"KhtmlUserSelect":"";fabric.util.makeElementUnselectable=n,fabric.util.makeElementSelectable=r}(),function(){function e(e,t){var n=fabric.document.getElementsByTagName("head")[0],r=fabric.document.createElement("script"),i=!0;r.onload=r.onreadystatechange=function(e){if(i){if(typeof this.readyState=="string"&&this.readyState!=="loaded"&&this.readyState!=="complete")return;i=!1,t(e||fabric.window.event),r=r.onload=r.onreadystatechange=null}},r.src=e,n.appendChild(r)}fabric.util.getScript=e}(),fabric.util.getById=t,fabric.util.toArray=r,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getScrollLeftTop=a,fabric.util.getElementOffset=f,fabric.util.getElementStyle=l}(),function(){function e(e,t){return e+(/\?/.test(e)?"&":"?")+t}function n(){}function r(r,i){i||(i={});var s=i.method?i.method.toUpperCase():"GET",o=i.onComplete||function(){},u=t(),a;return u.onreadystatechange=function(){u.readyState===4&&(o(u),u.onreadystatechange=n)},s==="GET"&&(a=null,typeof i.parameters=="string"&&(r=e(r,i.parameters))),u.open(s,r,!0),(s==="POST"||s==="PUT")&&u.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),u.send(a),u}var t=function(){var e=[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 t=e.length;t--;)try{var n=e[t]();if(n)return e[t]}catch(r){}}();fabric.util.request=r}(),fabric.log=function(){},fabric.warn=function(){},typeof console!="undefined"&&["log","warn"].forEach(function(e){typeof console[e]!="undefined"&&console[e].apply&&(fabric[e]=function(){return console[e].apply(console,arguments)})}),function(){function e(e){n(function(t){e||(e={});var r=t||+(new Date),i=e.duration||500,s=r+i,o,u=e.onChange||function(){},a=e.abort||function(){return!1},f=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},l="startValue"in e?e.startValue:0,c="endValue"in e?e.endValue:100,h=e.byValue||c-l;e.onStart&&e.onStart(),function p(t){o=t||+(new Date);var c=o>s?i:o-r;if(a()){e.onComplete&&e.onComplete();return}u(f(c,l,h,i));if(o>s){e.onComplete&&e.onComplete();return}n(p)}(r)})}function n(){return t.apply(fabric.window,arguments)}var t=fabric.window.requestAnimationFrame||fabric.window.webkitRequestAnimationFrame||fabric.window.mozRequestAnimationFrame||fabric.window.oRequestAnimationFrame||fabric.window.msRequestAnimationFrame||function(e){fabric.window.setTimeout(e,1e3/60)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e','')}var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.string.capitalize,i=t.util.object.clone,s=t.util.toFixed,o=t.util.multiplyTransformMatrices,u={cx:"left",x:"left",r:"radius",cy:"top",y:"top",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration"},a={stroke:"strokeOpacity",fill:"fillOpacity"};t.parseTransformAttribute=function(){function e(e,t){var n=t[0];e[0]=Math.cos(n),e[1]=Math.sin(n),e[2]=-Math.sin(n),e[3]=Math.cos(n)}function n(e,t){var n=t[0],r=t.length===2?t[1]:t[0];e[0]=n,e[3]=r}function r(e,t){e[2]=t[0]}function i(e,t){e[1]=t[0]}function s(e,t){e[4]=t[0],t.length===2&&(e[5]=t[1])}var o=[1,0,0,1,0,0],u="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",a="(?:\\s+,?\\s*|,\\s*)",f="(?:(skewX)\\s*\\(\\s*("+u+")\\s*\\))",l="(?:(skewY)\\s*\\(\\s*("+u+")\\s*\\))",c="(?:(rotate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+")"+a+"("+u+"))?\\s*\\))",h="(?:(scale)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",p="(?:(translate)\\s*\\(\\s*("+u+")(?:"+a+"("+u+"))?\\s*\\))",d="(?:(matrix)\\s*\\(\\s*("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+a+"("+u+")"+"\\s*\\))",v="(?:"+d+"|"+p+"|"+h+"|"+c+"|"+f+"|"+l+")",m="(?:"+v+"(?:"+a+v+")*"+")",g="^\\s*(?:"+m+"?)\\s*$",y=new RegExp(g),b=new RegExp(v,"g");return function(u){var a=o.concat(),f=[];if(!u||u&&!y.test(u))return a;u.replace(b,function(t){var u=(new RegExp(v)).exec(t).filter(function(e){return e!==""&&e!=null}),l=u[1],c=u.slice(2).map(parseFloat);switch(l){case"translate":s(a,c);break;case"rotate":e(a,c);break;case"scale":n(a,c);break;case"skewX":r(a,c);break;case"skewY":i(a,c);break;case"matrix":a=c}f.push(a.concat()),a=o.concat()});var l=f[0];while(f.length>1)f.shift(),l=t.util.multiplyTransformMatrices(l,f[0]);return l}}(),t.parseSVGDocument=function(){function s(e,t){while(e&&(e=e.parentNode))if(t.test(e.nodeName))return!0;return!1}var e=/^(path|circle|polygon|polyline|ellipse|rect|line|image|text)$/,n="(?:[-+]?\\d+(?:\\.\\d+)?(?:e[-+]?\\d+)?)",r=new RegExp("^\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*,?"+"\\s*("+n+"+)\\s*"+"$");return function(n,o,u){if(!n)return;var a=new Date,f=t.util.toArray(n.getElementsByTagName("*"));if(f.length===0){f=n.selectNodes('//*[name(.)!="svg"]');var l=[];for(var c=0,h=f.length;c-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s||!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){m.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),m.has(e,function(r){r?m.get(e,function(e){var t=g(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})},loadSVGFromString:function(e,n,r){e=e.trim();var i;if(typeof DOMParser!="undefined"){var s=new DOMParser;s&&s.parseFromString&&(i=s.parseFromString(e,"text/xml"))}else t.window.ActiveXObject&&(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(e.replace(//i,"")));t.parseSVGDocument(i.documentElement,function(e,t){n(e,t)},r)},createSVGFontFacesMarkup:function(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t},createSVGRefElementsMarkup:function(e){var t=[];return y(t,e,"backgroundColor"),y(t,e,"overlayColor"),t.join("")}})}(typeof exports!="undefined"?exports:this),fabric.ElementsParser={parse:function(e,t,n,r){this.elements=e,this.callback=t,this.options=n,this.reviver=r,this.instances=new Array(e.length),this.numElements=e.length,this.createObjects()},createObjects:function(){for(var e=0,t=this.elements.length;ee.x&&this.y>e.y},gte:function(e){return this.x>=e.x&&this.y>=e.y},lerp:function(e,t){return new n(this.x+(e.x-this.x)*t,this.y+(e.y-this.y)*t)},distanceFrom:function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},midPointFrom:function(e){return new n(this.x+(e.x-this.x)/2,this.y+(e.y-this.y)/2)},min:function(e){return new n(Math.min(this.x,e.x),Math.min(this.y,e.y))},max:function(e){return new n(Math.max(this.x,e.x),Math.max(this.y,e.y))},toString:function(){return this.x+","+this.y},setXY:function(e,t){this.x=e,this.y=t},setFromPoint:function(e){this.x=e.x,this.y=e.y},swap:function(e){var t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){this.status=e,this.points=[]}var t=e.fabric||(e.fabric={});if(t.Intersection){t.warn("fabric.Intersection is already defined");return}t.Intersection=n,t.Intersection.prototype={appendPoint:function(e){this.points.push(e)},appendPoints:function(e){this.points=this.points.concat(e)}},t.Intersection.intersectLineLine=function(e,r,i,s){var o,u=(s.x-i.x)*(e.y-i.y)-(s.y-i.y)*(e.x-i.x),a=(r.x-e.x)*(e.y-i.y)-(r.y-e.y)*(e.x-i.x),f=(s.y-i.y)*(r.x-e.x)-(s.x-i.x)*(r.y-e.y);if(f!==0){var l=u/f,c=a/f;0<=l&&l<=1&&0<=c&&c<=1?(o=new n("Intersection"),o.points.push(new t.Point(e.x+l*(r.x-e.x),e.y+l*(r.y-e.y)))):o=new n}else u===0||a===0?o=new n("Coincident"):o=new n("Parallel");return o},t.Intersection.intersectLinePolygon=function(e,t,r){var i=new n,s=r.length;for(var o=0;o0&&(i.status="Intersection"),i},t.Intersection.intersectPolygonPolygon=function(e,t){var r=new n,i=e.length;for(var s=0;s0&&(r.status="Intersection"),r},t.Intersection.intersectPolygonRectangle=function(e,r,i){var s=r.min(i),o=r.max(i),u=new t.Point(o.x,s.y),a=new t.Point(s.x,o.y),f=n.intersectLinePolygon(s,u,e),l=n.intersectLinePolygon(u,o,e),c=n.intersectLinePolygon(o,a,e),h=n.intersectLinePolygon(a,s,e),p=new n;return p.appendPoints(f.points),p.appendPoints(l.points),p.appendPoints(c.points),p.appendPoints(h.points),p.points.length>0&&(p.status="Intersection"),p}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function n(e){e?this._tryParsingColor(e):this.setSource([0,0,0,1])}function r(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var t=e.fabric||(e.fabric={});if(t.Color){t.warn("fabric.Color is already defined.");return}t.Color=n,t.Color.prototype={_tryParsingColor:function(e){var t;e in n.colorNameMap&&(e=n.colorNameMap[e]),t=n.sourceFromHex(e),t||(t=n.sourceFromRgb(e)),t||(t=n.sourceFromHsl(e)),t&&this.setSource(t)},_rgbToHsl:function(e,n,r){e/=255,n/=255,r/=255;var i,s,o,u=t.util.array.max([e,n,r]),a=t.util.array.min([e,n,r]);o=(u+a)/2;if(u===a)i=s=0;else{var f=u-a;s=o>.5?f/(2-u-a):f/(u+a);switch(u){case e:i=(n-r)/f+(n']:this.type==="radial"&&(r=["']);for(var i=0;i');return r.push(this.type==="linear"?"":""),r.join("")},toLive:function(e){var t;if(!this.type)return;this.type==="linear"?t=e.createLinearGradient(this.coords.x1,this.coords.y1,this.coords.x2,this.coords.y2):this.type==="radial"&&(t=e.createRadialGradient(this.coords.x1,this.coords.y1,this.coords.r1,this.coords.x2,this.coords.y2,this.coords.r2));for(var n=0,r=this.colorStops.length;n'+''+""},toLive:function(e){var t=typeof this.source=="function"?this.source():this.source;if(typeof t.src!="undefined"){if(!t.complete)return"";if(t.naturalWidth===0||t.naturalHeight===0)return""}return e.createPattern(t,this.repeat)}}),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Shadow){t.warn("fabric.Shadow is already defined.");return}t.Shadow=t.util.createClass({color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,initialize:function(e){typeof e=="string"&&(e=this._parseShadow(e));for(var n in e)this[n]=e[n];this.id=t.Object.__uid++},_parseShadow:function(e){var n=e.trim(),r=t.Shadow.reOffsetsAndBlur.exec(n)||[],i=n.replace(t.Shadow.reOffsetsAndBlur,"")||"rgb(0,0,0)";return{color:i.trim(),offsetX:parseInt(r[1],10)||0,offsetY:parseInt(r[2],10)||0,blur:parseInt(r[3],10)||0}},toString:function(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")},toSVG:function(e){var t="SourceAlpha";return e&&(e.fill===this.color||e.stroke===this.color)&&(t="SourceGraphic"),''+''+''+""+""+''+""+""},toObject:function(){if(this.includeDefaultValues)return{color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY};var e={},n=t.Shadow.prototype;return this.color!==n.color&&(e.color=this.color),this.blur!==n.blur&&(e.blur=this.blur),this.offsetX!==n.offsetX&&(e.offsetX=this.offsetX),this.offsetY!==n.offsetY&&(e.offsetY=this.offsetY),e}}),t.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 e=fabric.util.object.extend,t=fabric.util.getElementOffset,n=fabric.util.removeFromArray,r=new Error("Could not initialize `canvas` element");fabric.StaticCanvas=fabric.util.createClass({initialize:function(e,t){t||(t={}),this._initStatic(e,t),fabric.StaticCanvas.activeInstance=this},backgroundColor:"",backgroundImage:null,overlayColor:"",overlayImage:null,includeDefaultValues:!0,stateful:!0,renderOnAddRemove:!0,clipTo:null,controlsAboveOverlay:!1,allowTouchScrolling:!1,onBeforeScaleRotate:function(){},_initStatic:function(e,t){this._objects=[],this._createLowerCanvas(e),this._initOptions(t),t.overlayImage&&this.setOverlayImage(t.overlayImage,this.renderAll.bind(this)),t.backgroundImage&&this.setBackgroundImage(t.backgroundImage,this.renderAll.bind(this)),t.backgroundColor&&this.setBackgroundColor(t.backgroundColor,this.renderAll.bind(this)),t.overlayColor&&this.setOverlayColor(t.overlayColor,this.renderAll.bind(this)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return this.__setBgOverlayImage("overlayImage",e,t,n)},setBackgroundImage:function(e,t,n){return this.__setBgOverlayImage("backgroundImage",e,t,n)},setOverlayColor:function(e,t){return this.__setBgOverlayColor("overlayColor",e,t)},setBackgroundColor:function(e,t){return this.__setBgOverlayColor("backgroundColor",e,t)},__setBgOverlayImage:function(e,t,n,r){return typeof t=="string"?fabric.util.loadImage(t,function(t){this[e]=new fabric.Image(t,r),n&&n()},this):(this[e]=t,n&&n()),this},__setBgOverlayColor:function(e,t,n){if(t.source){var r=this;fabric.util.loadImage(t.source,function(i){r[e]=new fabric.Pattern({source:i,repeat:t.repeat,offsetX:t.offsetX,offsetY:t.offsetY}),n&&n()})}else this[e]=t,n&&n();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw r;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw r},_initOptions:function(e){for(var t in e)this[t]=e[t];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(e){this.lowerCanvasEl=fabric.util.getById(e)||this._createCanvasElement(),this._initCanvasElement(this.lowerCanvasEl),fabric.util.addClass(this.lowerCanvasEl,"lower-canvas"),this.interactive&&this._applyCanvasStyle(this.lowerCanvasEl),this.contextContainer=this.lowerCanvasEl.getContext("2d")},getWidth:function(){return this.width},getHeight:function(){return this.height},setWidth:function(e){return this._setDimension("width",e)},setHeight:function(e){return this._setDimension("height",e)},setDimensions:function(e){for(var t in e)this._setDimension(t,e[t]);return this},_setDimension:function(e,t){return this.lowerCanvasEl[e]=t,this.lowerCanvasEl.style[e]=t+"px",this.upperCanvasEl&&(this.upperCanvasEl[e]=t,this.upperCanvasEl.style[e]=t+"px"),this.cacheCanvasEl&&(this.cacheCanvasEl[e]=t),this.wrapperEl&&(this.wrapperEl.style[e]=t+"px"),this[e]=t,this.calcOffset(),this.renderAll(),this},getElement:function(){return this.lowerCanvasEl},getActiveObject:function(){return null},getActiveGroup:function(){return null},_draw:function(e,t){if(!t)return;if(this.controlsAboveOverlay){var n=t.hasBorders,r=t.hasControls;t.hasBorders=t.hasControls=!1,t.render(e),t.hasBorders=n,t.hasControls=r}else t.render(e)},_onObjectAdded:function(e){this.stateful&&e.setupState(),e.setCoords(),e.canvas=this,this.fire("object:added",{target:e}),e.fire("added")},_onObjectRemoved:function(e){this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this._discardActiveObject(),this.fire("selection:cleared")),this.fire("object:removed",{target:e}),e.fire("removed")},clearContext:function(e){return e.clearRect(0,0,this.width,this.height),this},getContext:function(){return this.contextContainer},clear:function(){return this._objects.length=0,this.discardActiveGroup&&this.discardActiveGroup(),this.discardActiveObject&&this.discardActiveObject(),this.clearContext(this.contextContainer),this.contextTop&&this.clearContext(this.contextTop),this.fire("canvas:cleared"),this.renderAll(),this},renderAll:function(e){var t=this[e===!0&&this.interactive?"contextTop":"contextContainer"],n=this.getActiveGroup();return this.contextTop&&this.selection&&!this._groupSelector&&this.clearContext(this.contextTop),e||this.clearContext(t),this.fire("before:render"),this.clipTo&&fabric.util.clipContext(this,t),this._renderBackground(t),this._renderObjects(t,n),this._renderActiveGroup(t,n),this.clipTo&&t.restore(),this._renderOverlay(t),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){var n,r;if(!t)for(n=0,r=this._objects.length;n"),n.join("")},_setSVGPreamble:function(e,t){t.suppressPreamble||e.push('','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r"):this[t]&&t==="overlayColor"&&e.push('")},sendToBack:function(e){return n(this._objects,e),this._objects.unshift(e),this.renderAll&&this.renderAll()},bringToFront:function(e){return n(this._objects,e),this._objects.push(e),this.renderAll&&this.renderAll()},sendBackwards:function(e,t){var r=this._objects.indexOf(e);if(r!==0){var i=this._findNewLowerIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewLowerIndex:function(e,t,n){var r;if(n){r=t;for(var i=t-1;i>=0;--i){var s=e.intersectsWithObject(this._objects[i])||e.isContainedWithinObject(this._objects[i])||this._objects[i].isContainedWithinObject(e);if(s){r=i;break}}}else r=t-1;return r},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i=this._findNewUpperIndex(e,r,t);n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},_findNewUpperIndex:function(e,t,n){var r;if(n){r=t;for(var i=t+1;i"}}),e(fabric.StaticCanvas.prototype,fabric.Observable),e(fabric.StaticCanvas.prototype,fabric.Collection),e(fabric.StaticCanvas.prototype,fabric.DataURLExporter),e(fabric.StaticCanvas,{EMPTY_JSON:'{"objects": [], "background": "white"}',supports:function(e){var t=fabric.util.createCanvasElement();if(!t||!t.getContext)return null;var n=t.getContext("2d");if(!n)return null;switch(e){case"getImageData":return typeof n.getImageData!="undefined";case"setLineDash":return typeof n.setLineDash!="undefined";case"toDataURL":return typeof t.toDataURL!="undefined";case"toDataURLWithQuality":try{return t.toDataURL("image/jpeg",0),!0}catch(r){}return!1;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(e){return this.shadow=new fabric.Shadow(e),this},_setBrushStyles:function(){var e=this.canvas.contextTop;e.strokeStyle=this.color,e.lineWidth=this.width,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin},_setShadow:function(){if(!this.shadow)return;var e=this.canvas.contextTop;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_resetShadow:function(){var e=this.canvas.contextTop;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0}}),function(){var e=fabric.util.array.min,t=fabric.util.array.max;fabric.PencilBrush=fabric.util.createClass(fabric.BaseBrush,{initialize:function(e){this.canvas=e,this._points=[]},onMouseDown:function(e){this._prepareForDrawing(e),this._captureDrawingPath(e),this._render()},onMouseMove:function(e){this._captureDrawingPath(e),this.canvas.clearContext(this.canvas.contextTop),this._render()},onMouseUp:function(){this._finalizeAndAddPath()},_prepareForDrawing:function(e){var t=new fabric.Point(e.x,e.y);this._reset(),this._addPoint(t),this.canvas.contextTop.moveTo(t.x,t.y)},_addPoint:function(e){this._points.push(e)},_reset:function(){this._points.length=0,this._setBrushStyles(),this._setShadow()},_captureDrawingPath:function(e){var t=new fabric.Point(e.x,e.y);this._addPoint(t)},_render:function(){var e=this.canvas.contextTop;e.beginPath();var t=this._points[0],n=this._points[1];this._points.length===2&&t.x===n.x&&t.y===n.y&&(t.x-=.5,n.x+=.5),e.moveTo(t.x,t.y);for(var r=1,i=this._points.length;rn.padding?e.x<0?e.x+=n.padding:e.x-=n.padding:e.x=0,i(e.y)>n.padding?e.y<0?e.y+=n.padding:e.y-=n.padding:e.y=0},_rotateObject:function(e,t){var i=this._currentTransform,s=this._offset;if(i.target.get("lockRotation"))return;var o=r(i.ey-i.top-s.top,i.ex-i.left-s.left),u=r(t-i.top-s.top,e-i.left-s.left),a=n(u-o+i.theta);a<0&&(a=360+a),i.target.angle=a},_setCursor:function(e){this.upperCanvasEl.style.cursor=e},_resetObjectTransform:function(e){e.scaleX=1,e.scaleY=1,e.setAngle(0)},_drawSelection:function(){var e=this.contextTop,t=this._groupSelector,n=t.left,r=t.top,o=i(n),u=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),o,u),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+s-(n>0?0:o),f=t.ey+s-(r>0?0:u);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+o,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+u-1,a+o,f+u-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+u,this.selectionDashArray),fabric.util.drawDashedLine(e,a+o-1,f,a+o-1,f+u,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+s-(n>0?0:o),t.ey+s-(r>0?0:u),o,u)},_isLastRenderedObject:function(e){return this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset)},findTarget:function(e,t){if(this.skipTargetFind)return;if(this._isLastRenderedObject(e))return this.lastRenderedObjectWithControlsAboveOverlay;var n=this.getActiveGroup();if(n&&!t&&this.containsPoint(e,n))return n;var r=this._searchPossibleTargets(e);return this._fireOverOutEvents(r),r},_fireOverOutEvents:function(e){e?this._hoveredTarget!==e&&(this.fire("mouse:over",{target:e}),e.fire("mouseover"),this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout")),this._hoveredTarget=e):this._hoveredTarget&&(this.fire("mouse:out",{target:this._hoveredTarget}),this._hoveredTarget.fire("mouseout"),this._hoveredTarget=null)},_checkTarget:function(e,t,n){if(t&&t.visible&&t.evented&&this.containsPoint(e,t)){if(!this.perPixelTargetFind&&!t.perPixelTargetFind||!!t.isEditing)return!0;var r=this.isTargetTransparent(t,n.x,n.y);if(!r)return!0}},_searchPossibleTargets:function(e){var t,n=this.getPointer(e);if(this._activeObject&&this._checkTarget(e,this._activeObject,n))return this.relatedTarget=this._activeObject,this._activeObject;var r=this._objects.length;while(r--)if(this._checkTarget(e,this._objects[r],n)){this.relatedTarget=this._objects[r],t=this._objects[r];break}return t},getPointer:function(t){var n=e(t,this.upperCanvasEl);return{x:n.x-this._offset.left,y:n.y-this._offset.top}},_createUpperCanvas:function(){var e=this.lowerCanvasEl.className.replace(/\s*lower-canvas\s*/,"");this.upperCanvasEl=this._createCanvasElement(),fabric.util.addClass(this.upperCanvasEl,"upper-canvas "+e),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(e){var t=this.getWidth()||e.width,n=this.getHeight()||e.height;fabric.util.setStyle(e,{position:"absolute",width:t+"px",height:n+"px",left:0,top:0}),e.width=t,e.height=n,fabric.util.makeElementUnselectable(e)},_copyCanvasStyle:function(e,t){t.style.cssText=e.style.cssText},getSelectionContext:function(){return this.contextTop},getSelectionElement:function(){return this.upperCanvasEl},_setActiveObject:function(e){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=e,e.set("active",!0)},setActiveObject:function(e,t){return this._setActiveObject(e),this.renderAll(),this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t}),this},getActiveObject:function(){return this._activeObject},_discardActiveObject:function(){this._activeObject&&this._activeObject.set("active",!1),this._activeObject=null},discardActiveObject:function(e){return this._discardActiveObject(),this.renderAll(),this.fire("selection:cleared",{e:e}),this},_setActiveGroup:function(e){this._activeGroup=e,e&&(e.canvas=this,e.set("active",!0))},setActiveGroup:function(e,t){return this._setActiveGroup(e),e&&(this.fire("object:selected",{target:e,e:t}),e.fire("selected",{e:t})),this},getActiveGroup:function(){return this._activeGroup},_discardActiveGroup:function(){var e=this.getActiveGroup();e&&e.destroy(),this.setActiveGroup(null)},discardActiveGroup:function(e){return this._discardActiveGroup(),this.fire("selection:cleared",{e:e}),this},deactivateAll:function(){var e=this.getObjects(),t=0,n=e.length;for(;t1&&(t=new fabric.Group(t.reverse(),{originX:"center",originY:"center"}),this.setActiveGroup(t,e),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var n=[],r,i=this._groupSelector.ex,s=this._groupSelector.ey,o=i+this._groupSelector.left,u=s+this._groupSelector.top,a=new fabric.Point(e(i,o),e(s,u)),f=new fabric.Point(t(i,o),t(s,u)),l=i===o&&s===u;for(var c=this._objects.length;c--;){r=this._objects[c];if(!r||!r.selectable||!r.visible)continue;if(r.intersectsWithRect(a,f)||r.isContainedWithinRect(a,f)||r.containsPoint(a)||r.containsPoint(f)){r.set("active",!0),n.push(r);if(l)break}}return n},_maybeGroupObjects:function(e){this.selection&&this._groupSelector&&this._groupSelectedObjects(e);var t=this.getActiveGroup();t&&(t.setObjectsCoords().setCoords(),t.isMoving=!1,this._setCursor(this.defaultCursor)),this._groupSelector=null,this._currentTransform=null}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{toDataURL:function(e){e||(e={});var t=e.format||"png",n=e.quality||1,r=e.multiplier||1,i={left:e.left,top:e.top,width:e.width,height:e.height};return r!==1?this.__toDataURLWithMultiplier(t,n,i,r):this.__toDataURL(t,n,i)},__toDataURL:function(e,t,n){this.renderAll(!0);var r=this.upperCanvasEl||this.lowerCanvasEl,i=this.__getCroppedCanvas(r,n);e==="jpg"&&(e="jpeg");var s=fabric.StaticCanvas.supports("toDataURLWithQuality")?(i||r).toDataURL("image/"+e,t):(i||r).toDataURL("image/"+e);return this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),i&&(i=null),s},__getCroppedCanvas:function(e,t){var n,r,i="left"in t||"top"in t||"width"in t||"height"in t;return i&&(n=fabric.util.createCanvasElement(),r=n.getContext("2d"),n.width=t.width||this.width,n.height=t.height||this.height,r.drawImage(e,-t.left||0,-t.top||0)),n},__toDataURLWithMultiplier:function(e,t,n,r){var i=this.getWidth(),s=this.getHeight(),o=i*r,u=s*r,a=this.getActiveObject(),f=this.getActiveGroup(),l=this.contextTop||this.contextContainer;this.setWidth(o).setHeight(u),l.scale(r,r),n.left&&(n.left*=r),n.top&&(n.top*=r),n.width&&(n.width*=r),n.height&&(n.height*=r),f?this._tempRemoveBordersControlsFromGroup(f):a&&this.deactivateAll&&this.deactivateAll(),this.renderAll(!0);var c=this.__toDataURL(e,t,n);return this.width=i,this.height=s,l.scale(1/r,1/r),this.setWidth(i).setHeight(s),f?this._restoreBordersControlsOnGroup(f):a&&this.setActiveObject&&this.setActiveObject(a),this.contextTop&&this.clearContext(this.contextTop),this.renderAll(),c},toDataURLWithMultiplier:function(e,t,n){return this.toDataURL({format:e,multiplier:t,quality:n})},_tempRemoveBordersControlsFromGroup:function(e){e.origHasControls=e.hasControls,e.origBorderColor=e.borderColor,e.hasControls=!0,e.borderColor="rgba(0,0,0,0)",e.forEachObject(function(e){e.origBorderColor=e.borderColor,e.borderColor="rgba(0,0,0,0)"})},_restoreBordersControlsOnGroup:function(e){e.hideControls=e.origHideControls,e.borderColor=e.origBorderColor,e.forEachObject(function(e){e.borderColor=e.origBorderColor,delete e.origBorderColor})}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{loadFromDatalessJSON:function(e,t,n){return this.loadFromJSON(e,t,n)},loadFromJSON:function(e,t,n){if(!e)return;var r=typeof e=="string"?JSON.parse(e):e;this.clear();var i=this;return this._enlivenObjects(r.objects,function(){i._setBgOverlay(r,t)},n),this},_setBgOverlay:function(e,t){var n=this,r={backgroundColor:!1,overlayColor:!1,backgroundImage:!1,overlayImage:!1};if(!e.backgroundImage&&!e.overlayImage&&!e.background&&!e.overlay){t&&t();return}var i=function(){r.backgroundImage&&r.overlayImage&&r.backgroundColor&&r.overlayColor&&(n.renderAll(),t&&t())};this.__setBgOverlay("backgroundImage",e.backgroundImage,r,i),this.__setBgOverlay("overlayImage",e.overlayImage,r,i),this.__setBgOverlay("backgroundColor",e.background,r,i),this.__setBgOverlay("overlayColor",e.overlay,r,i),i()},__setBgOverlay:function(e,t,n,r){var i=this;if(!t){n[e]=!0;return}e==="backgroundImage"||e==="overlayImage"?fabric.Image.fromObject(t,function(t){i[e]=t,n[e]=!0,r&&r()}):this["set"+fabric.util.string.capitalize(e,!0)](t,function(){n[e]=!0,r&&r()})},_enlivenObjects:function(e,t,n){var r=this;if(e.length===0){t&&t();return}var i=this.renderOnAddRemove;this.renderOnAddRemove=!1,fabric.util.enlivenObjects(e,function(e){e.forEach(function(e,t){r.insertAt(e,t,!0)}),r.renderOnAddRemove=i,t&&t()},null,n)},_toDataURL:function(e,t){this.clone(function(n){t(n.toDataURL(e))})},_toDataURLWithMultiplier:function(e,t,n){this.clone(function(r){n(r.toDataURLWithMultiplier(e,t))})},clone:function(e,t){var n=JSON.stringify(this.toJSON(t));this.cloneWithoutData(function(t){t.loadFromJSON(n,function(){e&&e(t)})})},cloneWithoutData:function(e){var t=fabric.document.createElement("canvas");t.width=this.getWidth(),t.height=this.getHeight();var n=new fabric.Canvas(t);n.clipTo=this.clipTo,this.backgroundImage?(n.setBackgroundImage(this.backgroundImage.src,function(){n.renderAll(),e&&e(n)}),n.backgroundImageOpacity=this.backgroundImageOpacity,n.backgroundImageStretch=this.backgroundImageStretch):e&&e(n)}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.toFixed,i=t.util.string.capitalize,s=t.util.degreesToRadians,o=t.StaticCanvas.supports("setLineDash");if(t.Object)return;t.Object=t.util.createClass({type:"object",originX:"left",originY:"top",top:0,left:0,width:0,height:0,scaleX:1,scaleY:1,flipX:!1,flipY:!1,opacity:1,angle:0,cornerSize:12,transparentCorners:!0,hoverCursor:null,padding:0,borderColor:"rgba(102,153,255,0.75)",cornerColor:"rgba(102,153,255,0.5)",centeredScaling:!1,centeredRotation:!0,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:!0,evented:!0,visible:!0,hasControls:!0,hasBorders:!0,hasRotatingPoint:!0,rotatingPointOffset:40,perPixelTargetFind:!1,includeDefaultValues:!0,clipTo:null,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockUniScaling:!1,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(e){e&&this.setOptions(e)},_initGradient:function(e){e.fill&&e.fill.colorStops&&!(e.fill instanceof t.Gradient)&&this.set("fill",new t.Gradient(e.fill))},_initPattern:function(e){e.fill&&e.fill.source&&!(e.fill instanceof t.Pattern)&&this.set("fill",new t.Pattern(e.fill)),e.stroke&&e.stroke.source&&!(e.stroke instanceof t.Pattern)&&this.set("stroke",new t.Pattern(e.stroke))},_initClipping:function(e){if(!e.clipTo||typeof e.clipTo!="string")return;var n=t.util.getFunctionBody(e.clipTo);typeof n!="undefined"&&(this.clipTo=new Function("ctx",n))},setOptions:function(e){for(var t in e)this.set(t,e[t]);this._initGradient(e),this._initPattern(e),this._initClipping(e)},transform:function(e,t){e.globalAlpha=this.opacity;var n=t?this._getLeftTopCoords():this.getCenterPoint();e.translate(n.x,n.y),e.rotate(s(this.angle)),e.scale(this.scaleX*(this.flipX?-1:1),this.scaleY*(this.flipY?-1:1))},toObject:function(e){var n=t.Object.NUM_FRACTION_DIGITS,i={type:this.type,originX:this.originX,originY:this.originY,left:r(this.left,n),top:r(this.top,n),width:r(this.width,n),height:r(this.height,n),fill:this.fill&&this.fill.toObject?this.fill.toObject():this.fill,stroke:this.stroke&&this.stroke.toObject?this.stroke.toObject():this.stroke,strokeWidth:r(this.strokeWidth,n),strokeDashArray:this.strokeDashArray,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:r(this.strokeMiterLimit,n),scaleX:r(this.scaleX,n),scaleY:r(this.scaleY,n),angle:r(this.getAngle(),n),flipX:this.flipX,flipY:this.flipY,opacity:r(this.opacity,n),shadow:this.shadow&&this.shadow.toObject?this.shadow.toObject():this.shadow,visible:this.visible,clipTo:this.clipTo&&String(this.clipTo),backgroundColor:this.backgroundColor};return this.includeDefaultValues||(i=this._removeDefaultValues(i)),t.util.populateWithProperties(this,i,e),i},toDatalessObject:function(e){return this.toObject(e)} ,_removeDefaultValues:function(e){var n=t.util.getKlass(e.type).prototype,r=n.stateProperties;return r.forEach(function(t){e[t]===n[t]&&delete e[t]}),e},toString:function(){return"#"},get:function(e){return this[e]},_setObject:function(e){for(var t in e)this._set(t,e[t])},set:function(e,t){return typeof e=="object"?this._setObject(e):typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t),this},_set:function(e,n){var i=e==="scaleX"||e==="scaleY";return i&&(n=this._constrainScale(n)),e==="scaleX"&&n<0?(this.flipX=!this.flipX,n*=-1):e==="scaleY"&&n<0?(this.flipY=!this.flipY,n*=-1):e==="width"||e==="height"?this.minScaleLimit=r(Math.min(.1,1/Math.max(this.width,this.height)),2):e==="shadow"&&n&&!(n instanceof t.Shadow)&&(n=new t.Shadow(n)),this[e]=n,this},toggle:function(e){var t=this.get(e);return typeof t=="boolean"&&this.set(e,!t),this},setSourcePath:function(e){return this.sourcePath=e,this},render:function(e,n){if(this.width===0||this.height===0||!this.visible)return;e.save(),this._transform(e,n),this._setStrokeStyles(e),this._setFillStyles(e);var r=this.transformMatrix;r&&this.group&&(e.translate(-this.group.width/2,-this.group.height/2),e.transform(r[0],r[1],r[2],r[3],r[4],r[5])),this._setShadow(e),this.clipTo&&t.util.clipContext(this,e),this._render(e,n),this.clipTo&&e.restore(),this._removeShadow(e),this.active&&!n&&(this.drawBorders(e),this.drawControls(e)),e.restore()},_transform:function(e,t){var n=this.transformMatrix;n&&!this.group&&e.setTransform(n[0],n[1],n[2],n[3],n[4],n[5]),t||this.transform(e)},_setStrokeStyles:function(e){this.stroke&&(e.lineWidth=this.strokeWidth,e.lineCap=this.strokeLineCap,e.lineJoin=this.strokeLineJoin,e.miterLimit=this.strokeMiterLimit,e.strokeStyle=this.stroke.toLive?this.stroke.toLive(e):this.stroke)},_setFillStyles:function(e){this.fill&&(e.fillStyle=this.fill.toLive?this.fill.toLive(e):this.fill)},_setShadow:function(e){if(!this.shadow)return;e.shadowColor=this.shadow.color,e.shadowBlur=this.shadow.blur,e.shadowOffsetX=this.shadow.offsetX,e.shadowOffsetY=this.shadow.offsetY},_removeShadow:function(e){if(!this.shadow)return;e.shadowColor="",e.shadowBlur=e.shadowOffsetX=e.shadowOffsetY=0},_renderFill:function(e){if(!this.fill)return;this.fill.toLive&&(e.save(),e.translate(-this.width/2+this.fill.offsetX||0,-this.height/2+this.fill.offsetY||0)),e.fill(),this.fill.toLive&&e.restore(),this.shadow&&!this.shadow.affectStroke&&this._removeShadow(e)},_renderStroke:function(e){if(!this.stroke)return;e.save(),this.strokeDashArray?(1&this.strokeDashArray.length&&this.strokeDashArray.push.apply(this.strokeDashArray,this.strokeDashArray),o?(e.setLineDash(this.strokeDashArray),this._stroke&&this._stroke(e)):this._renderDashedStroke&&this._renderDashedStroke(e),e.stroke()):this._stroke?this._stroke(e):e.stroke(),this._removeShadow(e),e.restore()},clone:function(e,n){return this.constructor.fromObject?this.constructor.fromObject(this.toObject(n),e):new t.Object(this.toObject(n))},cloneAsImage:function(e){var n=this.toDataURL();return t.util.loadImage(n,function(n){e&&e(new t.Image(n))}),this},toDataURL:function(e){e||(e={});var n=t.util.createCanvasElement(),r=this.getBoundingRect();n.width=r.width,n.height=r.height,t.util.wrapElement(n,"div");var i=new t.Canvas(n);e.format==="jpg"&&(e.format="jpeg"),e.format==="jpeg"&&(i.backgroundColor="#fff");var s={active:this.get("active"),left:this.getLeft(),top:this.getTop()};this.set("active",!1),this.setPositionByOrigin(new t.Point(n.width/2,n.height/2),"center","center");var o=this.canvas;i.add(this);var u=i.toDataURL(e);return this.set(s).setCoords(),this.canvas=o,i.dispose(),i=null,u},isType:function(e){return this.type===e},complexity:function(){return 0},toJSON:function(e){return this.toObject(e)},setGradient:function(e,n){n||(n={});var r={colorStops:[]};r.type=n.type||(n.r1||n.r2?"radial":"linear"),r.coords={x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2};if(n.r1||n.r2)r.coords.r1=n.r1,r.coords.r2=n.r2;for(var i in n.colorStops){var s=new t.Color(n.colorStops[i]);r.colorStops.push({offset:i,color:s.toRgb(),opacity:s.getAlpha()})}return this.set(e,t.Gradient.forObject(this,r))},setPatternFill:function(e){return this.set("fill",new t.Pattern(e))},setShadow:function(e){return this.set("shadow",new t.Shadow(e))},setColor:function(e){return this.set("fill",e),this},centerH:function(){return this.canvas.centerObjectH(this),this},centerV:function(){return this.canvas.centerObjectV(this),this},center:function(){return this.canvas.centerObject(this),this},remove:function(){return this.canvas.remove(this),this},getLocalPointer:function(e,t){t=t||this.canvas.getPointer(e);var n=this.translateToOriginPoint(this.getCenterPoint(),"left","top");return{x:t.x-n.x,y:t.y-n.y}}}),t.util.createAccessors(t.Object),t.Object.prototype.rotate=t.Object.prototype.setAngle,n(t.Object.prototype,t.Observable),t.Object.NUM_FRACTION_DIGITS=2,t.Object.__uid=0}(typeof exports!="undefined"?exports:this),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{translateToCenterPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x+(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},translateToOriginPoint:function(t,n,r){var i=t.x,s=t.y,o=this.stroke?this.strokeWidth:0;return n==="left"?i=t.x-(this.getWidth()+o*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+o*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+o*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+o*this.scaleY)/2),fabric.util.rotatePoint(new fabric.Point(i,s),t,e(this.angle))},getCenterPoint:function(){var e=new fabric.Point(this.left,this.top);return this.translateToCenterPoint(e,this.originX,this.originY)},getPointByOrigin:function(e,t){var n=this.getCenterPoint();return this.translateToOriginPoint(n,e,t)},toLocalPoint:function(t,n,r){var i=this.getCenterPoint(),s=this.stroke?this.strokeWidth:0,o,u;return n&&r?(n==="left"?o=i.x-(this.getWidth()+s*this.scaleX)/2:n==="right"?o=i.x+(this.getWidth()+s*this.scaleX)/2:o=i.x,r==="top"?u=i.y-(this.getHeight()+s*this.scaleY)/2:r==="bottom"?u=i.y+(this.getHeight()+s*this.scaleY)/2:u=i.y):(o=this.left,u=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(o,u))},setPositionByOrigin:function(e,t,n){var r=this.translateToCenterPoint(e,t,n),i=this.translateToOriginPoint(r,this.originX,this.originY);this.set("left",i.x),this.set("top",i.y)},adjustPosition:function(t){var n=e(this.angle),r=this.getWidth()/2,i=Math.cos(n)*r,s=Math.sin(n)*r,o=this.getWidth(),u=Math.cos(n)*o,a=Math.sin(n)*o;this.originX==="center"&&t==="left"||this.originX==="right"&&t==="center"?(this.left-=i,this.top-=s):this.originX==="left"&&t==="center"||this.originX==="center"&&t==="right"?(this.left+=i,this.top+=s):this.originX==="left"&&t==="right"?(this.left+=u,this.top+=a):this.originX==="right"&&t==="left"&&(this.left-=u,this.top-=a),this.setCoords(),this.originX=t},_getLeftTopCoords:function(){return this.translateToOriginPoint(this.getCenterPoint(),"left","center")}})}(),function(){var e=fabric.util.degreesToRadians;fabric.util.object.extend(fabric.Object.prototype,{oCoords:null,intersectsWithRect:function(e,t){var n=this.oCoords,r=new fabric.Point(n.tl.x,n.tl.y),i=new fabric.Point(n.tr.x,n.tr.y),s=new fabric.Point(n.bl.x,n.bl.y),o=new fabric.Point(n.br.x,n.br.y),u=fabric.Intersection.intersectPolygonRectangle([r,i,o,s],e,t);return u.status==="Intersection"},intersectsWithObject:function(e){function t(e){return{tl:new fabric.Point(e.tl.x,e.tl.y),tr:new fabric.Point(e.tr.x,e.tr.y),bl:new fabric.Point(e.bl.x,e.bl.y),br:new fabric.Point(e.br.x,e.br.y)}}var n=t(this.oCoords),r=t(e.oCoords),i=fabric.Intersection.intersectPolygonPolygon([n.tl,n.tr,n.br,n.bl],[r.tl,r.tr,r.br,r.bl]);return i.status==="Intersection"},isContainedWithinObject:function(e){var t=e.getBoundingRect(),n=new fabric.Point(t.left,t.top),r=new fabric.Point(t.left+t.width,t.top+t.height);return this.isContainedWithinRect(n,r)},isContainedWithinRect:function(e,t){var n=this.getBoundingRect();return n.left>e.x&&n.left+n.widthe.y&&n.top+n.height=e.y&&f.d.y>=e.y)continue;f.o.x===f.d.x&&f.o.x>=e.x?(o=f.o.x,u=e.y):(n=0,r=(f.d.y-f.o.y)/(f.d.x-f.o.x),i=e.y-n*e.x,s=f.o.y-r*f.o.x,o=-(i-s)/(n-r),u=i+n*o),o>=e.x&&(a+=1);if(a===2)break}return a},getBoundingRectWidth:function(){return this.getBoundingRect().width},getBoundingRectHeight:function(){return this.getBoundingRect().height},getBoundingRect:function(){this.oCoords||this.setCoords();var e=[this.oCoords.tl.x,this.oCoords.tr.x,this.oCoords.br.x,this.oCoords.bl.x],t=fabric.util.array.min(e),n=fabric.util.array.max(e),r=Math.abs(t-n),i=[this.oCoords.tl.y,this.oCoords.tr.y,this.oCoords.br.y,this.oCoords.bl.y],s=fabric.util.array.min(i),o=fabric.util.array.max(i),u=Math.abs(s-o);return{left:t,top:s,width:r,height:u}},getWidth:function(){return this.width*this.scaleX},getHeight:function(){return this.height*this.scaleY},_constrainScale:function(e){return Math.abs(e)1?this.strokeWidth:0,n=this.padding,r=e(this.angle);this.currentWidth=(this.width+t)*this.scaleX+n*2,this.currentHeight=(this.height+t)*this.scaleY+n*2,this.currentWidth<0&&(this.currentWidth=Math.abs(this.currentWidth));var i=Math.sqrt(Math.pow(this.currentWidth/2,2)+Math.pow(this.currentHeight/2,2)),s=Math.atan(isFinite(this.currentHeight/this.currentWidth)?this.currentHeight/this.currentWidth:0),o=Math.cos(s+r)*i,u=Math.sin(s+r)*i,a=Math.sin(r),f=Math.cos(r),l=this.getCenterPoint(),c={x:l.x-o,y:l.y-u},h={x:c.x+this.currentWidth*f,y:c.y+this.currentWidth*a},p={x:h.x-this.currentHeight*a,y:h.y+this.currentHeight*f},d={x:c.x-this.currentHeight*a,y:c.y+this.currentHeight*f},v={x:c.x-this.currentHeight/2*a,y:c.y+this.currentHeight/2*f},m={x:c.x+this.currentWidth/2*f,y:c.y+this.currentWidth/2*a},g={x:h.x-this.currentHeight/2*a,y:h.y+this.currentHeight/2*f},y={x:d.x+this.currentWidth/2*f,y:d.y+this.currentWidth/2*a},b={x:m.x,y:m.y};return this.oCoords={tl:c,tr:h,br:p,bl:d,ml:v,mt:m,mr:g,mb:y,mtr:b},this._setCornerCoords&&this._setCornerCoords(),this}})}(),fabric.util.object.extend(fabric.Object.prototype,{sendToBack:function(){return this.group?fabric.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?fabric.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?fabric.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?fabric.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?fabric.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),fabric.util.object.extend(fabric.Object.prototype,{getSvgStyles:function(){var e=this.fill?this.fill.toLive?"url(#SVGID_"+this.fill.id+")":this.fill:"none",t=this.stroke?this.stroke.toLive?"url(#SVGID_"+this.stroke.id+")":this.stroke:"none",n=this.strokeWidth?this.strokeWidth:"0",r=this.strokeDashArray?this.strokeDashArray.join(" "):"",i=this.strokeLineCap?this.strokeLineCap:"butt",s=this.strokeLineJoin?this.strokeLineJoin:"miter",o=this.strokeMiterLimit?this.strokeMiterLimit:"4",u=typeof this.opacity!="undefined"?this.opacity:"1",a=this.visible?"":" visibility: hidden;",f=this.shadow&&this.type!=="text"?"filter: url(#SVGID_"+this.shadow.id+");":"";return["stroke: ",t,"; ","stroke-width: ",n,"; ","stroke-dasharray: ",r,"; ","stroke-linecap: ",i,"; ","stroke-linejoin: ",s,"; ","stroke-miterlimit: ",o,"; ","fill: ",e,"; ","opacity: ",u,";",f,a].join("")},getSvgTransform:function(){var e=fabric.util.toFixed,t=this.getAngle(),n=this.getCenterPoint(),r=fabric.Object.NUM_FRACTION_DIGITS,i="translate("+e(n.x,r)+" "+e(n.y,r)+")",s=t!==0?" rotate("+e(t,r)+")":"",o=this.scaleX===1&&this.scaleY===1?"":" scale("+e(this.scaleX,r)+" "+e(this.scaleY,r)+")",u=this.flipX?"matrix(-1 0 0 1 0 0) ":"",a=this.flipY?"matrix(1 0 0 -1 0 0)":"";return[i,s,o,u,a].join("")},_createBaseSVGMarkup:function(){var e=[];return this.fill&&this.fill.toLive&&e.push(this.fill.toSVG(this,!1)),this.stroke&&this.stroke.toLive&&e.push(this.stroke.toSVG(this,!1)),this.shadow&&e.push(this.shadow.toSVG(this)),e}}),fabric.util.object.extend(fabric.Object.prototype,{hasStateChanged:function(){return this.stateProperties.some(function(e){return this.get(e)!==this.originalState[e]},this)},saveState:function(e){return this.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),e&&e.stateProperties&&e.stateProperties.forEach(function(e){this.originalState[e]=this.get(e)},this),this},setupState:function(){return this.originalState={},this.saveState(),this}}),function(){var e=fabric.util.getPointer,t=fabric.util.degreesToRadians,n=typeof G_vmlCanvasManager!="undefined";fabric.util.object.extend(fabric.Object.prototype,{_controlsVisibility:null,_findTargetCorner:function(t,n){if(!this.hasControls||!this.active)return!1;var r=e(t,this.canvas.upperCanvasEl),i=r.x-n.left,s=r.y-n.top,o,u;for(var a in this.oCoords){if(!this.isControlVisible(a))continue;if(a==="mtr"&&!this.hasRotatingPoint)continue;if(!(!this.get("lockUniScaling")||a!=="mt"&&a!=="mr"&&a!=="mb"&&a!=="ml"))continue;u=this._getImageLines(this.oCoords[a].corner),o=this._findCrossPoints({x:i,y:s},u);if(o!==0&&o%2===1)return this.__corner=a,a}return!1},_setCornerCoords:function(){var e=this.oCoords,n=t(this.angle),r=t(45-this.angle),i=Math.sqrt(2*Math.pow(this.cornerSize,2))/2,s=i*Math.cos(r),o=i*Math.sin(r),u=Math.sin(n),a=Math.cos(n);e.tl.corner={tl:{x:e.tl.x-o,y:e.tl.y-s},tr:{x:e.tl.x+s,y:e.tl.y-o},bl:{x:e.tl.x-s,y:e.tl.y+o},br:{x:e.tl.x+o,y:e.tl.y+s}},e.tr.corner={tl:{x:e.tr.x-o,y:e.tr.y-s},tr:{x:e.tr.x+s,y:e.tr.y-o},br:{x:e.tr.x+o,y:e.tr.y+s},bl:{x:e.tr.x-s,y:e.tr.y+o}},e.bl.corner={tl:{x:e.bl.x-o,y:e.bl.y-s},bl:{x:e.bl.x-s,y:e.bl.y+o},br:{x:e.bl.x+o,y:e.bl.y+s},tr:{x:e.bl.x+s,y:e.bl.y-o}},e.br.corner={tr:{x:e.br.x+s,y:e.br.y-o},bl:{x:e.br.x-s,y:e.br.y+o},br:{x:e.br.x+o,y:e.br.y+s},tl:{x:e.br.x-o,y:e.br.y-s}},e.ml.corner={tl:{x:e.ml.x-o,y:e.ml.y-s},tr:{x:e.ml.x+s,y:e.ml.y-o},bl:{x:e.ml.x-s,y:e.ml.y+o},br:{x:e.ml.x+o,y:e.ml.y+s}},e.mt.corner={tl:{x:e.mt.x-o,y:e.mt.y-s},tr:{x:e.mt.x+s,y:e.mt.y-o},bl:{x:e.mt.x-s,y:e.mt.y+o},br:{x:e.mt.x+o,y:e.mt.y+s}},e.mr.corner={tl:{x:e.mr.x-o,y:e.mr.y-s},tr:{x:e.mr.x+s,y:e.mr.y-o},bl:{x:e.mr.x-s,y:e.mr.y+o},br:{x:e.mr.x+o,y:e.mr.y+s}},e.mb.corner={tl:{x:e.mb.x-o,y:e.mb.y-s},tr:{x:e.mb.x+s,y:e.mb.y-o},bl:{x:e.mb.x-s,y:e.mb.y+o},br:{x:e.mb.x+o,y:e.mb.y+s}},e.mtr.corner={tl:{x:e.mtr.x-o+u*this.rotatingPointOffset,y:e.mtr.y-s-a*this.rotatingPointOffset},tr:{x:e.mtr.x+s+u*this.rotatingPointOffset,y:e.mtr.y-o-a*this.rotatingPointOffset},bl:{x:e.mtr.x-s+u*this.rotatingPointOffset,y:e.mtr.y+o-a*this.rotatingPointOffset},br:{x:e.mtr.x+o+u*this.rotatingPointOffset,y:e.mtr.y+s-a*this.rotatingPointOffset}}},drawBorders:function(e){if(!this.hasBorders)return this;var t=this.padding,n=t*2,r=~~(this.strokeWidth/2)*2;e.save(),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=this.borderColor;var i=1/this._constrainScale(this.scaleX),s=1/this._constrainScale(this.scaleY);e.lineWidth=1/this.borderScaleFactor,e.scale(i,s);var o=this.getWidth(),u=this.getHeight();e.strokeRect(~~(-(o/2)-t-r/2*this.scaleX)-.5,~~(-(u/2)-t-r/2*this.scaleY)-.5,~~(o+n+r*this.scaleX)+1,~~(u+n+r*this.scaleY)+1);if(this.hasRotatingPoint&&this.isControlVisible("mtr")&&!this.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e.beginPath(),e.moveTo(0,a),e.lineTo(0,a+(this.flipY?this.rotatingPointOffset:-this.rotatingPointOffset)),e.closePath(),e.stroke()}return e.restore(),this},drawControls:function(e){if(!this.hasControls)return this;var t=this.cornerSize,n=t/2,r=~~(this.strokeWidth/2),i=-(this.width/2),s=-(this.height/2),o=this.padding/this.scaleX,u=this.padding/this.scaleY,a=n/this.scaleY,f=n/this.scaleX,l=(n-t)/this.scaleX,c=(n-t)/this.scaleY,h=this.height,p=this.width,d=this.transparentCorners?"strokeRect":"fillRect";return e.save(),e.lineWidth=1/Math.max(this.scaleX,this.scaleY),e.globalAlpha=this.isMoving?this.borderOpacityWhenMoving:1,e.strokeStyle=e.fillStyle=this.cornerColor,this._drawControl("tl",e,d,i-f-r-o,s-a-r-u),this._drawControl("tr",e,d,i+p-f+r+o,s-a-r-u),this._drawControl("bl",e,d,i-f-r-o,s+h+c+r+u),this._drawControl("br",e,d,i+p+l+r+o,s+h+c+r+u),this.get("lockUniScaling")||(this._drawControl("mt",e,d,i+p/2-f,s-a-r-u),this._drawControl("mb",e,d,i+p/2-f,s+h+c+r+u),this._drawControl("mb",e,d,i+p+l+r+o,s+h/2-a),this._drawControl("ml",e,d,i-f-r-o,s+h/2-a)),this.hasRotatingPoint&&this._drawControl("mtr",e,d,i+p/2-f,this.flipY?s+h+this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleX/2+r+u:s-this.rotatingPointOffset/this.scaleY-this.cornerSize/this.scaleY/2-r-u),e.restore(),this},_drawControl:function(e,t,r,i,s){var o=this.cornerSize/this.scaleX,u=this.cornerSize/this.scaleY;this.isControlVisible(e)&&(n||this.transparentCorners||t.clearRect(i,s,o,u),t[r](i,s,o,u))},isControlVisible:function(e){return this._getControlsVisibility()[e]},setControlVisible:function(e,t){return this._getControlsVisibility()[e]=t,this},setControlsVisibility:function(e){e||(e={});for(var t in e)this.setControlVisible(t,e[t]);return this},_getControlsVisibility:function(){return this._controlsVisibility||(this._controlsVisibility={tl:!0,tr:!0,br:!0,bl:!0,ml:!0,mt:!0,mr:!0,mb:!0,mtr:!0}),this._controlsVisibility}})}(),fabric.util.object.extend(fabric.StaticCanvas.prototype,{FX_DURATION:500,fxCenterObjectH:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("left"),endValue:this.getCenter().left,duration:this.FX_DURATION,onChange:function(t){e.set("left",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxCenterObjectV:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("top"),endValue:this.getCenter().top,duration:this.FX_DURATION,onChange:function(t){e.set("top",t),s.renderAll(),i()},onComplete:function(){e.setCoords(),r()}}),this},fxRemove:function(e,t){t=t||{};var n=function(){},r=t.onComplete||n,i=t.onChange||n,s=this;return fabric.util.animate({startValue:e.get("opacity"),endValue:0,duration:this.FX_DURATION,onStart:function(){e.set("active",!1)},onChange:function(t){e.set("opacity",t),s.renderAll(),i()},onComplete:function(){s.remove(e),r()}}),this}}),fabric.util.object.extend(fabric.Object.prototype,{animate:function(){if(arguments[0]&&typeof arguments[0]=="object"){var e=[],t,n;for(t in arguments[0])e.push(t);for(var r=0,i=e.length;r'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Line.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x1 y1 x2 y2".split(" ")),t.Line.fromElement=function(e,r){var i=t.parseAttributes(e,t.Line.ATTRIBUTE_NAMES),s=[i.x1||0,i.y1||0,i.x2||0,i.y2||0];return new t.Line(s,n(i,r))},t.Line.fromObject=function(e){var n=[e.x1,e.y1,e.x2,e.y2];return new t.Line(n,e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return"radius"in e&&e.radius>0}var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Circle){t.warn("fabric.Circle is already defined.");return}t.Circle=t.util.createClass(t.Object,{type:"circle",radius:0,initialize:function(e){e=e||{},this.set("radius",e.radius||0),this.callSuper("initialize",e)},_set:function(e,t){return this.callSuper("_set",e,t),e==="radius"&&this.setRadius(t),this},toObject:function(e){return r(this.callSuper("toObject",e),{radius:this.get("radius")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},_render:function(e,t){e.beginPath(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,e.arc(t?this.left:0,t?this.top:0,this.radius,0,n,!1),e.closePath(),this._renderFill(e),this.stroke&&this._renderStroke(e)},getRadiusX:function(){return this.get("radius")*this.get("scaleX")},getRadiusY:function(){return this.get("radius")*this.get("scaleY")},setRadius:function(e){this.radius=e,this.set("width",e*2).set("height",e*2)},complexity:function(){return 1}}),t.Circle.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy r".split(" ")),t.Circle.fromElement=function(e,n){n||(n={});var s=t.parseAttributes(e,t.Circle.ATTRIBUTE_NAMES);if(!i(s))throw new Error("value of `r` attribute is required and can not be negative");"left"in s&&(s.left-=n.width/2||0),"top"in s&&(s.top-=n.height/2||0);var o=new t.Circle(r(s,n));return o.cx=parseFloat(e.getAttribute("cx"))||0,o.cy=parseFloat(e.getAttribute("cy"))||0,o},t.Circle.fromObject=function(e){return new t.Circle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={});if(t.Triangle){t.warn("fabric.Triangle is already defined");return}t.Triangle=t.util.createClass(t.Object,{type:"triangle",initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("width",e.width||100).set("height",e.height||100)},_render:function(e){var t=this.width/2,n=this.height/2;e.beginPath(),e.moveTo(-t,n),e.lineTo(0,-n),e.lineTo(t,n),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=this.width/2,r=this.height/2;e.beginPath(),t.util.drawDashedLine(e,-n,r,0,-r,this.strokeDashArray),t.util.drawDashedLine(e,0,-r,n,r,this.strokeDashArray),t.util.drawDashedLine(e,n,r,-n,r,this.strokeDashArray),e.closePath()},toSVG:function(e){var t=this._createBaseSVGMarkup(),n=this.width/2,r=this.height/2,i=[-n+" "+r,"0 "+ -r,n+" "+r].join(",");return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Triangle.fromObject=function(e){return new t.Triangle(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=Math.PI*2,r=t.util.object.extend;if(t.Ellipse){t.warn("fabric.Ellipse is already defined.");return}t.Ellipse=t.util.createClass(t.Object,{type:"ellipse",rx:0,ry:0,initialize:function(e){e=e||{},this.callSuper("initialize",e),this.set("rx",e.rx||0),this.set("ry",e.ry||0),this.set("width",this.get("rx")*2),this.set("height",this.get("ry")*2)},toObject:function(e){return r(this.callSuper("toObject",e),{rx:this.get("rx"),ry:this.get("ry")})},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},render:function(e,t){if(this.rx===0||this.ry===0)return;return this.callSuper("render",e,t)},_render:function(e,t){e.beginPath(),e.save(),e.globalAlpha=this.group?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&this.group&&e.translate(this.cx,this.cy),e.transform(1,0,0,this.ry/this.rx,0,0),e.arc(t?this.left:0,t?this.top:0,this.rx,0,n,!1),this._renderFill(e),this._renderStroke(e),e.restore()},complexity:function(){return 1}}),t.Ellipse.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("cx cy rx ry".split(" ")),t.Ellipse.fromElement=function(e,n){n||(n={});var i=t.parseAttributes(e,t.Ellipse.ATTRIBUTE_NAMES),s=i.left,o=i.top;"left"in i&&(i.left-=n.width/2||0),"top"in i&&(i.top-=n.height/2||0);var u=new t.Ellipse(r(i,n));return u.cx=s||0,u.cy=o||0,u},t.Ellipse.fromObject=function(e){return new t.Ellipse(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";function i(e){return e.left=e.left||0,e.top=e.top||0,e}var t=e.fabric||(e.fabric={}),n=t.util.object.extend;if(t.Rect){console.warn("fabric.Rect is already defined");return}var r=t.Object.prototype.stateProperties.concat();r.push("rx","ry","x","y"),t.Rect=t.util.createClass(t.Object,{stateProperties:r,type:"rect",rx:0,ry:0,x:0,y:0,strokeDashArray:null,initialize:function(e){e=e||{},this.callSuper("initialize",e),this._initRxRy(),this.x=e.x||0,this.y=e.y||0},_initRxRy:function(){this.rx&&!this.ry?this.ry=this.rx:this.ry&&!this.rx&&(this.rx=this.ry)},_render:function(e){if(this.width===1&&this.height===1){e.fillRect(0,0,1,1);return}var t=this.rx||0,n=this.ry||0,r=this.width,i=this.height,s=-r/2,o=-i/2,u=this.group&&this.group.type==="path-group",a=t!==0||n!==0;e.beginPath(),e.globalAlpha=u?e.globalAlpha*this.opacity:this.opacity,this.transformMatrix&&u&&e.translate(this.width/2+this.x,this.height/2+this.y),!this.transformMatrix&&u&&e.translate(-this.group.width/2+this.width/2+this.x,-this.group.height/2+this.height/2+this.y),e.moveTo(s+t,o),e.lineTo(s+r-t,o),a&&e.quadraticCurveTo(s+r,o,s+r,o+n,s+r,o+n),e.lineTo(s+r,o+i-n),a&&e.quadraticCurveTo(s+r,o+i,s+r-t,o+i,s+r-t,o+i),e.lineTo(s+t,o+i),a&&e.quadraticCurveTo(s,o+i,s,o+i-n,s,o+i-n),e.lineTo(s,o+n),a&&e.quadraticCurveTo(s,o,s+t,o,s+t,o),e.closePath(),this._renderFill(e),this._renderStroke(e)},_renderDashedStroke:function(e){var n=-this.width/2,r=-this.height/2,i=this.width,s=this.height;e.beginPath(),t.util.drawDashedLine(e,n,r,n+i,r,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r,n+i,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n+i,r+s,n,r+s,this.strokeDashArray),t.util.drawDashedLine(e,n,r+s,n,r,this.strokeDashArray),e.closePath()},_normalizeLeftTopProperties:function(e){return"left"in e&&this.set("left",e.left+this.getWidth()/2),this.set("x",e.left||0),"top"in e&&this.set("top",e.top+this.getHeight()/2),this.set("y",e.top||0),this},toObject:function(e){var t=n(this.callSuper("toObject",e),{rx:this.get("rx")||0,ry:this.get("ry")||0,x:this.get("x"),y:this.get("y")});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=this._createBaseSVGMarkup();return t.push("'),e?e(t.join("")):t.join("")},complexity:function(){return 1}}),t.Rect.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y rx ry width height".split(" ")),t.Rect.fromElement=function(e,r){if(!e)return null;var s=t.parseAttributes(e,t.Rect.ATTRIBUTE_NAMES);s=i(s);var o=new t.Rect(n(r?t.util.object.clone(r):{},s));return o._normalizeLeftTopProperties(s),o},t.Rect.fromObject=function(e){return new t.Rect(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.toFixed;if(t.Polyline){t.warn("fabric.Polyline is already defined");return}t.Polyline=t.util.createClass(t.Object,{type:"polyline",points:null,initialize:function(e,t,n){t=t||{},this.set("points",e),this.callSuper("initialize",t),this._calcDimensions(n)},_calcDimensions:function(e){return t.Polygon.prototype._calcDimensions.call(this,e)},toObject:function(e){return t.Polygon.prototype.toObject.call(this,e)},toSVG:function(e){var t=[],r=this._createBaseSVGMarkup();for(var i=0,s=this.points.length;i'),e?e(r.join("")):r.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n'),e?e(n.join("")):n.join("")},_render:function(e){var t;e.beginPath(),e.moveTo(this.points[0].x,this.points[0].y);for(var n=0,r=this.points.length;n"},toObject:function(e){var t=i(this.callSuper("toObject",e),{path:this.path.map(function(e){return e.slice()}),pathOffset:this.pathOffset});return this.sourcePath&&(t.sourcePath=this.sourcePath),this.transformMatrix&&(t.transformMatrix=this.transformMatrix),t},toDatalessObject:function(e){var t=this.toObject(e);return this.sourcePath&&(t.path=this.sourcePath),delete t.sourcePath,t},toSVG:function(e){var t=[],n=this._createBaseSVGMarkup();for(var r=0,i=this.path.length;r',"",""),e?e(n.join("")):n.join("")},complexity:function(){return this.path.length},_parsePath:function(){var e=[],t=[],n,r,i=/([-+]?((\d+\.\d+)|((\d+)|(\.\d+)))(?:e[-+]?\d+)?)/ig,s,o;for(var a=0,f,l=this.path.length;ad)for(var v=1,m=f.length;v"];for(var r=0,i=t.length;r"),e?e(n.join("")):n.join("")},toString:function(){return"#"},isSameColor:function(){var e=this.getObjects()[0].get("fill");return this.getObjects().every(function(t){return t.get("fill")===e})},complexity:function(){return this.paths.reduce(function(e,t){return e+(t&&t.complexity?t.complexity():0)},0)},getObjects:function(){return this.paths}}),t.PathGroup.fromObject=function(e,n){typeof e.paths=="string"?t.loadSVGFromURL(e.paths,function(r){var i=e.paths;delete e.paths;var s=t.util.groupSVGElements(r,e,i);n(s)}):t.util.enlivenObjects(e.paths,function(r){delete e.paths,n(new t.PathGroup(r,e))})},t.PathGroup.async=!0}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend,r=t.util.array.min,i=t.util.array.max,s=t.util.array.invoke;if(t.Group)return;var o={lockMovementX:!0,lockMovementY:!0,lockRotation:!0,lockScalingX:!0,lockScalingY:!0,lockUniScaling:!0};t.Group=t.util.createClass(t.Object,t.Collection,{type:"group",initialize:function(e,t){t=t||{},this._objects=e||[];for(var r=this._objects.length;r--;)this._objects[r].group=this;this.originalState={},this.callSuper("initialize"),this._calcBounds(),this._updateObjectsCoords(),t&&n(this,t),this._setOpacityIfSame(),this.setCoords(!0),this.saveCoords()},_updateObjectsCoords:function(){this.forEachObject(this._updateObjectCoords,this)},_updateObjectCoords:function(e){var t=e.getLeft(),n=e.getTop();e.set({originalLeft:t,originalTop:n,left:t-this.left,top:n-this.top}),e.setCoords(),e.__origHasControls=e.hasControls,e.hasControls=!1},toString:function(){return"#"},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(this._setObjectActive,this),this._calcBounds(),this._updateObjectsCoords(),this},_setObjectActive:function(e){e.set("active",!0),e.group=this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(this._setObjectActive,this),this.remove(e),this._calcBounds(),this._updateObjectsCoords(),this},_onObjectAdded:function(e){e.group=this},_onObjectRemoved:function(e){delete e.group,e.set("active",!1)},delegatedProperties:{fill:!0,opacity:!0,fontFamily:!0,fontWeight:!0,fontSize:!0,fontStyle:!0,lineHeight:!0,textDecoration:!0,textAlign:!0,backgroundColor:!0},_set:function(e,t){if(e in this.delegatedProperties){var n=this._objects.length;this[e]=t;while(n--)this._objects[n].set(e,t)}else this[e]=t},toObject:function(e){return n(this.callSuper("toObject",e),{objects:s(this._objects,"toObject",e)})},render:function(e,n){if(!this.visible)return;e.save(),this.transform(e),this.clipTo&&t.util.clipContext(this,e);for(var r=0,i=this._objects.length;r'];for(var n=0,r=this._objects.length;n"),e?e(t.join("")):t.join("")},get:function(e){if(e in o){if(this[e])return this[e];for(var t=0,n=this._objects.length;t','");if(this.stroke||this.strokeDashArray){var n=this.fill;this.fill=null,t.push("'),this.fill=n}return t.push(""),e?e(t.join("")):t.join("")},getSrc:function(){return this.getElement().src||this.getElement()._src},toString:function(){return'#'},clone:function(e,t){this.constructor.fromObject(this.toObject(t),e)},applyFilters:function(e){if(this.filters.length===0){this._element=this._originalElement,e&&e();return}var t=this._originalElement,n=fabric.util.createCanvasElement(),r=fabric.util.createImage(),i=this;return n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0,t.width,t.height),this.filters.forEach(function(e){e&&e.applyTo(n)}),r.width=t.width,r.height=t.height,fabric.isLikelyNode?(r.src=n.toBuffer(undefined,fabric.Image.pngCompression),i._element=r,e&&e()):(r.onload=function(){i._element=r,e&&e(),r.onload=n=t=null},r.src=n.toDataURL("image/png")),this},_render:function(e){e.drawImage(this._element,-this.width/2,-this.height/2,this.width,this.height)},_resetWidthHeight:function(){var e=this.getElement();this.set("width",e.width),this.set("height",e.height)},_initElement:function(e){this.setElement(fabric.util.getById(e)),fabric.util.addClass(this.getElement(),fabric.Image.CSS_CANVAS)},_initConfig:function(e){e||(e={}),this.setOptions(e),this._setWidthHeight(e),this._element.crossOrigin=this.crossOrigin},_initFilters:function(e,t){e.filters&&e.filters.length?fabric.util.enlivenObjects(e.filters,function(e){t&&t(e)},"fabric.Image.filters"):t&&t()},_setWidthHeight:function(e){this.width="width"in e?e.width:this.getElement().width||0,this.height="height"in e?e.height:this.getElement().height||0},complexity:function(){return 1}}),fabric.Image.CSS_CANVAS="canvas-img",fabric.Image.prototype.getSvgSrc=fabric.Image.prototype.getSrc,fabric.Image.fromObject=function(e,t){fabric.util.loadImage(e.src,function(n){fabric.Image.prototype._initFilters.call(e,e,function(r){e.filters=r||[];var i=new fabric.Image(n,e);t&&t(i)})},null,e.crossOrigin)},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))},null,n&&n.crossOrigin)},fabric.Image.ATTRIBUTE_NAMES=fabric.SHARED_ATTRIBUTES.concat("x y width height xlink:href".split(" ")),fabric.Image.fromElement=function(e,n,r){var i=fabric.parseAttributes(e,fabric.Image.ATTRIBUTE_NAMES);fabric.Image.fromURL(i["xlink:href"],n,t(r?fabric.util.object.clone(r):{},i))},fabric.Image.async=!0,fabric.Image.pngCompression=1}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Object.prototype,{_getAngleValueForStraighten:function(){var e=this.getAngle()%360;return e>0?Math.round((e-1)/90)*90:Math.round(e/90)*90},straighten:function(){return this.setAngle(this._getAngleValueForStraighten()),this},fxStraighten:function(e){e=e||{};var t=function(){},n=e.onComplete||t,r=e.onChange||t,i=this;return fabric.util.animate({startValue:this.get("angle"),endValue:this._getAngleValueForStraighten(),duration:this.FX_DURATION,onChange:function(e){i.setAngle(e),r()},onComplete:function(){i.setCoords(),n()},onStart:function(){i.set("active",!1)}}),this}}),fabric.util.object.extend(fabric.StaticCanvas.prototype,{straightenObject:function(e){return e.straighten(),this.renderAll(),this},fxStraightenObject:function(e){return e.fxStraighten({onChange:this.renderAll.bind(this)}),this}}),fabric.Image.filters=fabric.Image.filters||{},fabric.Image.filters.BaseFilter=fabric.util.createClass({type:"BaseFilter",toObject:function(){return{type:this.type}},toJSON:function(){return this.toObject()}}),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.Brightness=t.util.createClass(t.Image.filters.BaseFilter,{type:"Brightness",initialize:function(e){e=e||{},this.brightness=e.brightness||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.brightness;for(var s=0,o=r.length;sa||C<0||C>u)continue;var k=(N*u+C)*4,L=t[x*i+T];b+=o[k]*L,w+=o[k+1]*L,E+=o[k+2]*L,S+=o[k+3]*L}h[y]=b,h[y+1]=w,h[y+2]=E,h[y+3]=S+p*(255-S)}n.putImageData(c,0,0)},toObject:function(){return n(this.callSuper("toObject"),{opaque:this.opaque,matrix:this.matrix})}}),t.Image.filters.Convolute.fromObject=function(e){return new t.Image.filters.Convolute(e)}}(typeof exports!="undefined"?exports:this),function(e){"use strict";var t=e.fabric||(e.fabric={}),n=t.util.object.extend;t.Image.filters.GradientTransparency=t.util.createClass(t.Image.filters.BaseFilter,{type:"GradientTransparency",initialize:function(e){e=e||{},this.threshold=e.threshold||100},applyTo:function(e){var t=e.getContext("2d"),n=t.getImageData(0,0,e.width,e.height),r=n.data,i=this.threshold,s=r.length;for(var o=0,u=r.length;o-1?e.channel:0},applyTo:function(e){if(!this.mask)return;var n=e.getContext("2d"),r=n.getImageData(0,0,e.width,e.height),i=r.data,s=this.mask.getElement(),o=t.util.createCanvasElement(),u=this.channel,a,f=r.width*r.height*4;o.width=s.width,o.height=s.height,o.getContext("2d").drawImage(s,0,0,s.width,s.height);var l=o.getContext("2d").getImageData(0,0,s.width,s.height),c=l.data;for(a=0;ao&&f>o&&l>o&&u(a-f)'},_render:function(e){var t=this.group&&this.group.type==="path-group";t&&!this.transformMatrix?e.translate(-this.group.width/2+this.left,-this.group.height/2+this.top):t&&this.transformMatrix&&e.translate(-this.group.width/2,-this.group.height/2),typeof Cufon=="undefined"||this.useNative===!0?this._renderViaNative(e):this._renderViaCufon(e)},_renderViaNative:function(e){var n=this.text.split(this._reNewline);this.transform(e,t.isLikelyNode),this._setTextStyles(e),this.width=this._getTextWidth(e,n),this.height=this._getTextHeight(e,n),this.clipTo&&t.util.clipContext(this,e),this._renderTextBackground(e,n),this._translateForTextAlign(e),this._renderText(e,n),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_renderText:function(e,t){e.save(),this._setShadow(e),this._renderTextFill(e,t),this._renderTextStroke(e,t),this._removeShadow(e),e.restore()},_translateForTextAlign:function(e){this.textAlign!=="left"&&this.textAlign!=="justify"&&(e.save(),e.translate(this.textAlign==="center"?this.width/2:this.width,0))},_setBoundaries:function(e,t){this._boundaries=[];for(var n=0,r=t.length;n4ZGp)ysYM|!e0Ch zW$Kau^8_)EhMtI6C=$dgz+hm<(iRZ;L=y?>Nc zRNevzSi-6RHas2y(WYpy2H>B&Nfm1fR`t6Qt~ThyD?%*Z1FqoeA5>{aMr20TyJ=h& zb5fWOr6TgSSJO{Flo*s)L`DAMcq^oRAt(IR8O72{!gv=mu(0Sr^QnbD=8dB5q^UM{ zMOw9puo(gbJZ*Jku(_$7?TnC;Jb${|7Jz(L)*Z_4dgQBe9c(FPfmged#^fix==URh z!9q!U#iDMuLh@_Uf--E8t(VPTb9SSSr7w}on_sQq9M0*SPM7|>{B!D%i-^>9;?`%~ z^_tzjU(i#pb>kzzv7$&Hqu6?HQJ*s8pe$;J`n_axpk=thPPX=?rK1Iaet)VvoCZZ% zupm*5tVJ!Pl5AcxP7;z#D2i`N@ca+E%+HG5yD#Y(^^2d52ktB0P~1SrfC~6Pb)Yc^ zxQ&g7B>1WP*RO5{J1z;*MM& zbe`%_q)j(&R)4oS&Mpv534a5$tr0{hBv(Cz*u#yKuaNnIV$hRHDum$&WSnnECUsc7O>H$g`b<=x^Fsu}w*UG_AT;IIUe4fnd{H(SOKlkp*4&Bd~n5@%W^)IAFj;74{weGz*12E@ReA1SZ4E)Y@Na_9%uR$Z`a0*?$*{OOuq)$ zQz8S-TMqd~D2YeifPb7BfBO_$I!CM)&QpWdGE86w=mrkgNRH^yvxI#WqWKHdt_-Q- zU*3H<1_GXc|9Xrp(KV7U@7X`sFu8w$9dN%j72MFX5>F1ju_C)9i^Q8_)8=xYwx7u9>W8>%_M4C|41a#gQF*gmG=txM`tdKv z$G;$(=W!+L+pFc_|FGEL*ETieiRGtxKZqD` zyr_abg*veqzmaNfH&7g$AxrC{Hv{;P>}EQd)lv#|Uo? zHkhv~+N$^W&qws?)gwKW6mf@FbkLk5ok3Ct1W04WYi0BWq_eDs(`IDQNB_3J8S^i48Zghbo)*@qoYMG@09DgAzU51k}4CNB~alWDO{r#-J zoZyH)U=2i#@lOMw?yYdfN@tFQZb12>p5{r}=fZM8nA|Y~=V) zSK8B1&ErZI;fl2Pwvi39)hid@9rp8#BMaibIEsVvvdFJ!#lJ`R=U&SlxL>0CDg@3~Y$nNQ<2ptGRLa z*pZ=CGlj#2qwuFJ5|8 z-h_uhZ=>;ybQ~GFCSh|>^x;562dc#(8?0iU7M+MUfFoKVlCE*{xk-^6+*clp_XR27|hy05lVtEf@%vfU>3Q#C8~<)Dtp zS%0imd-SOHFomJI8=TLgReJ6%T}_)_0p-KKQ9~c9!1kTlzwT^b*AzMn;`WR8im#2^ zWWUcMS|Q`yUHSI3){YzZ!NdkWI46fta6)OTg+H1Q4NzVC#@v8_1tMZ4}~J4 zd|n?9{xljt{}!->5ugLPtI)DnO^RV!%YW#xitgo;HHz$|^}*m7zghuX2s5aA9V>mc zeiJTWJayEobRTX)p$;h@e`O!|qc7ddjoF7{(hPam8nX{YubQBd51?999{{5X*HCvE zD=Q>>nGJ(+wHq7$=KaiuzZt;aUN)HZj7N+&Up95aLz!^spS*+d;Cbf+?iIN5qkqBk z13i<;qCKFnaBr33pzbg1Q7vFps3E$5ff?)ZK`W?gr7|@CB5_|*(-NbNVgs;-VU8NI zte;z(?Dn%OG-0o-w3oY^_xSVb^?>IPDnEc6&kvtRy5|nGZe_xr*ueYe_5ts|3adVg zM-*%3edXrm(|0r;9uEHWd|Dj*X@Btio5Sbg;$TOIGCmXu*fHo0MPqO9hvyWLPTs@8 zp^^E|&v&o@@4Z@=c*bhm%^;7c%_QyBWep%^A^rY3oXG5yMjD=5KY=l~f3)C>N7 zTm08LoBNCexED7P4_M;ey4hKzuZn~MFNk?V4;A#>;0oD*3xQY1VY{gD)qnatpFO7U zR_}SKLidVCRI!?m3Ll>ISRq(jV}OWKZ|nVFj`r-_IUXo_bkGgD}$^HTUy zgx}n*%48+8QfRKTQutaXa}T^OUo@J80U%<2XPd#)-L5jRHNBI=EZ`YxOO zo_vr6D0HiHQ}|eBEnzKK@_)0+%)_sY>^$aoTZaQE5M*2LAv0;#1QYwUPi_x9fTP2_yuUby$av0>c_4eG zWrJ)KUcaRY!KaYhkhv%2rCBsZ`5h5e!=Gh;maS?l`n+7u=?|;!muSlce#fKH{UQ8& z2LHZ>f6w9HH}LOI@b6pr_vg`w*YR=Qi&nScH2J7nKK(fVIDa_nMVO%%4p8dKHUcbW ziHz&O&$F|*hM%v|l3al%0@m>J&Do?P8UIBo8RclhPDi0S2w!buFXYf@p4bs6U1=6F zQfp)ptJLqat9-dh*HK(j9NGc<3mLab(F9(=hZju8Nf|lRkdpbB80vEqu4*O?A)*GH zkJrd$%b3iTkbjw;MTlmHNarnd_4eW_C98xme?`a zmMRJ}-;IRIiSHCp&;0$tQad_g(QkU!qE7&PAd7{(fCe5y2#NDE?UWpu?PM)m35k;M z5=sgpP_3n972HC28sD=ExU|CH?;k%7f?kEk44+ZT=zsn`ceDH<03^@IV5bJXLMP(3 zUMqRu%k1WKoHFN~BR~9Cx|G^jeVsDF=lf8NBAS5@r#jGux8k zHj3}0_1_{EH75DCMQlcQxK^mY4{#3P^Iv};$s&~IeR{OY8UPG{(Wk*E*xS(Ge4YkR z;r@I23x7`x_MXO1$xIZ+Q#CaiF66eO;-|qLw-)6l^H@w5&HP&AO)Z|6(dy{C;@6r5 zFQEFP9PL3_-S{6jdJ9MW_vEr-3pY<)%^<^zqan2lzoLIHo=R>k8%UoKq5LF)bi5ba zqO>TB=~!%)YNn*sW0oKtV^lns&zfXDmh6!57k|wz!)*XS?`F4BT1b6VNr0Aj*L4uj zHbS~c{;E4aX(0=aD};oC?>vqX5{=Zv1OoaCf~c6Fz^hC`Q_ms+p|XlbNH62*TO{1j zVu_T$@qoweLefH#T8pubrO$`L$0!@4w;p;fK z2owiTojPUxwv-C>sMvMNl{MG*_kfh{Z#b5*mRgy6*<`Jd%X3Y>HWJw}5tVB|QrIn< zL2Ap!zd_U@QOZeGlE^`IuQj6OGk=t&C7qhX$fdm|^-YeH#xlB_0RkAP9S|gSn8mY* zn+%yyBHy1u!dfY`<$$zpC*UColFFNK5+r#mf$yRq$tCT*g?5THGaZ6$Hoy+(`-rdtt4BN=kq`v<0>!)PG26gshLk zk$vWFxKzpT@32D6<^3$LW=nRzDwms!vY=nQ)$ZAHnXhVgU!mSF#SlJokM~OiWJ>Wl zP_9ZHl$uU$(F=NXB;u(!fL|5~QGfKDn1b7kZqbohDj)SxGtv?O3yTg>yn}$h+b>L` zXLpMfl^9U=kA!%`r^DgFX@7wQ2GM>R)Ylim*;BcF4BJn$6r~bmU6a`n{Ok3i<>~AU zcG(Ovrpv7`n7G5=2IH%ZI>Xe>2tWWTD3I#5z&h`NAgf`$BB8jqy1!pRHfbi$oR@i8 zI7HKR&ThUd(MardD~;nLXbRCy;Yf0TRu4%IYr}ue?BdAQrNXslDqUm`_|4vdF_V#4>&@&tdfNTE=ljtO1?;zMt@d%*F)BVV`O2H_+Y6m<(s97-K7*qAg0Zxa#*`Vxw$Zox#+8{|1cygdwUCUudJ z`kmO>x-lzrjAqI>MqIUg-o`Es6)&>Su@7 zq)a8QPbB?xjeiVfIcH(P9kGZ>^0{CT4}#4=CgQ1N6|YpKiwf*UJll)R!MMC9PN5op zvn1E7Fx2%{Fytmm=JZ2MFwrKr>+NsUT--f`vJ*rKIEQZ{H@sp$$E5U1SxkoiMBA^6 z`8zq9a~lye$=sL9UWiomuFfO}GDZ$0N2Bg;O=c>3n|}i^ZAT&D1gDkMWV;(m4W%OkA>-!&_b8K1jQt}}=`rlZg{>yJa{fI^h_G?!;1>Nch zQ9?_|`NGX@3L-5XP=Ua%fj+n7xy3R^@7iA5X>S z$Ft~Q`eK;lB5*u(zrMe3k3)IvY*7?pE3d{$2>xBs#mh9?w=w+za9fIyGib_p!gHj- z7KZZ@awu7mvme8_-p2x0mv)cXSy!lmZTj262k_|?p%u*I?F<>+h`A^xcOzNcXu5(w zoPU|poHz)srI3(^j#!J;Vpq{6kFkq{fi8C=Ibbw5tPa5X@+-m;@Rqxc@Hm-cLRLCB zpi*s-m`N)Z^;{8z3~#RhuZp(ZKWWFVgbE(F3v*`|=4uzRFWGpWeU*3bD?(2B4{Z$L z)deS>c)LIl|CCj~uU8)Uj2c;%(N~R*3V&;_ck*==mj#&;IC}xQg~CWAZ8aX+^wQJd z{}TM=8QZ(Fxy{L5Kq#c~q!$O1J>;=?xG^Fe=j0y?kQS@*Y`iJGqb=eQ zav>ctCNigt`_{yleC%k-?exl%ofgtt=r!zcxC&!o`H(Bg)?VFL%2KQ)ouD0)h^A;Z zm2*Zpy)B<+h7CXR$7=Q4^~vhECVw*o(T)0;)i(54)`r&3@oCq0>mOL(3Y@4MUkcrckF3(u88TpDlHqsD_td_63yl%oBjTF@wzO?uhpl{ zP790ij6eQF@6KLc_|DvyZe}%YTtdv`400 zcJa=2dTMR4pJ4I|-IK!ZM$zsA<9#UF9nfKOm-hRu4bMHCI7h`9@lMvRVCjlQcR2-4 z&5?bC-Bj0isb649@-VRMt%M5yYm+v+-%9B|=B_r8c0;|aFfbi(?&bAfwj@=-J#|M* zr5aHZpp0of_RcUknG~_*)_>Xdz*X?E-uBqwmiKsr?m*!jD2Jb&?qzS$fP^Xq-y7i& z7`fY7_3|;Tsx~8|*dyB2t;#lqzte}B?CUP~`9N(?sokyijnVd7qy6yc_EqbVTlNt> z(Cv%XC5Qf@b`NCH17^5Ad#J?&)#8C_ah_l2bM{bsLs@W$?eQ`XwSP8LtqoOc?4RBF z(apl(R=~y$g*Jc^d)I)MI5P4diQL|yi0o$lN4)xr9o4@uvcC|ycU1qvtp0`QJ*!p@ zWcD2#03o*=YTiZ%jXVtyyWz1Lh^2YwFbuJC52j@t31I}64u!k`v?4`w(DcwZ66~CO zP7tS6<3qh19{PGYJb$D*i|(qp2aa6U8AFv(Y)5WlJjqy5cKc98*{!D{8L28#=8oIy ztYT<@?DlvWVo(2e;YXENn%!ae(dUV!#6?oxWp}xs{=&|U&T(F6^G>#6fjX|jR zLRW6PE;`X?R9#;y40uKCJwV?dbK$*3yL&aG8e8|CnfSoTUDh?Q681ndcc7JLpjFpEs|N>)CbqKT zV(FeS<)@7FbzG_s+T} zEW`B6u7C6_Mw&Wa@dcAxeATg$VkcqQl`!i{xHJ;lYqaWGqt*Y8%Z5!keGinrcxe{; z1yRE9A?YJLB!{}_QrC48XS~@JxcV9vA$lq96IROC~!k-aQ`JQ!06e=hIGub1l;*Wg4z~S;SRN@eawN zJby)arkF2_bluM;by~iF6 z5Y}FS87kNvkm1lws4#)Sc7cSixA`#rMtWW*%#)a!VSe!Jn~}gpc}$JQRIQkjVz~ch zKDAxA=_kG{gm1bzB?cq%qzqAASXQ$x&VMhYY^p6~#Up^F41*qus1gc{GN@C-!- zMTOaC)tK$5l0KfPx~*N*Rkh@Gs*M*4zujZ*yj!(>2}yv*%cdJ@`YZavw!czsK4Ltd z(`dG{Rd>kj_A#yF-q#i^8NK8RGA0~4+hU@=N=56|Cx5~!C*{I$4GA>9FdJtn(SxVc%^f90UeLa zc&2;w-7=f~{vUK=& zgjZ8C6drz@-;LvE+mBz7JVN}aC=@SM2_$Sf;IgGCEI<8-0;#&mzkK)+n?#6VH`%V- zAM<&wv0G^D4^zOR`hU*)i?h3Lw)g5A8vWxiSJ_P@0;ubMuCpZg!)Ww9{4a>laoXjs?E|o`1(&z|n)?w#mi-W%|vyWTvllGi<*1+93xiiYPDpd0xVInx#$fh*ZC5*Geo=^;eSEguxu&1 zgSl_$L}GqE+zneU%Nr2^73f{F;AoT2Zaja)68p`AX6Z_-B#-%ADSsYQh)o&^(I-ye zDLB;#nbcu8{7Sk#BHfQEpccs(Fk3es4t|0b<;^+{J#`#*)N!cmsLeW_dFpu9QO7e? zhd8mPs-lWustV?Iu%=*h`t_M9FN@(Q8J}%iYlNh%__UJXCjYGE6S%N%`P{17%ZCS^ zi^VjSq+=RdV}Ql^3V(3M9^#GoF@%3|ie(;{{H|33C~9SW=4RE4!9CAokLXb@TBljM zNK1`LFVpe}VD+>-Af`Z4_Ue9lPy?Y`9vt?UlXY5=!MMCP9zH{~T?CPo7N31g@!-Yl z16X(q3(i_G3m((C%iGSH`q?eux6dR(Ae+ban zime^?429Uxdy4dV+B3eB2K^E8XY+7`-rH+4^VrBdwlg2bUlS)pXFfDCAKIC}j=yQ2 zKsa*W*hkI`mK1EAH9ngiX22C^qcLt{ay0Nod{XG$a#B7O>1xaRhy(N@a8Qjyv z3^rLHVI{3Tgs7-ZvkjC6H3MXXbY$bTbuhMV9oW_fm4CCo+i~Ld>voJI7{!}*(nciR z9=1yz(zs!nzk(aToxY*;(ROR|uDZLixWxi3#ea$oo>MEHLK|Ty&IN_hkpm`)3|3)*}+6pB=9Z>L68Q+aKY~H`PZTRs$jaQ zdfWOnr+;yT`ujmOM6;=fT|ZshGbBq`r3%TMri1_ z@2$PyT^t^o-D_0$8ri*FHSqpX6)m0L)}n~MfBB?h!cfjEpOIehRq#b~E9w#xtSj3} zV_8yE$0}{O6%FsS&s3Y>wCn?;9s_?N&F8WzVSkP1)2DSl@AWw4M_g5IK?1fpSD^v4 zKjr6kR+iPg9^8%<)DSV7u>uw{&mrY8Vm27FHJZVBCdC_a#51VIsmfbXeGqqO#9?_U zp+r$q#84^^aeEQW4#P0Gn6Y$1g6eOw7J#lF063GsY!wi=2$%hNC8NDcRgEy4!iC0K zK!2UwR7{+ zF^XeJ_)@?&#jt`Fkm1nDaA;rYRG5aS%}kl4)yPd$5_%$1DE>QAced&^7A_lCMMpO>12@VJMN8|>zAIONxmdz-I6JNVXG4Q+RN2_`BgyRC5 z!HpffJ+xEhA@ke_sVJW@?aYUU_j<0P(6P&u!UErq?y?qgbJV^hvEpdK z$CF6AaU!tB+I9Mqdk69JHY147!q|Ug%Osb)bP_;+iD6Y3uuiH;K`|+J2tF1Sa zVFowvRKzP+=pF+yNEKAQx0LSfRBpCJZUwZZ>mcD4lp%!NbH$@64f0$(S$~^*c$p%R zl&tN|woFkRA~N*(OQp+?q^Gbb!NT%%cBYx;6_EN%pqKTcs9nl0;sDIgkY}eH;DNL{0%54{&fOh4aE$-x{#6LgPRV7CZyCq52Z31Ma9G#$s8h>ssx?q z#Ljb~@|;9|9FiXS6z9osAf*;dW=0F9;`!6a5GCzGV>n*IASO`u;}(s39(rFtIgc@U{fiGKmxW#w>tuBE(Q-ZO0DJ?#bBJYLX^bbRrGn9ibcS{;>5!es{1 zQ<*?!U`0p-smLIdEolw8K&6TkCO);b_8?HkR>heYuvF?NiSxMK?vUPkgjm#v%WPiW zwB(|A^h1JCJeL#zvH&~BTutsIK0a0ou-hO$TPy$)eBegq_J79!@@LESoV^yV9nsNF zo$PmB1#Mr&`j~&>3Z~RkdhE6sGK>JX@@6S-lE%42wy{}FYdaN6x0enk&jl;QU9Z(I zi}`mjc5Vx+0CeG$Y|biu+0GKEBx|#H#oUYO&1I`{PW6+VcwTCEc8ATjG*%gVp`Fiioy})(ugMY466E8;4Zoz(H6+pf~f1~9T z%BDjBwWh)}411EC0t86Sx`%uQIZ$oi+z3o)K0PNlvNo+=EWY{lhI#x&JK@qmWE(}D z9wnA($@Nf6`>7PS4;{Gg2Zk*c)F-08njPK^sG^d~hlSw&8aA}2(mvMH`#(nT*%hy2jd=L@Tdpr-oBpWSRe4Ph#H8*m zEXlp8s*?OIu9x$@qD023ylVFTdq#cy?>(Vq9e*eLFjva?v5sbb5(GvR5d{fZOfwbrF_Q=zIl69M@{YM!FY&vAIcL?o;^ln) zo+c9`XUlwbT=GiLOhQ#I>zC({_>Q-M*LsHHImhLCcFA3r;@tw#Kn*dtmDvZB`Fl^s z8h>rOW5&ez)Vn?jJ03`I^9aEt;`YID+UV(8&G9>~+fCAC19J|v*z`LiHncNI{0k@H z<#IVV&x<($KjL{f^R8?B&Q1thSsz>PD-Orn^>T(xE9>rh%`MRyzO2#Aw6i(_so8SI zPafGsP@zsiX~7^BoVBH1wKq#C*66HA%YPn#Ro^F^l?!VH19Jg`n3tkzon`s_nw?d& zDmSOGgRRo8mruHFRD;`4h}+BkxwX1BJVeEwk#&2Ok@SyYYs}AxXePP*y5PnVj@gL_LT@uX+fW7Mtl;*NIBQL+4 zj^hjk{ds?{MIT#$M%d{WR1u{MT7SU!-d%$*<t^}Y^+!+F3pD}RXd({&Bf z@=!L;4C>0qmxb;Er#|K?AhG6k4)a%IqA;&Z_JHbk8@tO21H7`ZN_p@^Iu$iB7fG<; zoS9|EeP&HC2b*2{m{N_czUC?}Jd0#XTaiY6R=iuE!f|Go%&pLhq#`2sO@%6*mCmUm z{M8$sF_9?;^9tpis0p5~J%3|O5m)k|z27CpL6$#_d_Mrju#h zqYIS9BQ)aoU0K1{YR=xy>Q^HF#7wl4QlK9iF(=%1tC6#a?YxyVf~WFB=gWf60#Gw- z-Ue!t@Ify$unOxH(joZvLcv$`x<(-mU}~G?YSDvkLWI+iQs7&3z?vmG z3F69VC&=0JOsubrJ%8oq?1bL_+xO3LDLc|x60%t9#rLRQ%r1zcVmj2_PLb=nKN8Iw zm+3UnEeA>94j?#__EK!nVxzw80jhoY~TPo7waEyS4(Df4olcv(%Pg-(jJ7T73hEs-Y z?NyR{5x};Djm}JD3&?Cw1nQ5QL-5Jq#g)*RK~%tyVR23tNwD;Kg+LLoAE97>$ei3` zAwuiVs!Er}okG(A8&BYcX5A9&>uOt#)_VcUD^AHCo(h^n*iIG)+kSsnok7#*g)(x3 zch)DeQ7@Vg^nccny+d<0t*zC*9$Gvi@p8gl7y7ac_yg&5N1C$k;Ifr?-2|+?#RVO# z=qZ2tiArw+`p7M4vecYd>rS^0M|+-Zo>zO4%yespJPB%gEFPIVH&#J+VmyhDm=zD- z(u^|agMS{Et2X<<0h1C&I&gc^hMbb2YJlc$$V?mggMZAaEXnV_2{_bKh@A)Ov4>$6 zA_)v3pHEa7CPa2Y3Q!CWV{}xf;)TG)@DR;rQbqi1|D~IBGP9vnuE9kj8#c0P-mfqk zV1qH!Q9N6OhM2l8XtRyKetB0sjSA~!X8&NG9@mo{%JH(Y$>&WKpPOcP7e00L!II>L zL-k8p=YJ%7wRuZU7aB46r7D3?ZgR%&@HofIv44^zPi=SD5=q1ea&@8%G{<)(t^03@ zT6P|Bq9V4D;Q_&Oi!<&`hNDqIypML4$?}&T_zn(+*%{jvgZt1RYm?TKIa}Olrp5H8 zWfTG|o;N(9O6W_9{n0>K%QZ%(jdpRpx2utkx+*?Np2crpNq72Y_aYvx`(Iwid}g|E z8GlJ^dF$L-V{73DBEpLun5}w~LJxw_h1sCYfgR_fZTxcAb$hV^-DRT=3p+3?V1BI{ zTZ5}G?7{Orih99+{o$92Wmo4*w0NyImf_vqig%u*3ZG$lZ+`w>W98>hZgzfo z#I(`x&W2sX^*dX&o)FQjw$Sq!*4Gy=D1SmLJ2;c$zFH6J^=btaT`e=9IFs;kJiWbI z?m<&Ei4~0pqhOB}vl8XXNrz-0L-+T=ugBl_zZF^|SuxL0-3fh!2YXX;Q!M>3>_Hdz ze);vgAK$*(3;M(1-=4i14qqR?-h)2wjR)i5@XgQU!Z^5WnpH9!-rU>_Zk`Rw>VIM= z1cd4#NU4VFwLc*P!fr|5Dei*gCi`;rD zlzeouQ1#gp@?K6klm>gsWh->go_~rDE*>j;dD{z6)klRlPFTDGS#eslRy2Z>pVX+# zmIk;_S#{00vxzyYXD?pS+{IL@t8uLz6jetxxwaB}KYvHpRs>{2 zAmFf-$00Cx|cNlKvR)uk3n&#B)r{f+^)I;6%8QC3gz4X~IW zm*3gmEA*?7&2H28zhvF53+~~Txg?$Puc1i1ZG4UrCdcLXRayA0`ajf~V6;7=DI69K z>Lx>#DW8>IyJl%DhRZZm+G?`^4xbi~<7ak5ujX$tGnv6{$otgpPJas*9(g>9AJcXF zLABLv2ep940?;#GV`#TF{qZD!k&Y()zB1R#v?<&gi829uY^G^`Mg}qRT5^r%m^ClD zGrLipW%>Np*wvg{_1to2f4CyhU#SfzHp};Ag)8_)3uvb+=c2wX)14ZRXuRKCl!Us?G3=Z|^a zuma{b)EuTR?TX+JM^eR>3rB}acN_JJZu4dnMm@L@0Er9k_9O#FYIs{*2ENFE?`>ZM zC|1sV^4VH+ULsrX&JpL!fHHY>5x9v2fA`Tvg!`0mY5zZ{=@B1YWP zJM~PG?46#)dj<{-F#(wb47N{Wq_9X}z0H$+NJLE-e!IWlZwxse%PFdqS#ZUCCZ=z2 zo>kZ|X2MfFlpq8Q#~viML?vN+D%Fy|7vAR?*&=_P)tBwEMxv*vQucET8hU`cis3>1 zuXVOW8&V0n`hQYNhFXm)R_|7*}kiUabd{+Sq&@G>D>8kDF|Dz!07~wdsxyl!jMO@(sC;3&jf&#SZjM)DG z`d>!_g4|XYvrNu%^*ICSS88gKvyH;8*m-)Ks=JS7GfLDz|-^)AD_{& zSwWt`$g5c~*pQ*H+dkUFF3|to;5o{MWFj{YiGTm}GKEmT7G-Nr^6W=zsXE(O;7IUgCEy<2UMiiQm|A##_#M)b`Tw zwu9Mfqd2YT9nM9<09`^~Y#aE>BXp*An=}*$<4?GW&DcN19-SRd|M8hOsv$u*X_#yr+k zVs_+N+H*I42H>78fxh+tZW}rQIe#l(*e23Q=TCbh`0u~yFaGx<{tYa|#U$oUjbbq$ z5(Y{AeF22}RwBv;RaX9uoquEHM~8}&j*C01W+9x+_*p#S2DE>9dvF-*$97&!?IySi z;XEL6a7Thkuwvy3P4Yf0%3z@maJ3>d$t|h%FGiM(yFc!jYAc>gXrZt3gnthWg~chD zZylRauks4I^11k{AlJH0gtQS^1CK@VwAW>){E|XTSS0V*_AV|=DMI=N9KpayAcRXV zukmJpMzhwny9>}=vpx+muhqay{kXOlar^v*Z7r*q7(yC%V&k5SzjlfnntR1iBcJR{ zP4~yjQHjq^o{eGoY~%^FsDE(oLcZa`JH8%CE*FN5TaL>G2QG&td+^A`xK@xAf3^ar zm7ulmfS$4Nl2S)oZojVe2G~4GZfW8k_VTeOu-yJ{0|e&su`WPCc5d60%L5dHW7Pp} ziuYMDFRxHJQ+bm$WoY|{(t0m{0*4?0^|nbvef^rY4Le&K#pn_YZGTg1>xcS!=bMRC zk?5wcOyDD4SIMltW`M1LqW@y}H%C3XW|JJkXDKuU$LjO1S(T&R2#Bg^0PlnWP&C7^ zYVs?9oBTz0wIb^bp94^9?D(t8b@BTnxC2J!e?QoQ4fR3Q@4Wpz$XIw};s3+ntvz2} z7-wWdgI0zU(YVyo34irbsr`wr%|k{a>tZ+Mr}de@HpRoW5yPP)hHrag4k9tIfxsi- zq&{XYtXw|;E7yQBP`qc$k^v}%J-!ne<~XkUf06J7C;t9jU^aU!n9crQ2ea)7@c>-3 zspJT{FqdtC?$fF>lFjY~=p>JXTY%tzEr%v;xIH!W0Lk~B*niQ&1iplNq~assq|!P2 z45GnN+E6Uw?Amll*1!-7_iX%P;R?-BF=^y!XdO46m#hl#2a`(L&~?q@vcbi&JkOSN zU!*EqWNL#{aD7#POH|?*iQj0;w1yX5h#Ca#f}Oue9G1flB>5%FNmvzk{0MVojo%R* z1hkAN>6?wbSAU}m^IpF5z9rAs+ZC1>ARQTFUHkgM%xzj)^@esGLeA=2qB^KC`Kp^>Uvn0rhQneOr%UN2D*bNM*GyTk=}z~WH#3M{@)_; z9fO^;)Fc2VWFf51z?h`@<7nrLpJ)uGcD({jByh3@olga=w?N%KS!mkDxpEuTnNhdI zur$lrM1MO><~%SB%3v~SL_YW&hGk0f^ankb?u`b| zqCn?F`2@1OmmpJG#&VMlW-U}!|8Z*hQ9fe>C3A_gkgwKNjb#xD3P?W4juBD^GExKq z6@^_O9<5~BtSW23ICB6Am6!)l(o8Bx(k4g*!0fB&Ach0;OMc6i$7B@Y`@ERrbT%q< zTz@WMVv!nyiTpiZ+4#8!Yq$f{IsG#G8*tUc)hRryR@V;_}*9Dzg^Dt=!e3Cialw1ju zVJ^bvv*m!t#PoC0N;nZ3pgNi>A)>aZj(>xoI>PlOnvLWtj;a@UnngdNX+y`dG^ z8GltLSk-yiH0715>%^(+#I5T$RgMVZ}CjfoRcMu}D;nunL#@-AbjEx<4C0e_^_ zrF>@r^G~o>rlEMGzO1ae!wN+dxl|`Vfv?J{V3oECK>HH6rCaUe^$N(M%`Kwl_=1}j zD6oy>1TF?0)c{Qb7#0E)VT6ux`t(c*doaf@)P;=!ldS-g&9~b)uX(p==b<1%(V-oP zu7$LXot%tTt0H{R^~B8M%|RA-Xn$hJI)Ol#xV|`EODI!mRf0sBrO?%X2g}7WiZ&=D=TBC7iGP?C$T*n!Da>8A#F?JMxAQU%o4c_j+q(G67Hy2h)< zCAi_Cfo4<=c2P;BLK+CI2e;@d9pUoS_WCwR3Df8C~)k^u-+j|gurQ&z_U^aTa0o%P5EO9 z?eKi&O!sc>;?C0FnK3oh_H>)_EV1fJ!3#dI!AWIiN|j zAeQ7)Du?bI_l>3dmDBFzqiPzOonV98VJP1-Yg1APHthX<&G)8&;6_h>i=Z*`4ZEW$ zA`bM}*kFTg34c{#r?JXz?8I#BBqB=SalL+Yi@S&SP=~}`S}gOGR9kWmr&yX!M0(R> zgwKb{F_9&y6&(~VRoM%rW1|Oh{su5h&sHn-pc>|JVa!vjCCbs*vs0L})7VpERED#l zXT|onrfWDFaT61o2qiE&)lmXTN?4mxwTkkBXoEuc!GEfq=u(8PQyn9*q=b2hSF0?Q zl;lYU|3wdn=cW9R;x@Q2?uK+-GH4L0-1u7frt=ECnKN#TC@A=?Cw~ zDr~G=%*~ReMY!&lJ;;OzRy4_IrnB_fH=|yL5_O_agmtAE-)w?m*m}D27#AMQC~wLn zSlB7B<$%dUc_0igufjf zc({CT-5-DRI_T?*>)~~MY586WZ7<~Su6iu-T~oV&h*%j`8^M}vcdBVCpwa*O$E7<%v)$9_mep(AY6qA1{5WT#j zPP|+5XN(%vDJqg$cM@!1D^PZNU}9n>_gf~n>5@$_kKY0|rBkv*Jgo}7m8~0Hm#56u zTa(q^x>3fu?Ods}So(jg8{S^vn-nRIU9#Elo=qw}xuE)$K5CLh+I8w8L-Vx#{zhEY zcJzP!{XWF!^_w}+j>U!8Y5OB{r+K*S_^JRzK!G}6Ci`k1ohSNtX8R2*_B~|i6PV3f zCdADdQ%By+XB-wT-olWqm-Ft)-;T1*m}4;F<}wF7qw4n~)k|NGq`e2!ON#{d>gwema5;GZotPe~#BoG{;bI(b;w-Ool`bX*Zd1BQO2NV>I?FBt4HKqMd;BPU1 z1xq>iRG?mj%hdxeQGD|)_mkJ5iZ821MNJ9^$eAI>hX-W{bb)7u3A{@ISpgGUFgKYJii9;9?*Ub64gB| z)v&d<97>_;l~ip?>2nFkgw15`f5kL;W!PEfi7UaaLkI8x8PIH*)8tk5yOc@$wb1Wj zP7g@^+1YM8j1h|tq8S@5g{fh%>>q!o@vcw2Gr;0I-TCaiE|;+G(rQFw4ZYwYVx5nO zYd#|6K)7a#mDi=>Q6ne)ZRcRN?MrgPvaXNOvlg?%1Vuk+YV9#TG~jI7#UAiDV;x~m z68l}wC>?d*O=reA#_h(D=h{kH>@k8DcQ@Yhndf9}+YPfFqzDHne0eMnC^3Ia8UqJ3 za_|JKn^QR*EoPC91M=d6Y)KQ-p=as4pZW2IEw z1Ki86;gF}jE6i=-^X}l^6`Wc@2?rZp{^EVm+6Y~)mRjRdZFV}~;l z)~|`}NO8)m3?8LKCyJHR$&y)VmGYPo<;BfvoG6ZLbTMcjyU{Nn^5U>QA+-h5X8Q*ssV=Reveg z^tbU@o8QLgjs7-13-yh}?%fq3gcXWmRLNm{UM0`stMlaR_kFS==H*vE}{#Sp)oSKBIe7 zsIz-Qy^QA1Q7uCsfdQN{N`pf{zodTXYvuw@>AEr+`GH47@$PaY5vB^ghR{PL$|{Fs z{s5;6zSEJfF0+5);=y+7OCWW0`41SRM_av}+FQ+-?z9zSI3;h-blQsP%>L^tb;7=^ zd>^NF(3erHL+XTmS#kDLGvLcaGnHB)U$)kQq@5|9GeL(TZATdeP=(Vnb!uU;j|B$R z7XX7DWjasWjxsxdfxpxPz+gwAF9HU9n%nSz$A1w>*inD98!GH5^m%|`M@5~mK@Gu+ zEkd$-KNtBV3G7MYF7{$Eysio{&8P%}x}e@9UBz_{qY@pdt7=VCSBuRG&1ABaBaggPF%`#ay$W0?>&;9DgrOi1XwCE(#R%j|4N zPwKBewuXOBB<+^ZnNUyW9TVDB^^UQA=7j$H5Vl87Xv??$E7;!;IkzjXp+}^0fl5UM zl-q}d{ry6GbhyqXRTCbM1I}S+f=Fn)-bLG0%0z#@lY4NBsv4Wlq~(- zOVEGqOY`0VZ8DltjWJCi%W-~%Py3;<<%`a;+xYp&;sbKw0t8zv4i-M~8<{8%B^f3L zyEREHPGMW15MM%+kS9s|3WG5!Kr`I5ZRBY$@Z?dRe8BU2bsk1uR`69h&lkDHr6X6r za&RJ5iD(Gc3YS{{?L=C@wIZ!UqaNSoQ4@c;+~fRCh`b999_teHZ~Fp`z4d!zPf$os zDSLX0X{lUq1t|Z=77eLMq9OMcsY-gQGS!)#TKIc~jjC91!E?#BK?_;C#55llm_;5d zhmZ0RPB~kS*&PMyfr&+Vphf!}ak5CA661dA9=Rdm)rPA!tJjc9+1X*b5F26dWQTv4 zt6K?&80}&48{Qq31LhyOoMU^LoRx5Wt9Om?SLZpy0AsS3ohUM&Q*=);yF|(jy*@d)sJpddEnb3^g(fyr)pALx^~6rFNNR*1_)|!MfIVVw>7-g7@Bg zOxcr(L;>8J-nhJ#MF&HRMn`pC(XEy#Cld;P9i4+3s2-s*!4=vCQsRN0|9?PT;!mCQ zs}L7`6yR^&{s!PTMLVrcJ*j`D02Oix0~|>`uJxOGMJW5#fT3MG9J^1J64N)P2ngJ| z0CJNK(u_x|H%f(gC83Anieh1DVZVL8A3{THqd+?eAP?Xc7|H`AjDyEGqw;L?t_A4Q zbeTrp0vsfimzS#H&x!y z2gUZ|;5K+<9Vgv&YK)WB6CJyu4KG>|9=lwt*EzLe;^4Z(4L~&|}t?E;QB3 za2FQ_`r()qYpa-eEQ)`$;(qf*o&>gb|AQ8mg#L)vViMNhHhzR0GUTOrH9CE&mysgW zJ=O|HenK3>5hpl?3yn~K0>gkUCtqZN`j!wi%C0?rJI)JvDE9wE{hLb)G_LYB z%6)h-?5zC?+Nw-TK8WQ$j6zGHu3Q`Z;u*zR%~3>3_jh1evlH9Hh(VWnv0H^XZMGSS zj%j1u5N~Bo652rFnEl-9ACY6I%7-VK3|3u{jhp=fIbrVw6ehe&&VIFf_U&Zb#NL*h zu<>-nu@}SXN-}@fNDlYHik6aeV56^|eKQ(<{anvIsqE&x^jlcpUW%rN{qV;Ev6ESO29qpi0(vHRDnInrlFil%?Lgo1{fXo)3Lv@Oj{QAFEH zo-GW!)z0HzT<9t>ZLuM5n?F$_QTZ#?Y`Uv!t8Am1v@3Ev78T=DQ5YeoN0O~=Db%Ke z8ZHKT!>+y>8WLuzY&1ZCOV%+f4LepVFWX3zT ze5h(EYdwFlr$R_4cS@^w2po5eZR^t)FgvhA2v*A>BQHhzlJ*Sls4+ZEqe12AX**ZU z&XQA~I^UTx@8z1TuO4Nx9wDkG^Q53@r*!Y98F%EXMmK4+U%YV#-voWE;W1X~^<;*> zZDW6ckE&IT45-I+-7AtmML2JDW5#4;b*Ocb!UF@ z=UKl$A)n!9;_2*+>$MW%qme8M3YAJ>rPWhA_Y8wT-O@2Vbq`kLA2SrSjAIz$Mbc1p$*NupqIEjO(F!e~D5 z`e``}hf;5boko7WmVs?ITiqy3htKXi<>%Sfk-xtW8Je?J%tdT41NG1^YLf|2B_WzH&$$%R!prme~m6HR~U(lOfuiBy)`DrfNf3Mzg2WO=LpNi~Ct z+CX|&|4(`E+TOO2Bnp4uUm;`m*nkL9q#S2vNWpv@C!SfF-+t=ScQi;!b~1CGcjk#j^u4RQtE;N(BIyiWj&tbc#y35KN!BPszVQ2KY(amq z+jf=`b0A^+vMQncLiks%h_*)l>%UhQQ9CX- zvi9gzxI5eNp{icUF!IiX7mwPWGg|D+hHnw7K*-q zKg6FfeE1cyC(N!L+8MZ0q7`AXDlZ$uQWdY6!wT;c_&4p~CeW*mm)l*s&Va@$B9eo~;AV2V`- zs}%VYU}j{%Hasn%8J*QOBF%~=oVh|0gq4_kZ3>if4x)Y`jQIdfqIy?h+Bd7rPC*6S zT6bsZ{Fe)ocX6l;4BN-m)VD4|_mNRVev_Z;N3hs-N%BZ;7NrDT$jk?#2#|>#Pd7L1 z?W%U`mD9Lcghp=^5#N7dVXID1pOJ{#^v;H9;B<(G)=4rSftk_})^@nStHs z?(S42@y#`Il3;aj3YR`$fn0P~oMtmXWpYi3u5^L&{yimI)18X*Nne9=I73Pu!t}9| zWAo5C_Y&iBVXz*esZW9JZi1fWDuWKyV4kk>hSWA$dN?y%Rbzivt--|Y1GU9VGKsRa zY+~r&l*WD53dZP*!f4?!=Wu7SjV=W$4ecX~Y;c`b%?o-tCXo_8pSL^9#f}D4fV>-f zy!NsoQlorX7Mbo1c@v_j6onEo2=~3OeT~A_f`0~GtQ5V4V<%M2i>wHZ^77~Bx1pd0 z2w68$-I;1*)8&7s zKhBIE%S>GpO$woED2QwN&4|D`kJFH3tDo7ap|9wmuIARsu}~v{rHDva>r@nR?Gj(3 zBClQPbpwZJe(9|w^5BLPotnYA0Pw-O&JJ+>=S`rc0t9~}6c&h|6aotcr)`3PJdRRw zQ@+Y?vIRZL`LPP=6Zj*4p?X0F=Zx-vfvrI=mLiz^K*(wZjUc~e<7T|CJ0u;(;=w#n z-tC1ic_qbUpYVoan2=};r7UA89p{gv$9zCOuvdPXQp?4IMgITCGr&qDp zXmT<-j@y5sRWLA@854_;i*(96jL%x3wnoF_c=YUPjDfa>gFilt0?|izAu8iU_VC6J z8*;E$Y$KG^G&zP{!(0N62iIrci7s&y1Tp&#TO(<57A& z-=wfbZ@7)CoV5VBgTZhVYbh#%MmRIXpF*BWYo|FA@hLb1@nyZaVp?S;u*K2%lVL~v zvAmcs*NaTpHT{?_*BLd;Sc=DOMN7a+R@?)bU!QZk^?>>{O9cf9S{2V?SVLV;_ur7X9W&;fe(yrbKq>618ct=*c;`* z-5>{a{tm=>JitwSAb0Ws@0ryLYk*}9^m@pN2f2TU1_=C4Gmx$5*J2nE77Jp$%ya=!JCfbE z;$XIW=kwgvvuL2RV;M41_N$x;WBdHe>OrjV&OW$YyBAJZ^Lq)4=RA@N&QV<9@83(N zQ6xN4yrZKuuRLzN5>0(pE^b3vEs~*x3pa$YK`#(xA*%zS(%b~7Q%-KH#LnBsJ>IZKR)xjn%aiB}ixwHXWK?cHCpCEDnhT$5d&Ud<_TuO}Ub9AIdMF ztB$Pn-$LnP72VIU;<<2n$x&`1=?7gnH0Bry!XOK=#k4;fOW$T9K7!7D%egqYvO^&g zS5r7l`}VKjynFS-iqKGpn zUU=y710@0&RY%gyD@+k#d_q$k9Z4EOBnvq-r0dY?d@$9|ft=yAog^0m6Xl)D029a0 z_;A{B5@k!AY~9&ns74Y+ZE@~#ql`*)?scPxNOJFZrv#?8?|W-JI-Le30vdmrdrGCh zwbI{WI#Xtq*3V%zBw7z5==63Jgq_}jiog@qOG%PPk{sdA=(k)6`fyjmPE;#F$%?+9 zH1Q$td;{w|er!ff7U-%)nK@hm3jr;$n2*W;;$J?6u{w>F8|D-bgAnJcT&?l&BWtHg z1U93~@%cZOGHH|-?r=z`00MtF?B8Nv*WNQPG5CKH&ClT)BSUP7Z%7UequwOjf&oO6 zfQFMKDd5lJ$5NDvp1c5s;dB`AZP$OnA5H{=8T9f{;hCrxJP*imVAsq~vzZy^Xy0^U_dEo@$$9TZ|jV=I5pl#_at9rGl! zw23oAjo5w}6tClOb;A83X!8&awaf+{KQ2y&Q{x6n9vR2Cz|btf`Wk(>72X;Z-dYv- z{Zfojyk9aHEKVV*LaBTh4o30lNa`P&cYuNSVFJf;NOal*jyo9^Hf{8pG9v;7(?Xm= zAP_qyDFm>a^5SBv7hQkT%f4Rhv$9-fX%QIoR~A1~ONb71iGpjz8#j+^t%@X>s93f9 zCKOu7j72v|GPIs$IpL9s@g$k1oa2dC#SX*1*E-rr9h!RfuVm;Gr2!(e0URb|BDF^@ zSZ^^jDVx5|;Taqq$7UMO;^;Vv4TpVUg}PSN=?MQh#($pTKc9c#KhI{7Ie1=MIc#P8 z+F_n-=nRs5riO&9nYo6t0+%`+v33r-oDkY8mS4eGr5VlzZSR7HnM}9drVDE2;X=Tg zH2Vy#M}%8}a4QgQ1;VXBxD^PuSia~RTR|wPo14I+J0vKiupPg~AapnrC>1kH5-*&I zM2eeBgiAKKQpA6WS->D!d~tCkUG_CB#w0mz!$M5M(PLk_cs_dU&qUS2 z0Xdcrefi#=qPU!fgnOif*;`j3Y6}V?c2cG&AO-@5W^w`M=CF@e8GcF8Q1m@@+8^tJ z9k|@W$E|2au_dae#rI^?Oa2?h8Ypx z>B_@LC4OHqUX%*)q{Ll|Y<%HTWYBJ{$HI9fXla{ClIb(#mVn6rflWN5##!ZRnN^aZ zZ`y$z3Xa<#6%u&d;_0cNuxzAlV=5KOB%xav+hu<;DwMnYToU}@{QO*LBHr<}t^_tp z3pZjhhD=8RPsm~nnMB6E8>K@wOw7OmgLR zlylcfZatVW}1{5*@)WGD;%d6EgyFqTh z?cslYh?~vPUg_p!k&^bvgYjS%usI90IjiJO%Y?_LGvL#CLtP_qg z;aDl9=g5Q>hUi*`-W8i0(?c`=G@nIiMy7ufSPA@&uc>h!Q_dJ6_QS;)>PQM13rlBE zPD#oJ?%Jb;qXa6R5d#y&m5{v(Ice)|cH8nxwnZZzTB227uyV1*smTUd4zox9nM7oK zM!xKf^TAJ~T#D!YrQrxx*8lMy^?&r#zejbeHs4M=Y8!q;jkpRrCUwj29?;WL-<5w` zuzlLN%tqVughX++^9k`1%+Y6c^r>cW(?@CcE&RHLU$>jhMv1(nIn_L?>k{}R^&lN9 z@w0Yz&Vum7lOyARqVL33E;UtW)is&Q#@poD$+6CU_imjpfGiEA zrcLDdkB&53x7-YghpI@&-IL_mR&!eWF|VU<6O9%z`-ucLQX%WEZRN$d^^Pruab?vu zd;FLj-Kfo00!irEZ1tAS#&z0TtyPE08T$>%Pv3s4x9vBs<=JhmT2wF^hvLWyOGC8} z_TP+ndK-Lo&EvkkBM0^R43>X!-jK70x?L4R_zF_Vq3O5ia&Fm`D2L3q-on+Et!uCy zd@I9xXs#n@6zd>!y3IfnQvbE(ZL$CHB`-qT&+h@Hwu1CC<2wGisysmf$wdsExG* z%~x^~FludP{C&B+y(oXll$cIsc#1xj%DA4`6Hn zWZ$CP$gqU(bld>Fll&6p&b6}}#e~bR(ytoHNK_ibiLhiLB*@#E3?QXl=RKukTc$){Vf{*ajm*Rkkm?Fx58L5%Q~ID%$v@m1_K1bV7A4J(y{BGMx6?>0?h)wqfl& zUoR>kfUWq0k6h#!jB?wmKI*5f(36oukD*ZdlTd$B5ffKm4z(!;_@;D#-%_k;omgNk z9JaxJwcyzt>BT!jW?J;-uG`k`BxkAmQ`SzM9g6puM#`mK+S%yLV9B44d|bM?rG%{t zItwv5E@3&wzD-!s!chO|HIcbz0Z$&sW(A%}V(QDFUX6E6oWfOrwqDArCdq0c%XT5cQXdO+b`o=_+ly;WQR0cxFoadRce1kI7nxkN5yh1|>ngO*;$ zSIzheLz-S-G}Bx7tj1>>!?BUDEyGrn;)9(mQRbd5i`oou4Y_Yhw5#kSR8UJynm&K~ zT@ws+DPqzhXwP-m#s`=)$Vl|?tvw8vP?cJ>&JS=<^A4ig9YYic3t z>|xMREqRBeTss;dQZ+2KLjk8(WrcYkG%T~By+&nLa0Z3%iEqje8V)zH*FduMr&Ib8wk2 z7FjU~r1vMwh6KAqZG6-K4yLFrfbZi6p5Pla9G_#nV=?2`kGdrc{Q zW;!6Du+tZ?9K^w3US;PY>pusWLsH((!R5oO+Rh?yFA0c{T8d2CpztFT-x6lnvn%sQ#0tX*;^I$V8_zOEqz3^ z7g0t=zvC$>T+*YIWESfBXbuip^dpB!UOAPX`R7d{3fk_F&%#)sQ~RWi!f;$ zyh){0(hf2+pixG%k4BNDFzTARwOdeGzBa@Gv&u`eELk2kXdj5yozQb#eQVbV=Qi0TB%u$OaiZs9WjC>9y?~MGAVHK1_=e(O)b~eytWgNgvjU zB#4^z%9)xyGpnuSPLO}HW;7*rRd2%_TDi!PK(#zq6!J3o%e(8VC6g52q(yp>Ro0d8 zkf$M(f{@k4kNT#dXQGxTd+P<>P`ft#6G-zK*60+P*vi3vCIemy`o;-pk|z~uM3E@J zh7VMVLZerFte4W;l%%%?-(d_Sm*e=6Z@@5(EHN(1M9Evd)IWc3IjlEJKN78a<1M^@ zpR((FXp4VU>ere2wG4~_tapm#PXXt#qm4+S?UsNZ_^=$fFxaPSlJk}{DgIuYurL%gNW!BOS z_TVJ*6J4w4O7~njJy*KtO7v`I=~}(o7*wSPRned}{PO4ae5U7oCgyx*X4NXooYWm?^;Ri+4vn;45c2?OSJ=3Ey6oEx*2&gwI?uiA6I(sRCY z*7-`0{>oYBD-Dh-2OL)#99MdsubOtxjqbT|dTw;jjni|Zdv2Vb8{KoGdv5QrD-E10 zXNO(sg}8DS;z}>Xm9r36dLgbV-Sb(y=QG{&nbY%`?)l8=`AqkG=Jb4~dpgd)_zTvTbn$yM!8>;y&X+jqug)ey{!`m*cwKberqZ1 zN65T2O!wtd?haSL;V~fofBd86vf=1BIy{~j_GK;CAJUgOv#VWRltwwPcEV8j&-h_fCLWKP&-E{ia_X z9b5W<{lT-C^4Grnw=%!%6}`%;*c)N`+DU&4>5&Qt=+ZWVlWEaNL=Z*FR#p-_(wS2r zJ?9uy9@7bFV){*4+e7KWjv4pYeJimKi9iAXfX*^hlu8MLQY01*<1`Y+ul&_BJLuZ$ z<9>fv4w)v-mt~!)o}`VNd=hu<6ZzOEZ(CjGMggMZ;21;?oSmcYvje14-*~galv<`} z!=}r+Ar!MZbxxw0SG-Z7j@}g$0_hSY|bvg`tLNxtyB@ z`Un7XPj0dBrxC?SA`J5w+I|hhn9L3S@eqGZ%WT>3a3`K7jI9s`4cgAci#YF}_ba#< z0sX??b>uBuiL$*_|GZcAwwFG0Tkc)<=1{Anv~Ih%|9tB( zfvvI2ZXKpkS`QQIrT)@w5KviBxC52BbE)hB8n^?;+Jz;|z20|DuX#3(j&ZW%x)Xoh z?Ag#;7#zX4jeE=q*}BoB%fx86bWw~CANYHo_-}xWJb;+~4y?0`k-f<2HQi@IJO@KQ zt!C;=smAGMJLN*}M5F~<<`70CU8+@HyBX8x%#MbVMhkP=MLJA(J3OX2(31YsjFGTv z+_rw4fwx62>U_4dh%m;mtrh-z#{Yj($`$`hJ|C|r{pyTU@IwYS@-+FOp#asZaje`bGL4K#33 z+rdrHEM8B=T>8vX{Xw_Z%9`8;+>ifsz>$UG7Pz4_?qOhK@3$WdYCkyUpZ_FqiH9T; zWW%lSd5ul9W@%Z#Z?=L__INK)DofbR2IRvY9Rxhg4p6pQU64cV`gAyh`I_%ePvl^9*z2AVB9KiJ5P29N!7yz6?|npWVuwv)edJYoyAH0sqj4 zrWnYdaSF720}1r^@#FSoDzaFYBJVmm^)x?4@XQ!INi)u+aX)d(m2?fP} zrd1IJ;xu65L0%uE%PLD3w+HfFPKBW0dOj!e(z-qt-sF)j4q_PS5XU&g(GGE-L%*YF zCNeQSjC%h-90NBbQA%yx>?d z5^U?o7JNTRdq5ys5*cp}t0*rv@7RrvtnfCB+TJK_ZbdL9d@ok;<+ytG0!=Z7?f}Pi zDB`7#17Wln#Do^cw1|Wk#XH5H2pw5fEM2Jpf_xj3a1ye53$XT99Z3-Za8Ov-3pZbSGFr***uTrh_a6 zpN{vy?I!Fyyf*ewS;yzOv4@VUH;%tDrIRKtUF_7yk8{f~`et+@ejJmtYN?HOE7NZ| zeUh2_gUWv;=4d(`3!$v^p=2H;E+Fj4O^1_0D(h*hKib`#ETdZ7Y;%t&$Qw&wH}Sj= zaKiidhAhvcyJIkNb6p13F6z-r?F@l2oC4S;&9VW(_yR`@a9kMSX@>5^ zGV~>up(8Q)b?j@lfUUTBko%!dVmsGofP8B^=T;Ij+e!SG zHL+ws*7)pYTXd)WL;pYtp>h$u4P8|`(3P0IKG34KkA{F4%!q>KH%TxI4(7M?=ShG3 zq*C~TJKY11=$JK58SS=sFLcwUl{hYk{p{L$Nn`T`D}(PNsW5GRKm%zt4}}i9h-f9g zILehd_hDR+dq?|0*1Vt5fu8aPz4Zbo1#R9XKW#BP){CvVOzG3zY~$^N+ISnVfg`uk z_KwW;4BO98kl%53cpPzpAcrYszdL_|&;Pw{iTMre$%D$hAw)|ZcSOr;WZiLF_y`lz|A%3le2e^FH>9MEeN0v!O}{;%r44pP|~BEBm7`#P_(#X(vu4(2JK{IWSX z%b@Z_%C1Exih-+9C?;IHC~u&IsU*L~CCJ~4b`pvu1a&EVNz(Yk3a_e29q)f~0H@iI zcagYP%^YD0K*YNb3f^ulcqM#{J-(91VKxm34%63qLcrs{@h=^IT)bMh@E-#UNE0+AU62;4P5 z9~ea>Ml;IXQkf5=m2bv&uLuUakB>z)3uxm3s%~tKn>vP*Qr$Y~w|jBoAM1p9323QW zS=|`1WniEfYg)Vmbuc~LTp-+9?nj8j*!zD1bRrMzf%?R`e+Zd;0~^mJm1T4L(#l#V3*=h{_1dC4R2DDcy0k7D%-Tx#3cwDoxRs>r4LTshm0&42 z`Y?kp5lIybw)}flH}dVJ5;ppk2udz*qUu(axRFkG0QZW#4jSH#0VeI8wVYi>sU>|z zL};UUWG!eThk<|dDP({6QJLD$xuqCgC#b)V9@=vFv%beW6h6&Aq6>vQ?zLD96aTM2 z5bdu$*xm{ObYs5X$V9jXysu=f_I!_FzCOHIV?QM^LOpZIUDkbmv!kdh;xwxxky9*cg=Usf|BrK5iluE;&fzh-qFRcGax+K<)T ze^VCHiUQAfE|urGk7_{-iA(3|Y(~2du{EZ9QXGr=lt4(9LS=Ruogb z$d>rWO|pOMjj+W?5ax7w2~0E#BHeG6A$DVr7_xH5w*$!H3&O|YSMYYFXGUZy-1lyL zHZ;@Kc|k7bp4<&zS~81I8YGLmOQwq(=U+?SfVb)Wo-Ypsz0I>0lXQu1YPS0&lftn} zGb|)-wo0pgV~i$1euuR!7G{^fVKr?$YMNCv1}cB4HpRtTjy^Qa(qA=`T?F+HBBayr zB8X`$FE&gNqu1x9PrprO><|UZV*3bQR-$YWvnXu~g~~Akq?Vh;UR+VrraLs<-a-ES zbE%Yseg)9KjFslKT^R^x*angBRMSqq=uLE+Fvi!KEZ=IzkHAi6k{s>8Vk(?gGL+Xf zgGzs@Q0FK0Bu5o$#&ZI%bD7h826P%mRfGSxa&9T-K+8reQ#LBKGPH11Ba`0%YgGo; zs6r`4JRxW17V}J;yG5Of^TU^-_+kXQT ziM_t|)K2r>XofZtopcg8=)aB8y|Qv>>{5SAJ8ltu7mDK?i9z!1B2mhHZWyaxxA3NY zg}4Fp#AU)BSoG_j``9N3PT@(s_fOX>+{l#bHW5x=DtteZ0T8(f407T#+d%nF{AfrT zH`e4kwQe%8%(kM9>IY--V0*vkZR9F!H;x}{0nqo`&uQI^0-kS`ca6A{;zd3(5 z85G<1B7>q2yT=5k%zl##%=G9${h+Z-*u+F~*ZdRd&l2b$k-FxekUBAhDP_NK6|dL* zS|wd!=#)bJew);|1}Yve`wVDH1F)L(NN98a*vQ00TR!hz+2E$1q^K*_PtKKlvJcU5 z6boo}EHTQq2awa5imI^vK4wEE4?2HVCQW>q*4Bko8TWB3r*$6}Ti+^w)9bh}uH)kW z?dw=M(~z3R-kYskD)TRPgWK@?u~f$D(9XmKenrkX8XS1Xd1vJ3xEd5{RBjvw4P_ANhVp#sblb>n#0w1 zcQrnam+;@^cobj5fAjIDaXtPd{yY5FKzcg<<3^Adu>0Gz1tjj`kW(~!*n_A@Q5gXL z-AYfix#I6u4bcW{;`k_Q>*0U>7q%TYY?DYQ_ABRU5IS)%Up-eEP9|UTbQ7NBOLNn&$ z6N7=$DJX7TuB$nHYZ2&cl@^)>BJnJxoA6xcLK8!3fz#I`4)I+iQU`y-ms=TTX0Y{? zWEQqsWj&9tr2#KJkWU`L3O*{PVa}|-F?oa5LlDTPFeb`G=Ws-1x**M@!W&$}VJ+c` zkERx-6~&dzqZd|_K9lgq#b6&NiSsSRuSk8a@dfC6l|^wM1!3xBc@@R)gfN&MyEFSK zLdb>jmAkPYB{o~=3JiY~#tVY<7G9tT^I@FE=kYS0$Cr-prJgf6492u_y)m^4-A3_3 z-P705{FMfhyrr*Ct|qS_7UecgxdX9gO4N9fzU7~ZF zXhKn)$Xqt~8p?~}dz8M^t#2*&rD}C+vFl)*@6+6mP;QT6SM7hfFOo-q5(SjPoF-MTIej(*9wvt$pJMbTOnEw^_*~8D zCpho3?0@pCk}rFhKblc{IGo-JT^_}2_?yDt^Bx7UOEE~F+1X2;#WS7-btJm+b|SiP zI`GY+ma}*&XYqdtHeOGU534>Z8LX2v{LcI9ao*}iH|)+y&4mFnk^niL`DXVT2O)+a z20-0ICF;7fV|$)100~GV2Ga4&?C|gYS-V5^J`L|)tpDv!$J5S3N8ZShkL1W0>E>f`FDQ~X>EZY1NzkQJXzldAZ>7( z(|E%m8Zn5DeJlPT(5Jz;L_UCbdVESJ4b@DTMXT7f^#dQf%-?e+L<5eoXF zHQpEZYFD&MZHgvaE&fk1roaDRFt+(Apm#SuEkx7rwuti}X(y>MD20}nZGDYNrPMWu zZ?BLItZ;u86&*^PMTN7dU=~18m_EU%f|5`paixuDYb)cGG{&`)Uz6i|l{8=Gt2ZUk zYJv)ePxPP#B)bZD;%F5ZjI}E&->yJt_2;@>lW)g*c#jG}L9$mKNmdySRaK*=w@65I zbQL9&(dLMQKb)A%LMTFOXeK(0dQYP9!QBCokK=!XCp}34^`68BOkk>1QWgjfHqV2t z@AmmFxfc?`ns&KLSH2(tu+5hF9OoCsnhY8{WRdf9ZxZJgDV{jl((!_;X9Sg;H17r% zFaDpWO$ytu?gWJZCg-D|XUkw$-eE2>bmwwl&Sjgn!GnZ@1_kMe1~nC_3>6NfUmz4z zs3d;HgONbj2%rQj4ndW zn~`9Wpu)(6Xj>T^Jr7_&M;Fh7?J~zbq*5Blz)C1y(-&MM=4C`@jLA`W+V9P#Vfgc+ z_wxY$iQdz1_`{!36i&w(6~fPHbd+D9{+E9aWPm|wWsp2`sne6?B!#8ED-32Kondfn zar8zJ?ECzRWMNz>8BTt^%$He+s>In%HV?~4iII`Jn4Bl4#bAD!Rxg@x7|ql$<}eHt zMTpMlC-5J1URmy*PUmnN^4=(?9Iq}Q)gY;h(J8s>*sq0 zaaS=$w41uV<&k*(oy5@hJbh4y}8N~Eq*;`^Fhfg|}Fmn~S&V`6 z)7#e5n;?*;#o(q#vo<7?kT%9NM8fcK+dDT4e2E1Bm*^|w?grSS+i|`T5^dT|K7lR0 z`3Yex-zfwKLEs|9}8;D{CZ_ZLZ}JpyP>(sJa#;4SPGCR5HH5@jmq7b_EeVhEL`>N&^m z>#)OZ36`;DjaCAuGvnz^XQ@}Wet#0_B>xVHtU4)?ZNZjjHCU}7clxz{c`b_T0?|c+q z$KwD5AO8_);vPf)9x4LC>+~ukN9$o^Sub1jWO@d6lCzQCN#BhdlZ^8^7}=r4oLh=^ z%>UHmN;w?ls<<01M(KY8SexI3H>o>1+M@PsO|D2z17Hh);@(BhKZ&30rwf22`txAs z?q!#m5f?go5*P9CvZ$@Wu$#)?m(ONA>SeYAVz!a`ItVnY9mEGjr^z&v(KfbmM+7Ys z%18~7b{icAdri%9gX}u1ZZ#ch_|Y-zBZ0Nqo4-N-zl-(UjQM|OIOxfG=moDa;4y71 z;EeG(ddMzQ#6Y+9rYRu;_@3lYy_+7YJp_@+u}Ps?F~S^Z4~GG*33>$e>EKodssae1 z4Qjdpt~^o0Q>m<20tPJPQuw;GJBdw_grQ4GF4?6)XHqXrpD=A=C~}p+ z!Ibk~zJZGbLHZNAoi`JI-pT|SM@D{&h!j6L->SS0T7fR?C!*`EZ{^JZPT?{mcu5*Z zkT?60HSZW&E@dONt3|HDUW&MpIf%bp`oh*nwGLBl^)$7#)>We+8sUswZ z`IXq9HAK*pug(!Mg)O4$k@7PDmhb?@m zgZJPAx&Df+uLJ`n?sKis?i_dBDR@t$i^bpa=JKxulJ1}wf|L@=V8#*E8;~wUl8fuz z7I&^sEwS|rBJFs8aqhj-F3JC_)0X3e)plV&vE}5@r6-f)NiEb2-U)+^Q9_=49Mr%ysQ*|s>YNT%lv{q&eHiW7bJXT za_7;olipX+Sv{k-Xnhx}Vj}rSb_sulWP$cqq`&gnPgOol-B+|f7D~0UKbPo#;A>nL zbNDb$uyq&7XMs!o?q!_=eM4c3os8i}d-Afz;Oq}+ZqSaiS1~TOf;`EnvfILev2I%% z^sOF}JZ|@Y07#w&Pn>f@&yB5mg|A*k^K9Xx&Tv0+(WI2wgVCq~14}^^GV{mwqcbAmnKEpr#6JPd`av!l_UhU(FPhTd0! zuAAsk)4!h1dnyRFEXk1d%?RPpD!#p8a|oRcV@TNyUu3((n)&fu3y)cpsF$wW#F|Ix z?#Z<85ZT!AC-swp%VwL%5bY#%gd*U?fk3WFqoiB3rv-F>m?#9$ z)Si(HB-wd>!DcL?S&2|(FDgU4)?t9USDX??d~QVJoflcg`E(bx%C>{6isI5HSzT~n zIO)a&Y{-bChc3+|b7_uR`S(ZkZ7e|-J!~wK>RXJ_lgE!0QU+@+rh6~SMNz~VBV%D# zBT=%nrtxa!HXrobEb;7qL5r$?`*~d3!_^v@4&CRu+ou+6%R9C_eOpJ=qx5TvGF0W7 z+LGP?`D>7#pA#2lhYIk#ZSSuT+^#9`Phrc2ax0PFf!{MRr5jFoM5-NkBrbR->vvVbL9qm0>L1f-3w{EEl{m`OHyUESIQ7r7(9vxzu=@A;1LxQ0H@x2=+e zkFusHsS0>-0kq2yn8HZh2U@jc1BXQMk3~v*I(zqWXs!c%SAQ~E8IXy0W0;{8i z?vKH$xWK@_aI#T<9Ub*>)rwRC`q3E04+ZMGm?6tOC1X_%&NZFlO{@okYGtS?!(7b~ z^c+M=NaPKjX#mvREAd093l?p6M0f2bxRs#AiQnRjc90o;8N5{cF+j67p}8SZVsrb| zg2*!~c=ci-^hw;|*=zao_3L*pUwr%Hi`Q}l%=K)GVrwXWxtdC$W{6jn?&D=zHzs%7 z#swTdK=F>5gA%6Zgj;e2$yr*E1cI9U)>xdlEE)jf#R5BG`s&SMdQ+H+MIN{DuL#~V zv|LP?z80o(7kDbm@IJ$R{FQbrZ4%50tM&7%i@-U{N_AUN63LbVNI6-M^GbUfCHA1D z!PCu0G8+(o?WN37R5`aVb3+Jk9dTxfh}5bj6{$C|tQAE>W|I_DaYCz_lemb;gv{K1 zkl30Mpd4#HanU&=dw+$k0if(l_KQ-iZC$%&2_kd5vsu&4tU)2#9%oxK+-Ag(%Z}TY z4BLhqO?+?+^V7f>6;Gc+Zxr>0KG$y^}9s z`Cor{@#d@VzK!LGY|2tY z2`;D#5xt(v*rHR+7vq8pzQ$3vO4;g7@&#+N$M(Wk!FmexIgn)nh)FV&YZK$~Gk^__xlA==g@1CQ81 zx!j?`%yYo64YEG}@%p=OyH1Y5*>66wiZXEf&Ri+X@U#sWGh1`EiR!ZO{ddeB0TMP*XSN38mP zq@2{fFUNIV zmBZiJ0s8jc2n&2&F5zl_*k)AK_uGr*D*gL9!`p&>2#>1l^&k^JfRr1?{Qr^oJDkZ! zhAnJ5^IXl<>Sc42wApNYw%43H?w~DyZ$#Y6z^T9*np=*HF&(L|W*?x62e#_~2?ar> z09cXb?^P2@Gb8fZNXh3*xS+xuUpnwK(V<%>g7-)JY{l#+YkZcE=a#DmJ&yBu8O4{$ zoSP6TCA>(}(RirN?IIaY7AMQeqSrG_-iMRxlk>?nn)YMDRkDaLlI!?32^WWd=e_Ib z@RRrq4*ak1-xu)T>qIwr1HW%h^2v?S;2TJL18Hw$gWo1sy_@q*1Qit*ZcuLj%*FsZ&!Kl-4%tdSJuz~F51_wRU(sy@;8l)O2WS`fJaRLSMZdQ$R*TH;R4d$3J^55u}&Mo0BW zze&}|#`Zw{+tarK57?=`W`3Vd>)V~Tq)qtXEy>k`-+CVj`ShWbO9OHwN=*7#Imx3k z35f_36d03V(a}>R#AZn;C^PZn7=Iw)*0H7htIw15F8Qt%=c@mVHU6r&&Z>?WhPxJ+ z>;C4eD^GvSbT+Ik5Z1YWCae>@s_=(gMDg7l&E#szl;hd{E6TIG|8jD@f1yj}o3#Gr zVGE2k_q#-{u#b%X2xSdmw2N$+oFch<96y~6fXB{mzC$%KkrzGhkEZHt+;QC~JsoV@ zv}pY>N>oslb)wp~pAyQgM7azXDaMW-Y9)DkSSchlDTOdyzQB}!QbexaS<7wjW;JmM zDuACHJ)d}^ z=3TMWcO87Hy5GrvFQ}J{|Nf3-BlQ>8J1NCF2?x*Easw!;MR^rQ(ILuT%2_X|@h?ea z_!mlKK0X~uLmlf;`*%0N`~d_b)%(|CYrfBKGSt6$*yfY9_ml&o6M`Cwpcqj8e*gZH z-+UKJViWF=LgM#$t(}$A&RheAT?4VQ?j`nUBaMG+#J^5|?p>Lz4?j7qdnwSeaJRs2 zjh6{;R>0xBSL4fs`5<)&R>>MY`StA9CaaUhWMzpq()cP#-D2$3uLrd9iu%5WzOm=z zTpW{RDNac;j|B&Ix%uewOF5pgJv{%Zk(=cK2S--@*E&0FeEzq~{GrFkXyAhc08hoM z{vxlNw3y?6`I0~1zd!yb2nVdu0D*=?eGWLEaC>@I^U-r0WmdMMOt=tII5hJa9jZB= zrX~G=)093(ZD;&viT|v_w0|C*)ck8Hew~Y7Ay$I@KZ<@gu|q89KDHp?KNrR>c)-yx zYX6gD53jRTo<8gVP}Sd&D-}LsExxo&22T%3;4pZ9_UA((bQp|Ahs=cvsY4H_B_(<2 zJsT?F1B$iw=TvFJ_h(e8+COb=k3V2>kAK(I#Y^3{!X$E7CqmMYCg#$H<>BDzpP%;D zhl4+U`e(Ss2ctjzIXW5*o<1AN6{j+v{29x9`lnB+%%^|CGRMQGawlM!<3Ao_nP*Qw zp)yZ@N72#oU~~`J6vOO+8|3(3=x%(2&Kw@JZLsEkx8WQ;rocey@B8<`ABOb5K)v*_ zy{zH~<`O z44mioh;i>0((m~TGK@oaH84AL8s&I_vi(D8-%)KhP+NRP38Oaki1u9!VNw9-l58VLorjW)J_!Oz~4 zAU-e;s?OGl${MFLQrvy)ZyRZa>R9nk_p-_*S2f)xxlOrZ)p}0{JMDhG?MAV<175BH zB8hne2n#5+)nTTOhEsDff6PNys?mo(at-yOs`5RMR>_I zN5%}JlEPmYYk@GB+y-XGf3NE%Kfew9e!XS08Z&xk*REI#XC`TtlkU2nN74hwLjD#vTmUJ!JSG}1QnY?E%=blD5)wiU{Kp&P2%n1{}Pu7Q|AxJjGp zeRy;{)*nDQ3L6;>V4peQyEB!YoVJ{>xQbrcQhszqCi*TCQ8{yo zu62)0?%bJ%HS%s|%3EKaA{0r^zPCsNG`0_A8}!>kg0;-R`C_g!>@o>b+^pbrJV zgg2C0Wuis(YS@c|jo~bRG$3BV7aWXbDo%!QZFbmPA9RETS!82X6?l%r3SQL^_q$&FwP#cI$c)y)Zi7GietiJYej-L0RO z43ZS%BGIjK^mE-iLJvz$6M!&Q%M=(-DsT~_<*;aVnXLQgz$vCGN)d32%cD7PnU*?d ze65O17AM!F+3BBDdb*g!Rc}Qzi&s5oFqkbm?_Fv?rrp5djipbpPdVQC!%ib;OQ=ZM<-~fEomVl9r=*siGF#R&6RS655WoKwktq@j1(h}Fdwz=&V?_9 z3dREnF{xX(2o)e-`EQ8VK)hH9M?E$;)qQ2c2xv~U@!D9hXgS8Ppiv7qB)j1u=WgGZ zjsZU$oqyfnp^&eNle6-apJ2W z3jCmb2=4>&EpBJpj%GYl?K)N-Mt%2;Je78lRCs>@<%G9Z@S*h8E&%rGj!k>Go%YJ( zt@*g&oh@#EkFC?SmY1S6LZkPyNK&;{Q8LysY2SW^YIhdMwwaHZZAn_eXl?9}I^x>2 zwvizNa?Gm5*Fg?Ta%US|$<5TJ72OhWOgXjj#uc@XHBn$yTjg0=R2!wW2YRl52Wdh}?j0`SiyH5}she>0%tbR}A)kNu zYn867k>Lf65h=I&sPfLYOCYV*Yie!W){y${uv-c3d7uM7OKN?$nVn4Ga zA*vX6?MM!#YfZUgW8U!SLA{E_5{=QfW(%w>5d;bv@9!9{;q!6v133kj>k$Vhn0yd_ z#Lg+7KEdDpbNWcyNLou20+c5_3CQKw6MBa-p&{BKeNwX(x)9nm5Rb?z!d+U=&TUs> zj3sLQD!s4uoP4{UjeDj~@VmcI35of{qRXi^?inc14E>#l#<7Jxhrz#P8Xi+fdJ^G+ z>G*zP?Ov~-6?5f|FjdC^S7%F{eJ4(T3v;S~n@9sE8BH|jPUYXff8+`(q?_qVYU@x4 zZijS)W(pt@4aOl&+=ircQk?=drk*r<9vTlPmE7S?4YNKV-+XzP_Jk&`@PAqo_V@{5 zR-@B5_dREd?)#pM;orqAtOz&a6v+;2$9-YDhqvRb7g7&XU*<5PRl`+RC>TY5ABH;| zvl^>|V0=g!u$ZI%4YGQkuCkx5mIP2K9+Pd1tZ&OH>ug_F zI9}+bL9c)YLZy=dc+|jf7>_!C_6*cI6fj&k43hcTW78J1sn|evD!*zTM;$wN&6}g} z?$O{j7zc~npksg5hmLr1TpyPE?KkAiw(qmd+GH(&ZM%Gw7!`Sls{aYQGqAkC~X{)S!+y) zg(t?SzE2=~au#RMe+QZ%J20rM14Y^$IP{b4QBDk?%a`DOe~yozJ&T8frxDQ2^%sl0p-8!-ID?y&R&$7$( zI>!k2vAKO9kF9KK9Xm&9_bsL1xmNLlIgyW$n<|6{kcz>`zqnd8x2_6?^*)JNI?#>b zd6Bbp6dlBW(3vvsE9eu51eH?B6nqMi0dwRXH>7|buk8))@zHDM19dF}II#Ow>jMb6 zDho;bZ>;K#=j3^B5x~((D~uY1HMHMdvw5j%d6_R3S%J%t!oii-jGfx58rk#t!g+SH zyMx@{ZZ6RH!)8Jig@1HCJ4abZ2$7-xHN{BR&cu&@CADLP#?B_yNkb34g%Jj--9=dG zI8dzNkt=_n$Di|Y{kohBWi?wa$s6-DC$ZI6_$(l}W={ru;5p|HabDf6*wRl@uJr9i z7xCLn019OfzE;J|JXO($F7c^4B$cPsq&aDIK+&muoy0a!fTlC^y?RF5;A_IKFyM#5 zjXJV_41d<`O!zS2-r0y%j#}(?`?*&e=F@olNSeeamkE^m=DfL)2T5I_;*<&{9KLfZ zwRJ-E?9$5eB3pj?a5ShLi8x8NCVOtbX=o_2@fa+P&46!Z8TZf}YuKQV`5o0&Uv>)` z0Jystg}9r_hP~#7G~tEXl)hsSO^g%5kXhz`z-J6`rI4WQ&=r<3H08b+7g~8s?T>MB zs*`8p*M?^BQcxC9lpk_B&yd)I*-WY1i0{*e#9_m61C7f8sb?ngUM;_b#6!P2p-L5( zfL}5<$CwxYmgSX%WViCbeoM18vulam(eO(A#zWD2!Jxre4B;Nw`{8``uCwhm&T^%x zFomhifHF--+ERAo6#0-R#b#FA+no5snskVTW=ct7uU<*W{%aA=SLMO)jUN>42Q(?C z(-B2cY>$%NVVounX}B=1oT|}ViW%~Miin3%Ujo&$HACZKij8|IGTeZkqlV*&2lGwN zQLv0L5Kqr%IHaEe@!p|x5B9}W_d;u=qwz3OUOfm7$jB`8`&zh!_38C+rczF>3)30< z?i@$2XNNtL_%|+5Ozmr0EIqzyZp{7uZobUmRA9LfAKPIuQ&tFH$8!Bx0Idsun%Crq zvpYTzbO+Kl8-;@>i4-@zLsd~jOa^|{J@3+RGAG&UStYkt%ITM{Ufmu#5Fr17YtbRjJBaG`4)b-d&|f5)LjEq3(rn^4fnT)$a) zcXp*;Lpu;-G|mPZO-&kC)6jE&QSca=!NsyXOP3^;74UnP*WZ-uI$M;#7E|$>?iF)z z7*JL#%LHab+lX@2qknlcv2k0_0v|D^p?KY>d)}DZG!8-6y>oD>3aMIIxD&P|Q&Ldb zwUj=hFW$ocwb?Fq;;QySnHW5uGzr*dS0+($n$(l@Bq;%l3U$BpEhsO4jn@%}Xzs?i zDLTI!;saj_+pJd7kxRH}R>}G_l|<*{@?i3JX35lsq1S(dkd`Z+%M!&YyMtv*M`+eSh!S#AoCW^tF93t6oQX5W&P0byfd zM5CEkY26rxGJ;hz4Uo`Sx9U5FN87E!w(HN1nE)tv6Kv~_OM|cUwCgV8?DI~9zK&qe z7Y2tqk1rE^!0ILE6qiZjaP1*%7%!5g-0G{7gk6K(%@ZTSp38B60Zp;ud*IrKM^%~L zNQXOocbV3d!7(=$;XJ;Ejky9qE?TBIv~JJ@K-qe^Eq47E`HX~GbU4&BGO@4R#Z1F; z5m-?))s=t`bKcx@Ow^E+$?gs@Ok^9tLr8L|h}os><;(8!b__hV+t7mS?0Sr!B~1Ut@)QjnRp2j-EZc(r@eB*f}k zLIf)nIbsLW6rVd+AZ7|27t+RM^JcRpYtDgVI9zl6@ z9H(x-j{5(9zJ21N_4n$xHS3Oj@uF=%W6~9-xldg5b5yI^-;}oJn$otFC+vm{bno`l zX$-Ru>ErLw^l8(wMtisomx|#T-h}*N&Z_s2LU*Df6KGq@Luv zO&N3KtI2>YCt*$y-JxOQMC$TwOa(iKVB^{*!PYi^GWtMh>@?`>r5*NYy$Wu`GKw4` z0j3!lA}+kAAxVYWI9ZZ-t5wIQE%Mpvxi87Po`T$HxX7e6>s<}(0fL^7S*c$%v_j|F z8-)i(UN$EK(wQsvMgYSN?ufR59x+>}_0)0e_ROoUr!NrkQ|NX#hJJV>^lYL14q`%g zW#A!y-r=<(DQ>O zDu0AcG*07EQG}r+Ke)WkkiTRD&NsFrlaQc)Q({BaM8}It+-!G#!I5GWS*(1uh;+5x z1-PZ=a~se~WZ2H?aO5ESY*#=_8D9;#mG%B|B3YZ%U}%17?9boQDF{=lq5iP130drK zBBF3;e(IusQzp*p_~}M9a#EktL;-($jS@*^-Se{4IOmWwZ>Cw;N{hx)I&Pq%&c_jd zwK?1oh4f_OKiN5-jM{gy8x)f$e%)Q*`d(+ao?%Owb}M8`MmqT<=e_B`^mSBjY`gys z*m&Sy%v`=0P~o(d()FHbn;o{+=S7>agi$2s6K|Jvlh?6A4Q?f}fw9;^{?^5mlWjyB z7{9|nEI!^IiGA&Mzv!94F(>s&!B#kbeqrN_MhJrRj>xUvJe0Zfg5x6ypcHHBlNVGu z0mNCp2ci2C-)2)xbi3ByHUT-r68rfM>S%#{arnIlb^6H=uqu*b&+SolNOLj*CfXP` z@ep4J@RPjEs-0w*=#1iZQnyTWOtY(Y`!yQpG)Q%%&yi@Zl2pyH>h|N*dREkb4<$Pt z*A%@@ZlN+>;fgK3c`T)5(j7H|zMGZ!&c^OE+S`i({(r->$bK>eO5Wvuq-{~IN$nll zXkJruX#Y;=K3kV@#NK=@#b2Mkdt>Rlo5e#GHN{8)8u8t272@P{wh14g$le`j`zw2& z#doGEbL$BoGygNY{W2{UOEl|$H`Jf`T~EC>`igvBuFsa)%Vj?Q<#m3wUMi<-n8`J> zg{au-8h#0#HB_5zK>*84(1}5Qm6huzGzw$`Sr3CN#iQX+k-Ds{`^fmBM+X9moPlMW z!hTTQ$#qqQ{wUm&r)q0{q76MwQWHjP3TM9lg&UwnjL>ZSuK2FGM6b|)geGJ}a=2_a-02qxf#IHf6lFB}9yG;%JQ2SjsK{oU(WWeiPI9Jw{HMe`*_l0*u|Y*X!>#xEOF0R63Ot$7=NWF>OhC%6vr>w`Zj$U1xLG z8Vt9u0V<_+tpe_m-xKzTSs0m-?M$}Vsv(1cuu&J#m=o5TDE}$mj_?8cK1q zpLu2t2zXcVc=z%j`zv-Vf73Nd7^GgmLav8v>eJFN`v8dDXJT!Cpbqx}>ST|*stX{v zy~r{Jap?=wN2AxkCQ(ks4U-T}wF^e3bI|uOS~1K_vW0DO-uC__6uvzpZjTqqpuAZ8 zt*jP8|MQj<4cq5wh=-{^(x_k9n?aX#qYbl3XXOPcu|*u%ci+-YuNN2nz6b|=^z-YZ z?!u2B7ti}6RYenj=7F!-&A40f4jZ{UYDN3zACylzhMUA91)}(4W5!8t};UlM+Xp^6u@Dk!@}yc zkeb7ASoM$^#0qIOzchE&7Cq7J`y-2@DSH0NEG2RUBpBF#(dog@#m|Fy^62O3&;8kv z1a8hPR(v4%!&WlN9z-kTJ;3xo?@ebqVy_!o zXb8~lCv2+61RIPmv)6U$*78|+0=(NG8b6d3)7QwZ6@1#U5IqjS~?3fb&+x3sZb~w z-18gg2u)ajN?J*8iRX8=lGlRIwxzZBM90kb8hzqvB<3^Fb*V8Ay@TuE?Bq5Uv`yp4?=F?P2|Z0&$?=OM9*#d>pe*U)9yFE@$x zx&Wqs7SaHky^6-Jb_))S>G-#vS=a=;e@C08&)jY8*|KJNducp7dTWih_dBX)Gxh>? zoa9z5oflbnt&0mV(Up5Aj7%ngk9j8_B^?!!+y7ZCvW{`U}nSMpy&!q?{)H>fuXylCBaC*e0`meXok zT{Ozsj}VNb*NFG;7a7WDoF{J8KdWF@<&_n|(4bodiHWMBnRM|c$?BF#Nf8;g3CK3= za6w>}$5*K5)uiU9UJ-`|$IF8Jum)aWBmyI~bNA{3EtF8Cp+M@jhVHqE4T+ZOtZH0; ziwBFGycds6X)qtbRZO-G$x}1xW$j_Mn0T*$4v)dR*vULc1FCFN%DcQ=<(Y7U;BB{; zWR_@SKdiBXCT!D(hC?dzoJ#q~eh0Kun!*qeC(8hYqs1k~K9~79F&N5wgcSeDbJiQV zUK%io;_4bF!%!;ekMK42Zi51dDymO^hqELL^LDFAO(sIh)q3fiee@th{;a+#ny^Iq z)$;^joa<9NwO`EKF_g2|i!va?c4)!l*qCQy8_0YUhPmSOCIy=iKC0+Zd}O>qH?b&n5BCuI zNZp`ar*rRkhp^=?+6o2Sc$WHq^LCrG@-**L?CSM&E!Jo}w0Bs)g?})K@DF*}b+JZ1 zi`>E*VblnrUTPzZe1^(nUUZnF%!h1vOcPL552t(1(_Q*52(M?B{s^Wh(9=1r&2qM3 zZRHHwQj2|w^O|$pE4{>*w8X3D3ET{;M}%?0^V1bVWPZ9*Xb+Nbv7Ot0!1ExlD1wk& z3gAOjxXshfws(K;1HI3VKdl=og)bOMj{-n{4*a$DYX$|r-d+fcd|&1$B~ePn>S-Du zm1Vr_f}WW_hm^rtE|fDOdeu`Io(OdBpgV8xrUx2vDZ?odBMGyC6s_g;n<`%kXuy$} zN*A+qfm7BTv$T_;cR=HRufDj(0IArF#D28_RcJ?^Y;I_Aw%pN5H%NVp5qnq20}`{K zT!zL>{7P|UHj{>)=ZqO`@xfqr*Y}O<C=HSe@8~+Osti*_KnC)$Yo(AL7FI^SGQFTfOCddf>?EmZ)1j#2)%9_d za!h3&rTo#AhnG}W-g@Q9Avo4*nDpgU1JZ}4!!I97^?lyy0HGt7X&!c^wt@{?$GW3! z?Wtp*ws|ftth}=_5MP%|jV}S_ojo#E`(R(9f)EN7kGH#8YCj?=0!^ z2sxGI4`l8gJ@zBEDb6C#iL1ToY5_c{K(iSE$tnz9gfO-^8W+WSDjq9L2jvX{oI2*Ujv=IDsO~q^`Ja|KkurDvYWxYt}!JER%M-&nBpKktIH*{ zHaS55ga^aP0eL7q=>Hl1hmjcF0iTtN+nqElY<*aY`kQn$zWdWSFdnRec=U7}Sn`=5 ze)`98pkG80pF!H6%(TA(?eX-_W(w)_1o0+$;!mOfdAYg`;y*#v6)>7Gs6W8~=IbUPRcM=}@Gh&Vj!~zjeC0XC8m2|2~&t{=;uT9PSnlXSu-Vww%`h&U3niPIU z7PWTTs;0a9H|lS*4}-m@KG7z&R&SSoTl_8WV$OC^5jBksiDQp(@%Pn1Wb&0?)#x;3 z?RPdGt=Z`dy)}3k5beRXxr^%5diUdbI3;jaYfnf4oNCws28}OwY*J&R;7?=wh)n@& z@+bRq^wc8%&5^(6fKzDt#qJ>&8SKelFZ1~&1v}kmV-Zb=$4jULZ1MX!Z2^3L>|2(7 z+ySHCBhRyM5!pT$DY-!RC8hW%NtFAQ^x=a-=-vqZTdfCIX*0j1AVSg4#q=n`h_cHh zR2hTAp9__V9{jPy`}gFuO>R5S`voGDxqiTa6{(cpZ}Z%D5Ho$|%rAG)r$!HGOxzv+ z`;ukKtE7$>iBU_Dp4UKnUL~o2q&u%qt|r%L!JMS0*Ry!Fi`LA6+PvmIE_6`_c=4@p z$`j7xCD3-->iJxB*BkXNn0#|;blO{IdJ4T!++jj&jIN4Izt9eFYI-D!iL+1uS;E&` zo6s&#=98r)#9>)ZmjIO=K)HmDfkjyNk`-=;_45JHm7gj71-e4^5*h2<|9|$kzcMGS)@x|5xD>`>v>*aJVO=(?$F%u zCHoiv-@Vyp30j!ZuY=it0V;3Ikd9SADpNTGbfes~Z$#g{uV(Ls8g(Gf_2!R=udwd~{!1&MqCKd5(gSWqfHq(>wlGYwdrP-LIy9NsZ6PT|RgXvCF07 ziPg9pfMB|&F;{UJ&tZ`AHYw%ZdEKimnSfJqpG&3x|C38)yzGy*UMgsfVqGhLUHul9 zihW!^_)7WfYTJdvx%a(Jj5a?gT9aL_pJa-6++)t|$X@-eXql^7c)8WTFZpEHafuD1 zU6()`X5AO?KAfe0Zx}FYuWseeVehAGx!>ek#)F+ZVd&nx*gGWKhW__IL~-{Cz`^M= zkhRW$%vYx%+ja`xVa1mIUp7dWs_)Z=^_@-w*MKzW6|+zj!N>*TZuHbLjmYd;;zuu` z!$2Y{RB;-Kp*c&TLMBos4VUZ4sknxiz6vbyirf`{07XfEJIAyC-0e==MJiy(X<2cw zs6_Ap!qM6e`wd$moxRD%>6Vd0b|Bx|b^&RRxtoTWp3z0x2GxT+`u9W~)*fiv@cNJa z^A=(1K?3bUzadJXk#EBZs=$6op{wP+x7Yoc5@UA>>0*0xY};Ta>(S8)ZPHyE4DZ}g z*9JpYruWf*I2k{XKN>&V5z=ornD@g!`gz^t^CZRBX`CKb?y+ z>0B7EDUp9WZDa@eEmNzu1zF|oT;8hp zG0oazh`kYNm_OvToZJWh_!sFB-u8Q8X#jAy(iCPYQK?y5JlYtwq(!jyklF6fiGkv2 za;r{4!_p+`XkBODrWn3;8r%lsU~!A`9@7~I>&5WcFQ_9&AkkRT9Fea*8a9@qi(iAL zaaC1+)*X5(HbhS^DfIEg49WbCU*ZuMWXQ5gi*SvxpcWYaB`)JMY6*b6@(`-j#Fx=z z;rB*gclY|)MabRF<7@0NPJ79<@W-fhZP`AsHu6s>Zs z;B_30ht>!@ZaB5$7}Gn;q&P`3^1{;W)P>T2&P*CRd?r5KJ22|lqg?;=$q7;#2k1gG z37*8>I4kj!;DDmOz-X_MKnH+%5_9h&7*!k`1hF}uUKIyXfYooX@upYf?_2zhF7Dws z)x_@{zql5DV&?OcBOKfFCo`pM)tVk|yzPfj&?~R6FZeEHPk-I`=ib{mIYRsM|HW*QHqQKhJFf^Wb!Skj`%E`f(>4ks#1b_F>*}-`5 z#B$LONPM+S0l^*xM;CGMB#3(0z&HqE?Yv*KP@~^*RiC{2J7p0HvM_m7)uqYTzg?W& zk&E)b%Js1$1?Ur(mipvwNf&Sc~@X}|W@AHE)t(G)2K4_3gfy?-C_kEG(uXkIRL z@R-Y{S=Hkpq6mj{4R&!QWWo7F$X9GwqN~i*`nxo>_ z7cam2_S+x6c=gxUUwkeR=d!$i2m>=?d@wJIB9kj~j{49CO?eRXG+cUcOZFHn(b#AR zNyfTPFEX4D>On7nmvxut2edN)5r0w$gci()E`>smJXiN?8=4!crD6fJj8mJO6 zY*Iagb+rUq0XLRT!%Zm?U)!lL-I!g%>U1XWA>*qn0Af3RKX8B1Tdp99$q-#is`=amVPI5>>C*9}$3( z+rmdVbqr|((;!$>FgS&$F;374%Q1oAGW3V8L=b$ zXlzW)>mb+Dim2+FFc)dfnb8tkLCW15F@7~0j^y5=9BA@$agqRk@ybIb6g-{diAzDh z*j=Z&Me%~4SNY0tgAGR|#&tt?;YjT;1TfWv0qSSMa$ToO{;8@wek^~5CKzawdfjdl z!tov(SQ6Nqx=#fw(?2&AM6ymefi8>loN$jw0EE?KmAeZnBup?p$=<&|ozd> z_g}R7$aZw1>!5lfL$t~-UJK4E+1_t0icR(_<{OsTn~oo#%#Mu#^KQt5iy&*&QT^Wh x_V&Hk5F--=%t!66$>nwfLAKWk1un214B`+x01o$?4%+Ka{x6l!-!7jl0|1^;ESUfR delta 48388 zcmV($K;yr_r31gE0|y_A2ne<=0kH=_7k^A$5ADr*A7K&O2s7tdB^bD(BOV#WuTs{|aF!0I-BL0bF=I0+LNpU=2V&cZ({<6s+lYC0uOKhgXDFya!Cd)jp`wj*Q5Ptanqm zEarqTA4)~UZLg-Eekk!Lv51QJ#qm~1`9e&h$O12RC5y?=dC~7j z_Y=zv{qy=NxB3mz;zvk>l9ZFv!mo~pz!6}^6DV;9;H~Ht(Ar}#8>%^_k zy6H8ueZQcGUhBR`aAQT0Hb$}a-l0BK$U#}u47Gd7;y}x6gPm;cOG`rwz<>NycQ_4- zvS2}?8d-~4NFmw0WSk@`59PsBG`8QoYw1uQP?Rrb5Yb$&I6Tf`l? zKIlBvqX?UB%&h)ybDUiul7A8gXjvnOP(-eJ2(5=3DPJM$1%;p|l~f1A56C#*kiG+F z*ts%IIhSk_*baXfg%TgIgt_=m60+a14Q@cAoyK)p8^xHPK+nc8Adh}lDGYIUuSuV6 z8&_N*EiNpKs4D^iHM%i+e! ziPOWmEBWAxHJ9alDnDF_gCE`;2Y{uZ_TekB?y$_}6WKb2TRhJ68{V#s8Qra|O_+WS zu%|@!o3|WtjZhAcx_<#VGyd`^wsej-Eu5zYZDp9i4A2c6u8|zklV=J0Dn#QKs9PCQ z#lO7!a17)-|NiwD8KP?>Uf#2Ru3>Wj0zG0?7?5I3(ezQsC5Quj*~;M_hanAb`!_c? zebkicuPeBrXC)7;8eeHpK?^Y@anr-46cWQvbAAvp z;CN95dkQ)BHgAq<7a&;a(%Mh8682=3EleSI3qCoPOXgglrvU0MU`4T5aOTlUjqdF7 zr|itBLMQMSPk-2eyf0`{rafzJ_E1Eaul&TA>yjfXEc*;xolu@=pug|$d!(}d8jca( z8f-9MSF}~{@1Kw8&8tURC@JC&ujrsTM>>O~3>3rJ^K4X4e>pjCRfbZ4QZ z)Y-7oIt_uSseZU%s8snb^K;2v6jFrwD3C)1=MLo@vvd=~3fH1jZ2GHXb%8=GdUWbct7BAyV zfUdNsp_<2)EW#D(?rkF*W~(- z<-Z=4uYY`8ZFN^RKQC3IA6T< zs=Nsgf!;>b8R zr=w7p-PQF2U9~%#JvgDBNnJd$yS|C_Oz!ft0jVlF^K@Trr&dv;;AOi_?5Ap0YRf?# zk$tPB*bvHPlMXU7OTe_Myy#mUIeWQjxRDta~vwz*$zOE^B7R2or?-gGg zx5<8=MYKZ3xx4c1X{{SK?#mtKPS!=|0?Be}t6AkXySA9IR-zgvTTWU@a_hO%cpeHh zMESTr9{g!Ee*P_B2_rxUa#x*YubLFYw11Y-V-?-YCulsfNZ@z5mhKDlY&_8(x_%=^mC%ct*XJUkry>G`xc_?8;Zu>;1AC!BAvX4 zgF_?ppP%vUZk}(fOy7RZv*~XC?!lK}I;Sx7gF`V)+)PdK3S;_}5m!)x#n1sV0;m`K z`?mP6bvE~z2yicMBp$HDyLGd(NM98R1zr&Ih8`;Dxxp2(0T%+Vj>C3Qu&BQibjnkEmib9~C}4>9Invw#EPvrOJ(V(bhUQ1~W4^*-aA>AJ7obQf8*mOy{NW zr3k;dU6sj7W~IX*owR zkvUK?c|pWdzr1EukQ9X3h|18a5-~WbsMc?ZQKbgo(7D;Q;m5i+d4Fs&==bN)hMH2ptQZmZXf}M^+We~pF#$L#w(LAvuP`1)6 zWTe)}B37y2XIJ@hldhwnn6VU zHy^K&OO`R2Eq@^+J&O>H4w1%N=xXi7RZ2DqVg5u0d@3ffoT3S)mn4dr&^vKua+>CL zPc20hX1*HEyu0@Xk_&^p5c>xVPga{JnXWA(_GTX^kwh|E~ z(Iu17jS8X!QVfA90a`zj~PCrlz-9veeP!YLjXvgk-<(4dWBBJ zZM{~~zM0*J)AB5;PqVYsih>AbWyqou^^{1H(m3vNh3T~-0a6YMJra1$X(fyzMrXDi z!)+AbN!!0gENV>hZHw59?r^P8dmrE&z~{gIKypPW%lq_bl{Eku0HaTXQLwk6zxg~3 zp2Ge2^nVwg80$%9vbymLzBSQH};^=rU zwgqWX64SBQDwRx0r^hTo8pf!0E}u2Ycq~~V;eRihU1r+=fZok+rL>UxsFDEf?yl<~ zo^6D5k^EJ6e$qk~97hNV1>bqxA|x8Ai3tSs7X(o;L4jA9god6)0zzdKjgVf()3->t zp~Vs@f8zm<(}kpkB(>Zy$Si1=@|D*ugPG$$y8JZAOg~}NkABw;GS54|D+ifO;$D!5 zc7Oc(b2cma+YKt=K+J0$fzLE|yiBWVoO^q1wv$fG%u;dm3N@hBz6l!oGfgVTXz0(f zxQtc+)4m<^%qr6|aii;}!=S9r98S?NV4@o?cwGj2LfE>YMlqkmpT?B2n^Mb^uX##r zHi=R&fN`YQawN>no{nQONQi$C7YP8lIe+c<&ZZv$*Fi+*;{d;+DSR`P5KW^1Rwtkg zbuWg<`rtmszmTw?gs}dd-TW3|+{ce0{)9nq-3vra1R0k)r55SkhY!UY=mGQ!t! za1kgDo;r2P_H8NE=~1ogl&fm4@9zOA-QRF5V=Z+u_p-@aA(!Wxd~GDMVM)CE z5jPkzp+vqvgM_tGXv+a<+fKkk5+s#3;Uq}%Rs!EeL6W7j?SkVgnVMHLrl)6lt8C;U znBh{D3vC-^A+_bv6!8PMY`BcE61BKX;wlJ`3%HXM3iiTU0hN^ac4&)hM}Me~(g;}} zg(Lfn-EgUr;oo6}n#=oHUd@*5epN0v7iB@ec&pvB>mm7hEIpXgMZTk3k;(DG^npHg0rV``xus=W+_S~$hs!8Bly?rMa$FK z8SJtdWK5S^VJ>lpw++Tu8#RWhn-PEjR8JtqZGm;(13^~9dPPEQZ*_maf^5=Ao;fe` zv~Y-~>zv(uSE7m7>sA`aN6-+Wo5GRg0Bs(U9M*>aoX0m4?=ibJ(6S1A3n)03S%^(M4o7UEL zwv=3!X*iqMS!A@DIF^yH6R@t9A44H$2#ad*w$Q9LzZagzl`;kxIg@;vlcqRQQL1*B zN7+fDPNlGGt0Z^mh1RW|h4NYr_aAVCa9Je_2V9cgpOrk3EPsux^sa}j1;@m~B*&?% zxbcblwDPbd&hWuf+sQXe6}w9*jzCPCP35q5hjMaZ9COiETl;7D_lrLcb9s9hx=iXK zA>})2_T3YOxg7fK+RYX2nh*=fa5fRpDj`~uu;nb^43)IdI zuSu0kT%Sn#>3f8G~_oPn<$E zyk<$RSz##atzgJal+5Xem|&t!Zq?i0sJXa%2xTXT6mSmTL~eM+evV1ym9m%&|B1F< z7xQ;=H0CxUW|Fxtm9-G5=3Sjh4rGiRNRCF`-I~l)^nW!6VA_sC!U;|*Dam#>lpaRj zD#_lbT_r^Ic%@2rFg9TFXMh2*RIrG!k}YF?t`!jRl;05F74RY<|2ruGeN;T%kHe1# z!f^Za?P;l|+a%bFvkaqhy?zi)*R z`3WOBR(}eG!c{A(CT|EGY-!jv2NU=Q#S88#5r0Uy)HZ#ayQXgi)qxgpjk*%53vli= z(%K6mC#YuRgf6z$s-k`XAj;^+>eu%_I_KE3<)!39a`e8jLj9NDe)d!d705lMwv7qKlVlwr^v41K^evA!pE(?}Xn- zgDni_CFD@DB3D0#X}ymHt}g8!v9qpF|JwAngAd@-D?%%n$JZG$x)F0xOzuXqxY2M0 ze}6bLr8#jBTuUJ#{~WOvtHrLOLmp!n3G-a;MsmPtZrB`v_2pNDCEzW08{u&>$AoNj za6qNnA~BOzENZzT2pQg90bUhtxp&fzT?rLDZWrdxF3i;~WM8uJJo_r|-dBX2@*mn5 z!lw&PJn?pcApR+1asVUlPL+1&26fKk;5?iCj-IEAIXx@GZV(A5Ah66fGPcp9K--9);k<$i=-7BudPiHt zBjiFlVoYRC8TYJ-FZtNflw0YQCp#^quh47Q;cykk!tNnglC8bEuau=&OFBWjB@s>0 zY%14`a(Y`H%?t~E%0YhVWrea0Q4(SfC|ggNhRb`ic~x3AhEKXmLM58bOE&xc?c#M=kXNfu zot+l;;u(iT5wl4-b7@|Qy&y1PV>=iIRS*(*YET)?ZKL!ODTHQ~BWE9Jr+=0sm1vJl zJM7|}>-5vwVn4y;6}l&d-HoE%2gdtQv^$`~<}U5`TN|GHH*t=NGvb}BUBS{7i|%p? zoSGy12)n7S=Tg7Gl;mMx*;@$}HtGLrcE6R|Fz1;>gHx zYMiBE#SgBPvl5q@k#mt6u7|37w*26_SOS9o(GCE3^Po6A~((#ig z@I8C-WCq{Uuz%#1=)=GqFS1jt`Q&^J?nxXP?=5vdaDVbJ?*sfV5tVWTeT|6V{e4C% zZmPLgP}dCZ6MV8rR4h1&9*WwrcP~0+7&e^2g$i87P*>=BKo9;I&v|@^0 zzrwONj=rjq_vcx7YG55_=yKcKVc|kdn4-ROIfI7Bq<>rAx>0A6WSb!?>ANmzCz%(@aTjfD0Zt-97|^}pk?VN*`u1EnusnuUHr zl<<2t17sK$d58)_*FDxjfyw+UGYmX&)3Y(;ghKpWU997eAl94Hd zwO3$<3U&u%I5ZO~Okl8GAmQt6K1{!newPXJB&KGVA3XbJBydq4Q==(WE2g9v?tPh0 zZ5M9(i7yM`n{G~t!H7I5LsS=*)vSy23x6q_YD-!12w*A0pob!=gaV_?srWcNLs3Cd zVfI-yW;?2+k7ufGYZrA@EqR@44uvAioUSzuT-0l7|-W4 zn(b`W9WuLpOzXJ!wFOH?FS&w@3CG`1_q52@cp8kLy@X78k}i#zwNP>#Dk}g(e1E&3 zcU3cMr4S^QwMwek@#NJjT5jmAFl}p62D*mF$Kx`d z=^lNz%x1s;?K1aDXterNq+uhv(tpUVG`_Cj1G(-7fPwq_@!_AKyzt3cL`UL_MblA& zu-WZv5f=gw^S+9wn7`%CrPWntIlUs=O&nimk(BE=J(G?QwN@Y?q=V!3Ntk_$Yj zwN(~g0lKe`o=w((tu~zSFyZOx`s^Saqn0~bfIY|~dskFlyJD*@--^Be;eWd<9sV8R z)s)PHhacy6iVDSED8QF8hsD{3*vL!w-m-(%V+9rXmdY>lD<-PP;8j+YWkLCQ{Y7@Y z5%pv7a+zNh}F7UEt#kQOH^zwdV|SzzJ%=z5wAx0Ul2DeTZ-;r z?i)Ihn4b@K!)Ax2pE?;eqF3 zF^whZn1JuMH2DUg)Cx?djDK$F zIHO$k>9!80Rk}!Yq}0?TF|0+jRZKZD)83vWRZnz(PlO;bTOwpZl9^p^3FT7;_cSqs zO%_O4NvjVbDr(bg1EoRD02v|O*m!LnjBQ&7w)H{fs( zJGoM++m=eI<7wJ7!i_@jhNa@+-vRqH?io~eFwqnVybD4Qq`@#;u={)dbtu0om~N`x zwtmfN9Dkwyeozh3Z0aGGy4jP}ZB%ue-IZ`f8db|SCyQ;&+-kWY8Pur0HlnW)8v5;f zYcF^ghlghO8r8iD5CFQKB<^6lrzg`q!)Y@e9_#By2J$Q%C^#2 zmK4>oN*hi^!#nLU)h0MC`@pEjz+Xu7xvWZ9WzI#2p%OSYApf zQIr%hl*&WgUIeqlFbpncES->``kSl;pz8+!&g3my1q3d_Wq)4DXs=RLBh037p|KWF zCx15;6Q?bq0U=;~BVc@?pudFmg~0~U67!NH;>zVI0E<(bs7a3bOeMyw#n$vB?HP=9 zUlXVATM`NQ>km7G7~9q>LZflG{95x-1H$4+T`IK*K1=;Zd~7vq-Cp#xWhP__aN%~0 z;#d;C6tGP(te^#CICL@`ni(R`!>d3Qt0uQCvuN%aN|SMgan)DV&W}GA#aWR{7!?3iT5RYLQck;ISD4%_VC41#g7xi z@NTH!XlQSz7eNAX_S(HbY+Xx&!@>O#xk2p*GNQ6&GfLsa*Dg{F{O@uaW!1trOtcBbhwJ%AmI9l-W zB+_o22&}Poo&Mw=!U4@xX_Io=bR4;;Gwv^wYA7RA?U6T%>nqjk^i$4$d}qjN>&;}C z!Oc4r@yZpt$AAn{1y%1YrF%P-n=O%B0d46zNVo-M2qE`e@n}ke{1#8v=6@burbr|u zYkRXTQxu1Y41NAm>GC7#DJ)8`usofeX{LDvr2Z1WKR%`_!m}~kCV!i=?1Imeioxs;a2&TLh z{CFkVOcY$9$S^M_q6~MhI)Bmel=Ho4^}BMu(RJC%TKwIDSBWzt%Y=`r%TPz)?@1H0 zzV__BMZ+16A0pJl;_{PuG?jDN~A4*vozJzGOjpK*J2_P$7A!kbpG?C)DiAZ{{3j%|6SIwqq zLIAbS@G1Cp)?~lF|B*ns5k_dOjq4c*S5F+R9wK#s!Su{Iz{rggd4iGB4qmV5nRf4b zRS$8gp2vC~MCwvvz<+jGIozIWDX*9J4BL25dx18O7jz>XU%Viut7x27M`e?6nSu0F zCXg9e5fVWvG6-c$T0<^Ssp5o*Pi?I|2$Zo^apnaqmHJ8IJZ`r;q_-X+7WLsWo0m5& zxhNj}kYE(gB?W*iz|JvOlRJrzkCg)KHi*v_3xEV4xKX+NF@J#k*>XK+uZ3$zbhJ|^ z`<+)o+f%VV=AXENDfN^dyDf$cBfzb^S<0KFaW0W)(^MCyF0M=^ICQ=J^b-TwY0Y8uo_%j2ck_w2CT`JTuTf*tkRU+?|8y~cy zBSPFoMSzy9F7sJ{z>O=Zb-^|OLjA8tUul3d{uV+6s}}5sY+cuRR^W=jo*`(|BSLNd znqB8)6%ivtHT0?a8a_)#5eHCqMWSxL-g|Q|aGm?0D}U9*ixIS2u%B23kT1~RXgP(l z=}A)i4GRNFT<0u!1~&&iFfO{*7+Z$7NwUiS-C?kHPDlIa1`frp|<3bAkNzF`FkrSiHiBaUl zEOLSlP=67r?E(tvkc3I@{~m??DHkSL-I9s4kM;Eaj}d%!#p_rj9zOnf|FMpSU-+&w`tKPq-rUeg0Hse21c za&M}tB!7$R<$SLwk+CYTn!W#?Q6K+%PiR>O%706sIfT#TkdtzfqN(^*g&BF3oW%09 zGRVk8!&@QDm2!TpqnV!sfe}SSK|&VOOhtXnB*I3HuA7&%u1~^_2NK*oLNJNAeQ=yMdb(C~{Eq8(lXTg@oC7U3{mzID?MxE?!by0! zTn^6jVot!1cplEY>l(ka6T(*3$JYCb!?AX~oFUW7y1QO;OSFbBYcwk zM>Y{us8di{Fh~VwZK+r7%~FarIxEt$2Y+DI_X%g^!dk(=T)-garKnnGSw6pJXBDl= z&1vjltF-IolWrT;;5HQE_Huu2t*#9ZQL$%a-CkuR{bSe~^D`nE%Rnq)+U(4Hrjpsv zO2LyS1@0HxNl7R(HzGl91ka#+#vvrPL%wPgPo<-iEp7>Vb8a}nV4KSG^&O+&TgC3;iplTL~{aQ?|K8JxopnJ%P*(n zI72~y-rsA{#}=RwcKQWXMCpPSFn_*x*C0&!^D6YKhMkF~-g@Nlbi?R$+}V)XF<&lf zsa0POh_IkLd%J2Xpf;m%rM9(MtO{L}41J_S&ii}whPJncc}3ePzKg-8Qr4k*}{ z2SM6vf#b|kDRJq2BDc4^6d7ggyp2%FSlZ^xV7Cei!JbaNufyPQ9&pVH;(z>fU4yhd zl#Mfky7KX5p}WATkGTp+ta+Wo{MDE!%Fa6YZoF=!Ztk3Af#9nmeVxqmr3p|}6`{c~K(j&zoUEY^DQJ*pS83!_~;d= zC&tE;Cl+E0ab`oxyxb>VRugHVlOnAJHcDDcB$%_I6J_HFvVUqADGQzII1p8>_#kY1 zmE>Louq|PuGZWbYGTRe@`s3yhd@^`(C3I#G6)pU35@%|39zq=b6IF%@kzJ4i6vM+99o4CLA#gD~M6;Px5kK31=_Z}bY$%m$aFNJ{jjWpYD~tx% zV9azB&laH}rmhRxY~!zA-W5-y!g`t6KbWV-^<;-~ysT{Uc~iybrrF(vPaS=*B)Q>G z{ZiIB$$wsL-c|VpTCIx%UNlf2TIU~SW0tJ0|Kr2EpF3w*XVac8J@2FLy2uvOW{>WEva8Kj=0xC7G_3bER}yVWC(;cV3_ewd3B3|C#nAHx(E z7rDD8cC{*3YxL!XMht$bN+6V*obfw6&hc`rB!9_M+a0z<5;1~YohSp%@m)#l{#&A! zokyIgh;3weK=9n+jC+&eXjBmIqn%~4{G|uJgM(pq#&*TvJ~YVMr1fOZ7B`w{F}-OS zg#e4^4Ns^N`jTRQG*H%Zjge`iU0m<&YNVsCicgYf@!MC@oxa(j*{H+94$KOeU#rH} z;3^Dz@O+P=UhrRk_@!dm)%g-FUaMQ0r~HLwcz3trohPZnXIS2wpTE~w`T3KZonIa? zZS=ddVb^f|&Q`4_L^P`{^gM?3^~DQ{(0|Gf&g8hS)`NPzS^-5@%M2*aBzzoCZ?Ben z&{R!gMdQIJ*ki@4M7eU(AsNWf{eAH3@%R02h1N(`%rjJXLLcG5-jv)FOFs;I(8ax9 ze*Nypx3Bhs{&4uWXRn6C*T=8-ppSdw!FV`)^E0_H4lbK!l?;bBH#dWuXM?i37=H=@ zp?U~;hnN@2;gHAU!MvFVFFqDe^?>=ByBkSq#6T~gw=lq>PCZQ>jz%M_nz}-{5|Z`w z>cqgWpHdmaMYE@naOY;A;=Gt2M(yt+x1I_m zADt{zefEUBms1X)T{G@%V$SN>i&yk`GvB*`3wrN+e&PP3hNTskuUHK9LqYiiD!8a$s2p96JHpmI z8MTVEd{=Pk1Kt`oqPOD?Rz(NKQ|!Wc|TmP=}sCNv=GW zIpo{95G{A&PsBOZXImr-Ed^Amp|AcX;FPSLSd@LCXfn0CUT`PV}Pv=sc}P;)f0RJEau1M zceeKm{VHU$+w}b}S$FG#d$?sTNvHg4C=zcQpQD7yaru2!7JjS#549#3ZI5UQhlPW> z$xvm=XQkJ!SsIJsG7Xis+AM&>rv>ErncdK<`CH6PW^fzwKDE2k!heNF9*^S3blrYX zZ8h6LEugUg^vu^7+O180Jjq|Aqe;K7%=I#D3b#h0Ou!zSX_}vrL5#eXT%$Q=&5Q2L zZd7MkKEE|~HRo16x7^tut_bv3YQu@m@_kw13VzW7+Ud%Rn^UY&Z_pt zQft{|p!a(J-&p6Kxqr_1q-WHdEFEZeJ+ZO?f zl{24wwicb2$kw}a#Q8FyOdeeXZX&_oeRL6_e)fh$%kg>BTYoOTd-KyT$0whN5%=^? zJ(DDRr)Tk=fkQ(~Kqdi$?b8@3ED~66^CTY-LypICiYjFmTrr=C=^LD9 z6*i2S@Kg^a2m!;f2Z=3FN!XrBwdC)G_jyLP$X{pmWxK4A=qaj{{oI0v9^kHGcu@aq zoh{LZRD!O)lz)<;RwE2Z32*q16}t%HQ3M#McKaoO+5UJk=bWL$n53c`?_d<)Re%C?%ja9VYJ2$qD2O>mIF4(s@o*t*_uIC#*4S)I-XCif@j5n>Bc$Y#w^uM`6 zhCCVuB~)Y0af(D7o12Ppf)sE@Dg=P^C`~JhySh!8Uupdu9-(^AgWoB&9Fa`wLo)T9 zsfQynNV>w#bK=Q!LeGcZA$>;QgTU^r+c&o#BTJ9dk?pn3t2^2*$|SoKZ~lc9vwXRG z%e!YI?til4WDHiCZ2qME%fw~zQ@O6$>++^(7yGmVDk!TMpkuGA?1o&D%By&mtzbJa z5f22SVAw3uRz`k{vB3nOu@(TH8xfq6-~5K7VWUmn6QI_?^r6jrv~VH@2Mdma`tUy)?Y- zV7A&QPAhtcbCEDWm(Um62EOtLovGa>4aLFu6K-NN_D``#XNS{&d?s3_4=tA7_E9Pu zJ~sUd&Cq&sjb*Me&ovR94t^p($D)!z1|SOtOr!AQIMbeu)<+rHhZi0|+EXp7|9`K& zfVO);zZ?2pi131kBmcP8vd3#Nu61vGBs&17*gH(fql)#!P)%1*)TbZYeWJHbWu)OD zxX14)ZKH#jZGyEgG};Y>O~$oQw#LTNe281)plUw!EjBP9#gyjwkZF`5-A8kX8seLn z9eI}a+>M_BxMxeCuRValn zK~jHT0HMB>h;l)dm49RB-&pz4q2i?D;?AmB2q!as7LT|A?O)y=9LD;woflKP39dpo z4~QJxkzf+6Sh+%zybp^qSf~SBtq4tWOKSa#ktO5qk2|K?isuqq=<7V;Lw`eIaSG;J z$7a;4yn?QLF8(UWwQdt3ZA8|*meoPWEJZ@BP|uSb&0g`wk?<8r})%VEhLJaRFv6=cPqt-xs| zXstV-XDqy=)X|pPuWP*lHjk29nz)C(eC!DIZPHL*zou=&&eldTx&%Yp)PLIgp}yYvW+GK2 zy6Gzu_=wk4GOMo{U@M^LzZm|_QID?KB!}=>3Jt-r`uuBF@7c0s07_wx??i??stUGunXaIq}UvnAaZ zsmd0a+8`BNUlrgIl{iM?H`+3-;YAms20^=E=Pwe6<*)-ue#vqYR>d7Z!W>!ScLWCk zE#pc0W+U&_=zqezm+!o9$@4WikKu5%YLY4?c)S^L6bh$tND=O5VVige&$qenYd_?bbo=7vR;Go^S+Z=S;SC9#1I1v zO#XA}pvt0yDnSRug=7GV5lVx)9@eF4AJ!@pDbtIA?jVZMJ~eEl_aGRVjdi~Nw@7@) zU?(j#34jS%2&*$NCTadS+WF!q8iT1_uK*JXoUB3TQ$g!3P`6JOns#xn+(va~)GaYA z&2l!;4u6w54@`qHm`oax4?c%s*^-1UocFLfL#KuHaY4U3zgM>oLYXA&)7i8T%s)Gt94alSww;Yk`JII%=(T`}_(6KDJb0@NJ zC~Qn45a-&6$EDDbRHc$owui<>B@IGvkRqC@Bhx(4!WB}bzkSFrinKpYtnipD{c&Q( zU)2d#bzU}2d8O()aq2p8>-tUAq^nm^X7^KL;zX2DqLql|;ia~`%NS}4@QZr@DSve- z-&w%?6YP~~C?2UVE359XLJ>tS)yYrbtFkIsrL6+czQk?mR{MCp0Nui;HCu% zY$G{=i$O;D2PyWXa}Ne zA#GzPC!^J>2p@DkG4ptHki{LE7=N-(AP^?5FOJs|%2ZmFAW`P2CKtq^d8@)ubVg6r zNZ?Sc2Z%Z*L^_SBU`0_(!d3j(Vos%-{&`Dk#Y=@c(GL_LY+zNNJlQu^wn5tuC}#}O zCtfB0z{9 z214t>ZNK8+Tz^^!tx?o~IB1ds zxrWO^G9TA)Ww2W;7sGx>nFGR4Dvg%#vdtxHGL#eh2gsTL50;4!hu*xFRORyaa&C zB&XtBOXrEL)C^!ul>0Xrtk~;1@$4D$GVIJbuDoZ7$ zy0V5R{%b@Z^EP!2i+#W;VIxgb(Ufdb+y{sFY(gWk33D?P8C1DRe#7pv8ar_t+o;A) zRAU>nu@kGY6VX_X{fu4|gH<+1$=NA&5&!m56`A0pj~&EEKy1}6x}l;QyXeL)x=BaK z%^{qy^M3}h()2|6jfrwji1@&wC!8@`F z8!H!cvt(%zuKQ&VG9iK$O){G4EPeLPsF$Hco#+!`U1`QQn_w8Wp6)!xg$Farn=;Ax z;xpyvdock8(s3+4PxvQbxY&L;iiAO44@ui$^nXoBl3Pqea;-xEKtR90_jN_S;#Md? z09YA%&v0Z$}3n zF5g@C$Gm?I`ugH}cwJvwzE?uq3;DaN9!q@J)Gi<*R)*C^uqNA`YT62D^uPWwtDE;E z62RsUm_gfN^mN&(1@#zT{W}T_uJbx4){N?e<|zu^;p1zIKEM4(a4dBWkL^-gPwUyi zwb$)k26Uol*%p6vk0(30X{5D|Os|gVEL5W$!b^WTsb*Oqgh*DYNy~ zWVN?$l(B9*S1K)*{vYdxw-@*(MT%pWZ1%fnlS)r6sD7o7nq-l7ow~@-JZ-a>E9xgk+DgY5spw5@czS>9UiT<70e#44=4;lIdX0w(F zadXDhkvH=hhlPu`FeK~cynFJuqpUOL7>u~N%mL4+`u#}t($^zt?*aAFB7yz*dSc{j zM+qws%2jx*r^zs5sl0H8J{JxW7Tnz?#Xx`PbqEm2@tY0AZ|rz{-BV6aj2F=kT*`Jq zF~bL8^e?W&Ookup1Jex&1c&I{bJFguM25ZoQM!GeSark!1w~_fK~G9eX}=TrTg+d< zQqDaUs2AaK^?*wh-+ascc9wbKN^tAY0X#qkG+X90d6oSxWzv2v^m~}o z15$r>w%ZP4#G->}#)eB_Y8Wj0hiQMj>l5z`u=q}QK0B|=C9J!&8qruoFL;Pp=Of~p zj|e#su9;%xb*XsN$Vq?OIhbwxlAN%t>tpn+#q2Oa(GQwhdyEeaIGc8{2RzPLN0^hu zewQ;!N8NYRnQ@MByK&^Xwo(>*jNrxHjkkQ}Ia%9w!)ymB!T}0j9?Jtt%#we`zyXaM zJOL|tj3=J0Mt6|Ddjk$YVKMeL*DHZns z_ws8vMOpXvFG(NbbE!Q*dP_)5KF5Iv56HwG$N%J$ZyXb83$s_x_ zV-q{wL}K@K4irH%>y)2$r(eszdL>8p9?rQbYDHR98E`Rj7{GrsXYAeR=oiwDKr6!C(Do%?t(@>Ur zn?~7g^vj35IIK@dZNaqJ{((rUORK1CwT4ZJYCS%$-z7@7sW$QH!je=zEzf-BydYZn z*9M}SyhU?cZbxV*Pj21Pb@mbtlPZ0QvG8^(2&YH(lH0Dqg$=pGg7 z?4D3Bqxo}G%g{$)0H=)7;1JL+sUP~9xqwr;u8c;0;1N;0yBtY`sY0(I^iYYi$|0FQ zz^Q`obmXhcthj%8u-*C+NF81N0|x2QR&S^FRx_qMZN(T)$=frXwqiQ7|GG+@urDj$ z$Eh9kWfbd>I$>W{oc+`c_%hK@9+Qxgw%)vuyCJ*om_V+{1?aFKD5vg3DQc(fr z_90<^zYrfCu5(G%gvaB6a~PT+656hJ(RP(Gk?()x9^9g;#-=lQLqNM@vlDHu-aPYK zC=~uw&J`%iYat-M+=x^M5&U)awlK~AuDX1lwBCB9#Pe0QIp>Qm`CE*bH({gJHYNLDZ4>qKeLXAYOQH7qQee&! zbo+nOymvsGjHXm$OcTg*oL}M7erRm@qO9%Kx!NLu!&}$bChslHRIJb!Mj){$63DDi&PuT(WJ@Le?%Z&Bq01k;ls6 zqkM!@&X!|#M}c}^Vo@Gw(LP6C1hdszI2cZcPG`A072*j^@QC0yU?T_gO}dCoAvnCxXIip=K}-BZjik#a*XSQJRp zbesU)y>1%Pi5zq16L4F1@IYN5J?pyka7VhXMJ>GJfJu+msCmPgim&e8aIgKeGL4$r zcOh#1DG_g;B3{=}SKExXHFPOmJUD;MS}9OzQcHj=Zau1&%+I5mPzRnx7i(du-0tg& z_#2F=+pm1IdzBlx#A2Lx-PNA+D{hHG+=SE{Bb#%|oeuf%$w}+x!UqAmx}Y1V?)k6? zsT4~si|?pG($FB8dq!ppCBEm*CKPKWNz7GFYU`njqnmbae3>ADhi)xxeC&T{S7^S= z2~5gVsGfGVmbB5{HrkxtF_I=jjm!e?DU|9EA|6|*U1phe@cT!wuC<-mrnZ~lz4snd z_GBVa0QaUhE^lSg!O)`7QJq(Gt7Xc`gu-7(=b#3vN2pA2g?53Ic%bM1A5fS0Qz!i@ z#6=$k_*=KX0r*YPPHR(7swsa!gIqXx9$M?vtg&^o=P30=F)J z+@ymv_{3v_5q7NmbIS&;RUMr$rh zyEv25w2UJluBkW1)%7LGj+4txGZhy>j4s}yq||mRWCdlxm4vY;t@486YZw1bl{fT3 zvHdu>4IWv?Np~Ha-F1Y<=3nj@{uM1RFBLmGm)D_fU`3Hob@1Pt7Tp^3n6;$~O|>%I z#f5=>I3~r~DkdI_BCUV8-+YlLfvw&DpoJx&KjO8Rg!Q+LA0dYfc`06vPM_*!qzHA7 zwE~i#5XW%D2~fXYd2|CoW9^F$;^^$6 zYI!8@pks`Bx?_LqLTkFC6R}c>mnyjqpzY?0dH}iMq)&r=r6hmU4d!EEXxTO2Bjvwx zA6^VQYrlfFD$|k=V!02a&{C)?*9O0MMsZei6p_;X9T?W^#P%>^(4}7NR$)$?ZAPMF z+88&)TUnEYHc&WbKezfvV>B>#a`g{`G2(^qG;OX)b@Epy4K3V#yS3OEXgx(YBIj z3&U=;^Y|ARx=Ku2Y{=W@Pt-_M{z^5Q?&{hq+o&e(iX4wc#rRYdM#$-rWNTXrwdtUS zi$UJ7t8f%4WS%S87ARZu8J(LL_r4(!stlGJya?o47ap1V_F{FYm^yOkOg#~q@s2GY zs#?lgPwaoG5Yow=(&`-o#~owa`t$|N4(t$u)pE$lOOd{$J%c-H3{TT&P z!!O&aYNZ`{E*K_6>)jFoylnc;8S z*dO4dYE>fx>M>pS3Z@HTRrA0#szJzbZ5n@b#O`xaf!@=US#_IaMzXi|Cv4DO zLeG~(Jdt%;dlS*nLgsOM0(e4+4wCD59ifqeR*r_}Xhe=>iWYv#Cr@hlSu0`PnP2>Q z*6&ZqXSkVoIy>Wft%Ue!B#VMVC07eTqXTuve>myhzbX7+iO#1p9w5rU_klJP{6C>UJJ4QszJnh(5w zTF%0u)SF?akzcQ6VB5`BHwx3?v-?i@dA4=r@9#r~=ByQS5gW_^KL}PxpQ3ukKe^xN z`}=W>wv(=4B>8HYvkGH!VO5T4t8&Cd6S{wN%=SPcmF2d|8T`J2N}oPi-l~66&7h(- zklvNVGyb3Q-nG4LBS{qgzQ01o?6Cn6q)0i=%#eclI8HptZf+;`Wa3xh@j@gdVM75N z092%vIlukXrSE8vlpC zL)h5jm!k8@jpfex?%tRNu?%J)+;o45r4$CD(neFd`;x2~eZ&>nN>Jo>m`b08qVL}i z@h1!)enspFvulTT2JVz-MVPG0%f_%&#cSrU!utgNO*^;=^lIbfc9*U*ATcp%rYy~Y z6%ob*DG7s#A*`Vp_C*96xTZ$6-Qg4Q`{5{)!X=Ev2!CN={{vQZj%4r1Wzs z6waSfFgmb~2=AEOwDV4C1&z^B z6~lj;jA7vACh%%KH}MSZOzgX&H7$qy@~7&^L?3vJ=bL!HU29tdYPj9;jWEt)jrqq- zEN%rMQQW<-jvp+f7QakYF?N4$Ex*K*jo}jt^3U{FY?VeKxs{!82!dfu|BvwH3+C`e zI=>XKZ4YHzS6f=%7-~NLg?FZXnJ+S9&IAP`$?2^%wjDFsUUvbcMuRS$oQ#bbxaR(Z z#j;EnxXQR+mRVi@$LsID-MY181uQ7?H?f)Mb0qU9GZh=)@@5VD426H66euQ`V%5Pa zMg9bs85yt*PfKV_B%(IGvtb%I9pa&NlFUaSr?NRTdiyrMw^VaxVE4JZ zJ5@=1bB&xNSlye#r4Lvj7u^-7*$hybToa-zU7);wPs!GFr{a9l*Wet^kWz;*eeC4e zJao>z#JF4-tcPgoQ((KBpl7+tphGp7r>ndnwM~{D&dgTTm{oskFmd}pZSj&!qHHaj z82UG*ai6tfa%_8%6m$bhprt zGo!~cQ`bb3LZ})F;+lRlB5=;*G$h&TXLf4nD>|sFxpi_Z)JR|{A`;d*6-8XT#Mh|E zYgc;Rz#*DndMk-MxFJQSX0R>*e6X&w16==k6KJUb!3cka1>z@#z(T=kn_wW1qmWdbUeLigqdQ<=YtW0O2qr%evRXkS$Zy%W8Sm>3Nr$m`Fb|Y> zd*Mr7Nio?cyrCE-BpO30%NR<>`6KBuACM31m7nm=#vgAvEH6js9mV8e7HZAuRqQpI zoQ#g+c4&VU49sQ5#3JM(o$?OjvsS3B(eOAPJ$o8spsnHHkI$k&^wC|2$~cidyz#?^ z9PAa_2qiU5j$zj@mw@BJ_1Sl#OWXuO%)Uc;28PpYgcyD4U}8oQT-lfDY8;?aZD1t+ zN0}Gn;3_9+Gbew8A7AH?hQX6L&MddZU=j!9ZrdMh!ET;&EHi60njL_dq6?LE_BV1J1W9uk{x&g%nf2uSytYlfw}3 zyc~bvK{=pfa=?e=fR70Od3!*|gZ_PcAkLlm`}V+DfdgLP17q79IGg6c+Ajz8Mmcad z$N`TCCw;j$Qd0U|9pb9&+MAE~0+{0>9G?WGni$7)FG}f*3C|T|m^1WcRH& znC;&AJa_dh8tCj;hK!W`DrdsjKL4_M5G%a14=&g4h11piUc%xzkK}@L6j%8B_mXK8 z36B)-=qSxAj~lNOiP8Hv#IDliMn>GyG0&P`Q62 zi`49!7(F3Lje2t%>1SeNb?rn6654}Jho+Yu_n0b+Ln6U3RT?H=!vTL&uH@T?@(bvy zBP;#4P`X$}_cN?`E?i!6l$%KUK^G25oOP{_p9 z6b{qA{p&aHUj6Xm<(sd*`}W=EU;TgOt2eLl`GUv+rgBl9A?X1Igis-tRDqEw;tYxx z9(w#hi2z2`ku>uPQ$!e_&=f~Ul7Qt5B4 z^tYJKlv$`elH`#jN4PWkEmwj*+?B8s)k;vZqAw^- ze8@ZBz&ei~n^BVmx@u8o4p+cJKuavu#JMV0YdrkO+G!Gj z&FFG`{?DaM8s&vM91<#k01kiqx7gRU_smNS{+~qibGXLH5L@CKl0(C&H_5hO0MR6% z;Uq~4`1AO&6s4jkFF;{99R_^c^2Kn^$KCg&5J;$}@lEq#k9*JjpC= z;>=JZwqFLt>o{DUaK8xJJVZk+vw_Eti<9BhxIvOf#_=sMGz+l4Mjvj4w?>7xRt0{) z6eASxmkb7rQ%I^%Dj$Y}Q9L@5`iJHnVBme2z_A<>o%Vp^PKJd|8@;B?h(N)#5T_6b z#EwY{0qmx{xY+7N*Ytm~uNV8QESFhY1P1+;#gEhyq61x`;9Bv<%_Cc@B1tAHRxQ5? zh1M}+(M^&Jt!G(Icw}NcNv0|1c;Z#D!?5qQjy6(hY6WT?U4)C zTMSLgrmu5&21m!SnZ~m?I*ww)VP9CGu2pq9!heqOpQrfGC-{HQvsq*gp4V0mTN%H0 zm?s-LgJhqnAt7sKuA!{JrA|kzox?6Cg!YQ%S1?v-hI2vNyP#nv)2+AZf?9dF5U?iA zK11sf;Z`8r3WQsMa4QgQ1;QV4gwDbtf-EAEe=By~SVg6f4B zIss3nYFsAEAXbc1O5gk*X%abe@s`P-pDovR_8BCoTo#D@WEBu`9i1|7J!Rf*Vr!e< zf80S}57Zr(I|d4wMQ0FK!`~l)Q;I4bn9~{w^wvf<0?~i;bS(i3R#(y3(^KXxE3)to z&{~&9&n*-o$yO6ggY^6ysD#%hZ{ea61p_YC0d?NGUYzc*5Yuq<*q1Jzj~@FoQMGVD zj^#sNzPG0+E~g>k9w}k=)>Vkwf`W*hlqm{`fxw}eT!6Vb?4wnNUs5y_eNUbC$GTt# zF1PS;>#={QXnBc;=GLUasvi)iTk<4}D>d6A)E{P|q@#cw#*3OCvOPpQ*O0GaM#Oiz z^6*iK-&c$mr9wO@an~XnU$_(*v|H=3a9#;o+Gdhu`V6@xAo71;6A!6zR=HYcm1O9f zb|8m><2Fcz1Rl3|dMYR^8)@5^N`*2>=oZFynT&r5vGiQs>{?Fb~3T)7?P z+;x&$52hB^ileI?9&HYMjTEGe(I0aB+q@l0wG9(ixOf zlCpuj_GsZKfr@9uz(jE+WUoR_+Pa(Fw)~Q9(TInZXw?_2Tx@Y_vH_OE?9qQF5gDJ6 zFFWIW@DnMQ;(32*ID(b+f4oQiA3gQ&QQfM|x6_W=h96NQu7Zw9-SWE!^t9A>+NDH62}bu zmNBIjY|?qC-)&Xdn#i589tP}xm>~P0aufMyVt)a9efLtefW8Otyg=V$u|6E=Hg;+II&2$)VRe7)cL%0v z6FL5)BhA(=H$&o~D$;THBzd;goYsEK>*(7=qeaYqB7u!m$hvD=c`vYO|F<5_&dUy=Aj;o%U91)uD36enaxpx8Le*`;BXPc3Z0!6^zEAIC8?$Q0;^L zHzS_j247wCxNq;sLA^eMWt@LEd&7`YpPgTXrSNA@i-baJ6OY8f*vO z%CH`q>j+s(3xT$Y)5U+UYc*(pd`S%mgRK**5A2EXNH8yv7dxzAU($Dt{0x4VE&al^ zRilhkt4297XJ)%7Q5#s0Fs-QdqKv39)rg@lEmqJqQ&LA`w>~v%S8soJVvj_e3*AZ2 z=%lx+6Ho26Q9Etdwx%eWGH19pW|-;)xA{8d_KUqvSjq`qwB~~-LCK(Y`I`9H7Hxg7nh`q0e^0Z{q>ZnxCAXrc)W7qK~CAu4i(m)bR&LI-9;!NviO@1<1yK4>(T zb=NG%Z4+&VPbT2gRNf*L7oo|Wd0RQ-Rv1EO-d4`I6#~&_BbF~T7m&~slvJPjUVs#T z!c$yjT1Z+6TCiDsT48F1sTHPHn5vzuYyq-s``zjMENhF&;=+GJ;|KzWZ#Bz7;=vQqBe0 zwuxWHONOvGK2yAuVeJ|z$j5S=n*#D z!AMa~G`=g*W_y1bFYr$V+&T{3$f+pj404#F(OG9AYq=pYqLCq5TW&V&`r90Km*H?+ zBcTU(=rBH4(xoMPJGwhhn$snDG&moWgWD5=_W5AJKP^WFRN#4{OVDp!1oLkINSJqn zMc@;Q+)RP;qAx&P8Bt;djHOCKYNb!@Mo08@Lti&|GBbY^2OMU^Fj0|yb;zxhNk7c{ zHB>436=K7@R~(jrIH@{TYgRZldg?)43k*5o%Svz9Zwpao z=^31@KGA=qtr6X}Ms(X6k(&awW^vsyq8#r?|A=x$JK~7yeyJo)ERQDL zLkqEWBd|5L!N^dR?aMAqwGDQJ{HmCWHa=;k8h;j@P+dz8W}2N0r~P*N*prlPSUb17FY|1 zZLnW0cs56R@s5z07QMOawzWISS*re&wNqz@;ytF3a%q=#Haas{^5-KTmo9E8VXK19 zLQIZJSdOu86IQe^)PH(SWbRqOlgF`HfoGDK`m%PFx2-DFhu$Gp&l(rFS&@92V@B@p zRl|SUT&wcec46QdkE5P9|4Z@E1qC9>NTxvMhI#!8b+a>H>Go)*`;;0F5z#14wC+{W zVJ`6t@}eTe;7-vggRW62R}w8AXrA2Ni~;ZV%lH=l-uBm<_!86RgPUG!B!}lvYCgF2 zOsIX;IaAEe%F&49(Jw{^|x5k6R#6kX=T8KJ( z7<5!i-XSU1js}QS4NL7%!0A<4VcrJ~%WP<`QJEE-LE(GioAQH(!%gfp5H4yDVIRjD z?d=ap`1SRLtI21DN5bdfmcHIJSXY0`@DHzl{L5FLzY7cnuzb-AqCo5Njf0{r(A#jA z;C)MjqJY_?usIQp7AnA3KWvLN;8WxC}p z<5KI%ODk$ly{Y5ilK`dkLW!DiEbA-SPpoFnI2Z-e+mq03o(91<)5_n=^%hqjP9*wWP#Sy40>$#Rz*G7vGj3E9}(?E z6w^$D17Qt^`HjfMy)CyMb0$eLlDdt|oS?Tn+9*uKQ*B*dcWKm-U5ke#wyF!RNb5T6 zj}C_LfBH8%pb@0H+*?(Si*f15+(k-gW3Gts!1`HQXRsH)NvmH>M@WAvK>N%hOxgx- zQYn?RgUk$Ql+o;?QDiBMx~6XJ7F3q64ROG%^3p6zmPZZR2cmT+^jsG?;g}^2>hdZJ zJMS>EI)x^-a4aRQp;Nktk_B+9Sh z1C^rC=oKI9rSvu>>8-(c7z4@WIDX_CFiay$jEgc+@>VbP&s%>E>&?=SM62F-3-8~j z?D`(s;$M~eb*6qT17iT|onrY@z z2ocuigSQkg@N<9ogx=D`q>$YNVDKv&$rAXbt&d9DmCowbI;-3uSE_62tR7~WwRD3$ zILZ7(*Xp^_Jy%Z8mF~F`J)2p&R_METuoUfd9 zzS5(=a@P4ugX78p$CU=hm0storrmR+dv2Vb8{Ko`^xWv48>i<+_uS~7+dJ$^1Lw-w zVOM$~uAGIq(hG6rEX0*wh^tEXeAe#yO!s`|^n9j!K683L(>%;-JhLNS;T1xv7 zGH(sjeYupo!xeCN42b_9|7f{vI696Fk0*wGSvfao|l2GIj&=cxPa0O`~>-mEaCmMPk> zskDyck;$L0yRzP5)ClYQ-1`10UM6ADZz3yg-b#BL3-e`RfhH`LS&e34s9{IppTP*x(L@|;G!#swzUjs2FbAx|81k-;qTQ)r0iKhu;D}+IVwlnb}&im*63NA)K zzwmb*dCOL!Y;V;+?^V6+rO(`!dzZaA)aod$+wLv7ZKr$(zY=;H1NKEWc68i7-#ScS zYwWUHhiR17!-RUNzjPY}R8|!3KxOV+Dtmwi?!d8jVF`1u_np&go{ghpob0&nL^pqX zHuM$-M=);V9&nvkrFLHWK_n8pS!H`d@ znfg+yak|+~xzIZiX~C8`gb_)XYL(Y+#`HO}qoJhH!kl)I4%6KZk7*9Hr2jNyB&-^@ ztsiILZIO#QpY1Fnj4^C$h5w%Mzm$J+#s8Ae$16&|I^z`lkim^SO@3(TmsdZ%`~0sz zyg-5V_}Oq6pWnPR?F4;Rb$1(KK4-vWLyld`;w72EHn0)}d3J>q5@_OgZMj&tRG*6c z3Z-p#b(2=?xoMmU?1x&`aKefOCriA@qYNV!F)h{=`>UjEV@|OgfTi=FnO1)T4P4ZA za1%6(*HbZU za4URXV-u}eS{Cq|tzeWr-V2n<5;n5|`LIU^0S~hSl&w}5W^uKdsNI9< z=NdHTA+$><*DM{$Clig9t7Lyjy0IceS#^?6s$MT@k_>JlptCXZQ{I;Wv*fBZvDqwO zZsQw$|3n-y(W+#)_|TT?gRKT2lt{2f5?eyb+WGX&j zFhB+@#LynXS1cq*UbLPnf{$Q!ic^|tmke1n3DCm^#zZ0~0OW5YDWiY*A36eIkOa}R zNy;7tx_GrL(}v>mt(NIL!`wIs(0NE==Gz;`cS5)?1C_*Qw=(DKHqO!-sq$jLKlGs~ z2J&Z|0xjP_0{wmbxP6(5EY_vSyG~9$%})_LGX_u6jB{z+Puy}P9mW(2A)wa1{M~)5 z%(}UStqKF#h_=KRoxXpq4$_rs}E>ck>j+RgO*FTvS3&xyRWu8)N`d1Q-&7zR4TF%EIGLmcSP?I97}V z+xoEu-%rvW5QvsU#+$<`%8SiAc4H$eybYtaH%gmZ5lji+ixqr1uAaR>Q;eZIz;PXl zc&Xz+7%c`dp@lImBH@KGt&>6wW8rRc6WG1sKv+EE2wEN=DL|DLBwB$tjj+({JW)8^306?H&jG6GAWOlg z<2`V@3HuJOjXhM>@p*3Sq2ua}s1`Td+#?F|#uC^~JnsXX z@cz9a%k${&SdQaNpJ?1tsa(sMzSFwAiM60#`JpdW3QbTIHk|6D4XMfolOrjYflaFP zR~{=~CV**B3e(Tye%;}K&XR(6xHgw0Rp?$8vNV6W4#JyL3mE~^M0h*tlv_-JtI8;I zjAhIezzGzrhcuwNqfWOKzDx&h#2f@CxQ7mc_{q&E37*8x$esiTw@&)4NWVFD${&mJ zPWr7#uW73oSxTEW#QdY@PXNkO;5L-b8V0}C`fFPqeT~@d4=(25#hW)jeD&F1-+b}z z+ZTV|eDNAdk}qHU@WtovRK{y`pf^uxk}yA*3XIx}B%#_u0$g~BON@KT@W?_W{fh<= z-r2gzh~V@N179UhbJ+ao6f%d+&VO%?#W()7!jf|{VI3D?&YrT2F^Nbz?GtvIp*yh* zeTil0NDO`*`>(ZpCiTdr_Mso=R5FNp^j%~lT%k!uM589;#Pnl1b9C~#m4wW85b z6u#h2_rN1MW{p!uyDi=e-Lz>Xj>};`yS84^*nGjt;QL4_Oq(CjKw8a1p~EgBT8S@? za%Ika7#HN;(SDFM?`L$Nr@TRLy}(I9n|H}iTg;C2Vrwo_`gAwjc>AC>-Ue*o$ZfQ} zBXd2&_A?aZcbpv_N1PzYVM^KWj^Kauf3I6&egk{*pmJ{r(Nf19(efHucia~K0TGY< zChgklLnT?${4H2$!{t142*yBvSOX*T3t zB<@u+N04OwiT z%c&7%gS~F0&TGeWwq&gK(QxP#p?4EtR3X(lfj@~>QNP}d%tQ}qu*Vv#kJh~wvM+$1wA(O3$kyi z;$R4W4safvAgxd0pnd7D*eed+`YY1P#@jmo9q;#jt_pb`_d++a@b80g_NJA;ST6Hb z-9||weHXPXitU4uGA;`A@(oZf)$N`H^FFAlx*=NnM$^%pd`ro%j^U(Kw@&))UYz*HI$>S{TB=r7 zH%4q37%0Y?7VkhEOb<5~2)CB|k>}kiwfCdbed0|!3XLhw%QE;jp79Mz5sun$OC(zK5_0JLMGq9#&bz!+1$Rga+hSKV^}C$$yp<%Bxm$1 zP3Gq0iGLfJ%O$$V+_fNcMb|**<|duHMmiT6{CJIoY)QX1&XjlE9kT7;QYLf2&ov4E z!C}&4OhW(C=Y!q?`IbSww&)I(#Y?y@t&0Y;w$i;qFz<1^?HGS1ihYJ|>KO^*wLq6Z zfIkqs@kqAcR&JEsD(3sEA~dcqFZ_Xj-EfM+0pthYY!nUjhnpX6B`JG@4#;pNSPG6l z%-~BzQpJKT|6bLNe0!;cjeaG9lFOT@x>Y4^q|+V1y&|uJhIeCtNqc84XO~fGNuLoB z+9)1b3);wG;Cz1y*&lvXruK7gDMr@`>hGh6wjBPf@9_?WPxFuHLLrZPEf&MX|LYG# z`)d!jw?Y8jnC~|-5v~F6D_N^O-(#4s5AWlczhlK>)jdFv22)k{sy?NpIEKHk(?vy( z_v=a&uh8)){@W|$U%NV_NFS)E7KSvjWmV>S2R zl!de+Lcw0Q!#`P1TK4PJp8O^9dIf;v-i#vEp?`Z_Z(LjJLapKlAYYX~X-fw~7PH6!t1)_8&)C(eXi7PBv)Z~9#S|~H zCH`@f?0SDAY%vmqIbB`?6U~B1_nT#i-Pj|BtlaVK0J8Xk@NxJRyj|&;5t$12y&Inm z&2)8Mkc+t|cf*&K%;J*<$>Q#k>Eg!u*OE8jZF;}w%L74g^Q^@rUE-UX?S9FmaO~0y z3yGVp(rVurqY04TVQq_r+2wCoO&gDzW)+QrN~(WNaq*U;4^6Z5SIuM>LH&aW>GZn@ zVj9bf4HLxZ^?B*jZ<852M8UGyK7yB(C>z8qO4~xAa*P0}<)*P0SJbrW4o$arkU#%i zDkY&`0rW3prFm^v2ErM(LF7Btv{Ns76Wu0^@wFz)x0>-Iu+y0&M?0{X3a6C}<#o-V zk}7}H`AI#=QH7fEoWSc`<}{xHorY1>;Qy_hTgo}mveC+vjY_QyEgaRzGNrmrgwvM_-;ZPfL~a6uocPQ(P`(pC8j{A1 zHTh1hn@lXTt!ShA!B{-l-tT!ExeD8j;|H4nZ2P~a*i!zh46v;CCc`Hj&qelc&P{&? z#rD0(pyvg|Y zNmm#;rBJ`$CN-{sipR@71KQF6tR_7Y+T1@jGBMGX&%0MPxalV;>WcM~bLF1wLv$R) z0-7C5jI!+klnH2dG_ zT|8yS9Clsls1|En=@?`OuI>=y%9_`=oaQc`QMMs3^N)FHs|T6Xe2^iN&Ln^M5}G+3 z&BocOw9M=u&o-*cxu?pH?JA?$zVA1h25`v&paF6}0Z}Kd=NV~|N!D`e7`&+FaP{3? zjgR9c{C7DX#njNet^SuXx-}K>0vYO7aI{&3%XZ2@J)rYH3&h2Y6Dg)> z5q*_5^GlRt(~t1z^y+_>m)G<9?@c;8{XfRX;n79T!%|Hs6HMs`f!bwM%IB2OjQRM) zV4!pgid&cKYEIu;1o~Q~g=T?BJWJ^&JlDC<#E@Fx^!12Cd>4t-!SH|OR)(1wY&|8J zg{@Xu&*N)pz)KJ0lSii%@(=>1BHL_f*`$x7bwDf7^m@hyo~4ZrQ>_4=S&WRF|Ay0OsztFblLNw0TJ$5iH>Ue6}d=oU>b$=Wtp2IH!iG-#ThGPR7`+Kop3W#fS9AIa z&igF;pFFGN%O2*BX4D=Ir?*0vNAVi|rttT?M?vgT4AN(I_L67ujAua|iEg}|h%THC ze6y(KES}0)e1dtqeT^Zt6Ax4O{{yK_==VStPzK#pg=*}cX=h#`mp zQ1?)Yy6)`Qo~H{y0@8?qbUZUV{JVeF?oho?!@C#jf4kH1wDZuBH*(}7IdT{$ZeVry z{_nrPX=X=wZzBqvhA=Ih5pZOJ2*c>A4B({z@LXs9okM?GTj0llK6N}#*7pHO8=U4e z-Y|$p45DM-ia!YSX)rF458$01pHdgp0j&qE1|1_jM7@eu;E%H&l$}9)Jw986g8pcY z_r<;16|GX6qRCc^{}YVq@BbH!ZGH;q-HlHR(e%45;yg&&NoovAq2*;;Ut>}!bq(U% zD`W#JoJD^{hZ1K|;Vdec1yB^GPcW*WB-BV;X(QU&%6KJ>aqZ;SRt^%GoS_KAU?TX5`D-c@!xo+3w+p!+rqe4)S?3G87Rfa=V)u`z$5)vI< zMag8eIpW|CCnmEHiqIOGi4LRQlW2T!cR=Lh_~3s@Pf|d=C-DIjm@1W&1%iXk^I+?{ zeZEWXg@mxCU9QrVFGv7vvt>TV`9-lNgT@Y7yx{5?K_w^6yTQea z|L19w!uG2>K_P(2`6%ewGT4=On2QYExg3~t*`{sqAmN}vK{}#AO+_k0g#+mq2n7`? z$&r5tJ~_GYiStOGI0%&XMN7E%{7D>~V1Fn_Twulfnlox0u_v)j+`}+qN7D$Si%|1s zB$y`r2~H%U{G2aB+p#x^kg|nVX5y5gIP#t7#v$1 zy-@`FKEEPa7*|S$lV30MWfr0;adwlDcL2RbIU;uddQ!f%&M+ALlZ7h&Xx_G`2()DSSksdn&~j z77UKK2Fhlcr2P^@AZqV3guQ{TIVXReEa_neF@0F}mYB%llg?$#)}@NSHN4LIABt=V3?wGZ=4#arRk4mc%_NrKXUO~Q5+?E<8yy;D3G=G z1d)`FhL$639Q{vkVU%@@@oOh*-gaLVO^D%+M?<;o*0Aja4qGE+jbgV>u}XgyW8nPs zw)ONT2&8E-xarZX4ap>=jWG?8Fnrwh&dmZ}VgbM<`pUSw0ru#2oNt6gn|6~=U`ua) zLKw?;N`g+3(L3)Hj$fHB;5xuH{Ob>2hg?F7WR=ebqS(;i7v@jIB_v9Bya(f49AOv+ z07r*ufGk5HKgMLyPR9NkXexjAkj$S3i(qEK!1vxR-A{Ci(>=XL6QIbfkpkrv=OipQ z#+uf*#T<6nzsyT@UR=ZdMN(;x0GgAu9QiMJ3wwphl(UCKnacUa%0!~LFxWvp4FmB8uDczV-W>ea2^pF}$Ow3soC!9F(IGHNBZ*3mxiDbIiP8v^X+lL|kd zRM>nH^2NYkqrXVzw4dTXpWr{wW-iJ4VN6dKA!t1k_j;8HUZ4RbTZFGZlY8y~@bZdKg*O%ho)Zo`Id@Y@~P6cjLw+W+@Ks6AVgE0WUy*aD!qcaif?;wSs*0w9V0JeawA z*=1(Lg^r%YMLfJLYHKj;rtZKS>q0?ld%@d43kGRrTqSTY z<@}d#;37eg{)BGl&4jmqGC{_Xk>4UB#ZS(+DzAf9pbPtn=z8m0c{6}hxXcJ%lEx9_ z&3qgHqIdbNQ1Voz%72+3i7 zB{pac5%lD%b3{yGi>P{}{0sp3Bb$PY+tWqMR#WiD;!bK0O~eX+q`m7j>9(kDB2u+M za|ybG=<7|n;`m8`>Fy*1za~yOmY+~&T*S;i_Z3zq#<}QA%)KE4dV`+K2JhZs3t#Hs zJ@`Pbzhdhv!9a=oTr0FY$6a>{-V^C!@wdFW{40T^J1B-ArNlCraYXe7qzjSc;(E8m zo$FIeZ2f{rJ6@cBd+)SM@;~deh!=}Rws0U}PFoe^Uu-$wQ%Wtsfr;3@_9BdD}}0mG3CWFzo3t^bpFc)316Aq zc{J>#_f>RO&*&{$-^Hq!NIsHX!e1d-p#2r;uYC4Xl@C+*7446OQmyRICHf!u8rQ`f zK8zD=-9_?Q;8MSPS?56CP}pK8WBAdYysR-e`$L)=wBzhmjEk)xPco|Pws2sq+tvns ztA`|y+dTk(lBdBF=iJb9W2;`_t5?xHTllCm+>cx|DP{IxG-|-WQqV&S8Ft;Fp>hGP zF49mr<&Frr9uL;W9s85^ye+Ef1iENZ6BsYpYH+Kf3N_`$#gYezp)E40SevQ1)}P(7 zvv6{MW<-87J8o2u;!e*+SGnp6KwK@?j-d-_&*Ad&fk z{9bVu|Bj^I8wC$*HTzaKO9s|`Gj`6lM%`VrJ$$;p!oDx-T$E^0HJ27W)1q-=bJ3{k|WLPqJ4K0iHfK)K{wtK?h1vrqAyU=Mi9+{GvlL*eS|X!NI{dNiP+_f??l zCOXvgucz~#3W6<5GGu)-LO8UFZ*SNfLTAGmQZ~aE+3v7remvL0V-_XqrRz4a=25zP zGx&oVN1hVIhq>-AxOjvg* zM4$@bazO2_z%G&Pc z(=2HX#FQ0U!R(}rFvluEJg>^S{!YZQ*(NeXI|&`32sm*dkZaN?=@#v20UaiP3IQ~= zXCwnjcAj6b8H;FEB2?Ln$`G%07@+PIr-Tuo8_{^@MV4_s-9@dk?cl1SxU@-D7u*+4 zx-kJ8GUDi=OEbw_nxj_!{Skc|OVC9R8_T5n7Gw0}@neOQ!CH&y-ivZk6miDLSlHD_ zlq{`jyjr=<2fa2+JiA}eqUwHs9@qA8wMM2x_j&I2sRi5ejxA5$))Dn6{hFc-Rk^0N zq&GnR8l>mv#6{Vm0z7Zq`zr*u9?PXXPvdQKUk|t(b?TNoSQSt`?0Xhi=}ziA z(@@{_9p@9;Y_&~p9Pe<2>m9D!HR9yHlQp+U%Q_ipFkt%PqQfcM_R3s;vB%!z9@+p_ zeQ*P^`aVA8Ty^p-{)Bc2IqPaZ_TupYT>VEItAn^{=hy6J)yjO zUsrA`Sm~^~&R*0jd^13QNqiC%WswD_OmT8V6MG))>65?|wd0$?MEzo$$PagI_mN%I zk^2Z^kedhb4zRpid<&_Y-q`e3GH&>7?|x6zyC0F8s4{{F>mYcdgj2M^dQVVETE8X`?H@B60v`l1*M$w>H5=?#Sw%zJ8EVQfS91hC z2aysIc|&I!05$hY{1EDbMcWwRWJX^GFV%hw(CkfUZb+2a+z#8cMEzrc$UG;#H;lc$wCX$sMb){db60`6sBU4$8G#8g7*w9 z7gMIMg{j;Hp2{-3&u|}qr5#I~1arb_{ru`8aL%$)-By%DvZVl0P8Q_6(w;_%J!on0 zbn}tS21I**DRUH6&h5+G5W-tWoLM3wwQ5O4>P;+bMG=wNBn4HR(5mJnE+R4^Gj|^( zwx$Fq$C^)Ebk4}$UtwziDEpHAq7-Xe*REND$lUI1)^sy#P>8n2+13oV88PIt%+nq`I-nOfMC>h;L`qw4iv*l`fSH^em-2 zVt!R3^PM8#v!eTA5Km_R>*=RM^<4aXIHfl#Qa=g9tUrp5{ydBh|2!NU>6u8|V88=U zKb8u$>_|!XI|dr63-tWPH+&s3L5e|jhZ}lFDT|kci5eu+=^-9cF4N+IzHOq&x|0gH z#ev^{z;F*0yR$YtV{_;d#LQIpWc1`*B@TI`RcoGV>u$5veZz5 z3#vjyujewh=oItCxZr}Xan!9+wtAC%!P@Mxz3^2qpEJE_ZZf^r-Hb5_PBa{7`b-YJ z09@%?;B9T0<-$7!I=j`uSq@{Tqtl+Hb&n>0zC_YX^<@muW|&cZr=VMiwspzCBQ{Vj zcc?J)9Pn#{tj~YE{_fkZlVfo9n~$ub4BWmmR|-8}0J`$){&qn|3ioyW{eldh>Had~ zgQ5ir7VJ&grGaB{Dl|h#q!A)nPBBKLI9ZXgfDVem08>?>ajC zBtC-!|113W1^o9q(GA|f@0*i+a$_|32GZU@+8f#6x5-uSreDV|lZ)P)J~`k0_GI|} z{kPB4_wQfgub0o)5m3ZUUaT|PE59V+w}@@#S?8Lwy8w(Nh&KeuL%#Wzlp?mNFg4l8XaRk`?pYhhZ#VOZy?O z2Dq2{vRp1OIGg;A4s@$Y$^Zh^JKkCzH7y~>OW(RzbdY?sw0Nst_9}0 zzxnFQ(;qXP4J!+Tb*>42>jbYV{2>=neD_8(xtcQNc((tF^6c)voLui;=#u#+t$%sg z0%OhnE|DwjBcne;SpyjDB3mY>NbVlTPiF(*v9p`+P>oFFMbG=AsrnjsTsKNj2irC+ zT0e{u6;x%NsJ88=gmNoUF2hBNv7?7tNuC~73JFb0AxxJqFr^fKk*jysa@)IEOH?*_q?yxEO5rG_K;ou&l=9OQuhcpGS^o;ADZZzIH_urOz zS1k2i2cN3$ck&B=>Lug9za!a5{l)c8O0iDD!85kp0E%i+UWHL~i1L?m)=O&qOA;CW zg%X*MPe;;F$9mNM-Ayom0KrK0{SQrlS)z?JzDiQJ7<={W0j<2EzOSKg>^V6X z$0S*bQui;$4?6%<^>^e-g^yT^FD;Y7(?b$C44(ae`A`TQ2BXm-bD=`&&;x2oNgjI7 zhD!K=Vy*o-Rhsbq8C9zGPg~pL4_Mse-*t8IQunPei5%96kTj%;xwK(7TI7@$jkK30UU%kH=W%+0##` z%+pbSbaXrz-9t9TFnizzIsO;A8{eQahX-vNthwK9I7g2uFi`sY{(bO=A^k5+72z^(y*k5)5}woGy)aOe03&(bCRfU|_jXgGVg zia862*17nA({bLrJY0QrQ3cI^tU;lC_n4FL-@3TX9&p`awSOuVsvXXm8f)6;oCwiM z9_K9Oo_f8aL4`q`HE1z|77fDYVekeTZ~4c?#I3Gzg}3Rp2i_We4QOLt6<}~u3X=nW z?N}*@1MOEye7q*}&Hzu6_@g~2i3D<>B#Wb|1N_#Gmqek@Z0Aal3ef*HWlbp#0EZg` z=ea#%+`EPJd;Wq9I7N1eVs7?JMC1BYKyNIf?Z?j*q z*7)e>YWj0=6f^c@n5j{HVvQ=`NQr@eIX1wzS6O`ktsVSOUZnt2XQ)A7c&rlMUi8=@ z*BCoonz0A)SV{-lQ)|Ezw06q4l#{2TY>jxI_f*hgbk0>g2fVqjYyDxZ`l%9Wuyg$DzryPA`=L2EF@yI^G+?(tCC6)UUJQm zF~g{&@E68fAPgqAftm5&>$=I$Zv($yZ`rKIjGo!GE7ro9Nm}KkyRPR^HtF(fg*ua= zT5Rm4Wq-260^F#|@tU+31f3&|w9P!*q}w)K_JX=?g>ql$hH5tEp|fj$AZ8G5(x!SJ z9vzSM2T+c}Mn(hJXAb!8Ol2phEhj9l;}v0hpf)qEklgUiX)%kGA03g2zKcXu&Rn8v z-6NAbccx*DyqlTw)|aOUMUu1cEz$su?L*lH{kD)`Ei-VwnClF?Oo9|SnzIb(L%}cM z4W(9@Xi>cy_Tpe;I13Gbh*$6h2V(UY z<}{my{M$O+xNkfa;u>^)9$BN#)m8gxl@bAp9`n4Nqg=cz(>>*pnd zB*nN$bgLZwT=$O9!;;ekAdJ;A1;&#KT*PQOELvSA>;5@#im8fH1l;2CXbxParOp{& zt0I%d$u((q`X`m1E@pAnThYwoRnHj=W{b{ym)ehMH*k1k=@aZz&bQ4|hhxixQ|!!g z)m7h#s2e+Yy35gj3EF8(T8KzTKIC|!UtVT&rCi}da00pQ3J@S8#mFPfNA0_F;Y*={ z@c=?h>eekn1;|(a8{#z(FIK`)j}1vwJ|ge=)KyFg5`}#FSdyv97=7Gl#Pv)trq-xO^&nXmOo+=6Y*u7_$r73 zKWHDq`#^k)+nKhb8P8O^j+KW|-#sHwrClTy-d{jD;jI;XD1EgHfW5k7(;jZ8z4CZ# zK5lqti`!#=>vXN05`RIOE%jCD-fx1XWfodvRO<|AfXl2$NU8#|9smSG%531V7(WudSu7+UuOg|M*9k_v*vShXFBo zLm%kWb&Tea){fV+vM&uk``Sdx{nEtKgwm8G*1y7k4HKZQr^^5$?1ZbJk%I#krMFJb$tH z>;lj%)`zljMeSov6j;?(d6pK{MrrMVp6fw>n$VJahfDaP#(Qt-CLBF;(ac!L=imKW zr7LS>ctK-C%B?=Cyz}i6NUQalS{t`Dq`o`sRziCo=)ljo;t?5FTYK$~#ulI0&n!uZ zD#l$ql0)fQQ?A&UH#~Y!uVS%8WAv@r0&7bIfr7^SJBDlcd|doMPJ!im#K8$B9|W;~ zbIPYr@OS^5K9V+)))IvPzrlp6L_(?k`kAVm`6xa;lAc1`0Gof9IibY+=t~@Nb!h#}tyDM7Ur& zzMojT*DGknT)87m)p5Yp*%D{piPOS=oGRcZ(!fbZ6V16(`Sgg)EF!&uQsl*@bw9 z>H*TuBS+)Eur>ZM4Et%x%R3Ft%94p?5hLoGloS)3B3VOE(HOSJWE&&v+j7b}+t(G2 z7kX*XE1-c;>0|&NH832;qmDg)1GNqX3>OZAWPbM8w8d;HHjtglubRhE$Ie~z<|w>- zG`J1M!QwXP*q`;GBc2@Bhvk0z4LP&z`z*6ISqos>E+6GMbL$X%(u??sJkLe11TMj3k@qHda0=amql=4%BTVbocO}jgTt8i zT5%7~#|Z9mbbksLa7K*a6R9BxDP~!`i)G1zoHbGUC>k{74;N=t;E6X%8;4}p8WUpS zRwAUZ{H-H0Yg#8998RNu@bv%ud^9_Z!k>w}_<8W(b#xR5|2_(OO)vQOr_$}DKO}Rk z11fasE6GvpR%_W60C&VXb$Fid6Ud&N#ToS9fhNcf3@YnDk#+|T{bYNT69ee-CC9wG zWY`Z-jc6jGk9yq7`DYVN{Cap{G4<%-0egj><0=`ki}x$5BM{1eBBh7IjM~KxyzWGV zE)^!IN55HEhC(O~+$G};_35V&Q$aQ?M!qq@u}iDb7*br3wPbARA-$N-v$`%Zm;fsW zK1ktFdZFubw5Oc)kqX|92orBe-XOi=p+o2NY?-Nu6Ma^Ft1}U`v$(}-Vt5>no;?+9 z96y6b=IaU|$fDX~@g=JK;px+-vcTurGQAy-vZwM}`jh)~i28B#@=qFY^K^d6!Fyxh zBN(Mu8IUY<)C#QMqgLQM$r8P)QkwSollUFoUh{SpS3k=MjdJv~A(G@qn_!^1yOb#J^qhHtDjRxtIm>@vO1 zF~WUpZXd{FE1O!!&QaQZODTA+RlHzMz5mq`5 z6l-|o%HQYl=X_khF6Tm7&6Z2@#yrhQZ1ojB3ka^+lK~%i&iO-}S9dG6^plh;eS6VG z{5BJSLfM0_RWUP9RrH}te5wvfCAkup3ye=n(!+O_+fCP zjx57}pLIJEK1{fGHe!{d7Q5Yk?$w6*G~PavCh^H-0;Rq=Z*Js4Qdg)rr9ugZ@0?0) zolrfyw6eU&mY+Tx4QfXsPLi$3p4)F48j5T@21{cz;9FV7Jv7G}Ht1u1M|IVg-GT-H z?k+|l?xwO~uel*jc%e3>?-)cAgedGLGV2Sxh1RN^cj(-MeKFO&&>HDzJdBiA4}t?SG7J5_7A|3ZdOe(}l#}bibjH3r z$Iw@NgHTmJ} zjt>Ogfwav=;owOk#ZB)}Rn!oZfnRmcyEL54Nw#`c$*q-g`sJ(Fw>I6Fz%x!NGieV` z0Jb$go!+VJMgbd4Vx#LN8|E=-JgO*N2+KTN=o&{IFZs^jaVSxX9ew;J6m&AzZ&u!& zUFp}*4#XIZvw=oalg8CF^js8wJced)u`JKhC5dGP{NCmDH|4s{7Ui$SRJ^8p#T*<4 zl-0^Iff>;@qFnXpUmi_t+!nOJM~rDGUN`EVH>Ng?L(p~a99*hGs#X^6gl)-`6jXLC zrH|-~xA1>$wu_y(s=ZJq2G1u=0=C(eNmQIB^&~w>O2DE*-S2!0%1h&ab;Kc>yD@Hx z&hLi!z?Z@{tCe)*5-yrmvOY~E(K)$1SxqjX+so%L7qydtDo!6IN%{W$<%z+&Mvy-5 zK;A`+&7NM);xtD0)|V%Cd*}PrV-6Ju{=9ztI6Wz&x%X;etiiB&rYpg0%g8p3FvhQ} zBX&$;frD8@lfqDz<*j~yjt~B@)f;20&(ZO=k^$Nxc1>uRi-!6 z;SS$jrZr`7%#B4jkFQ~4t^kmWmMIRc8#I9CJhc94L=%A{dktqXS)Q(Do2F|6;mZ4M zr94|;6!VLkv^5cQK3m6h$Rem05*dq@xedeS!Lskzza48H-gAK3FG5d++*|2rl6V|! zCZ(7ml1l6(G&tjb2GDBC$NXJFy2IP5%U|t1GEz~CUH?TsBcT=@4mFKT>??OM)396w zRuoNjCE&xHH}@P9H6&%SyF&~U*#3p+%kOcH7=C zitP!N9n)ZU1UwUa?6wVB9x3Zo*f7qy@{_Zy=nnT)BbGLQQ|vM)Dpor42_>kESB#N4 zVhB~z6jx-1>_K%WWfL+qGG)m9n3?hgBj<0H1%VC0j`N}vWTx$bdE_Ww?cOvAvAUKJ z!AeDr*nxC~)>3G=?pE9H-UBZr9w+S{TiuYU!`4$9%yDSzEFK*X;eOew=l`)sP#zt} zsoSrk{=aX3pSWoKz4~p>BDtHdl8!~Bw_3Q5v6o~qhf?&lV<#wTh6P5-JSab@C;4tu z#vJ)-G9b%Im=i>IXxKQBx_lc`!OkJrxVA~KwT+B_J`fr^4f=X%hdo-af*Y}nB8NzT zX-0;K3-4)2QlU0ZmL%S4)v;-de0F;7OY*L#AU7H=GHK0vR|9*1pyy*&>K6^I(7EkPsBr1DWIXX^We~^L?Z;La4#aWA|8L5lr2hD+1%?rm;z(^HEOHM zA7K-X)3{U=VJOKDF0V7>FWG?ejqS)JB)xfy6E4OiL*L>x>1ds)TcC2z~5e@L{eGzyeu`&IV8=SX%@E9qOp{Y8>p!BaYSu@ z4tGQ$J=yqAcFrfG_MPko#UzSfcNe(6*BP#7*ixq53Yn6TPCm(bZ#po29hDo~?!N;z z9{3kCmoElXIBlhLy(ijchpqK_(IzZm6p8u7+a=xPb*xZ>TZwF7EVhupbur~+8_@>F z?=TRHkGDr+U%TBedS-CUNqthV6^>tj*!ZFmf*`#ka;rBFW$wJ-_y__h#hUu$1yxP} zahC5v=)T0a*%TAquJyM~Kn}6Qe!hb`S|DE>e(yn@eli5Cilo?cdsH3LoQ!~pHpWdn z#Mc4*BrmgSCmAL>qj;UvEfXEn?5f>L zMX!@vsEk**VvBDcODUOjM~$HGW+lF}u{(|S_F{nl-|#H5pA3PLcex*FTa;^3dxtif z*VG)^zZ1I8)@2;AH(yKf*Qf8^So-c}@sLGLF;aj=e0N)gI60kd!Urg_cL&=3%HC)3 zovF&)dcw!d|IBW`OpC=5&H4?0^=E$9Q?HG_BA=J*vt{;jna_WDonNh&$|)OWa?NZZ zDz>_YUqWXM)n;1|z%mnbVvt{D<+=%t0@*;;!{AEsXgE})E^F&PGQQ~1fq)`sU>T>d zA5?d8T~(n!3isrx+M1teLr;^`gi)KqnXiB0251o@G#kGwzH2VgD>R{h2^o>x?BNO@ zrN`@4cf(q19q`^4K%a#+0d75QCyz!OUpKtt#-3%%?mrLUkVsXUA=#5#yUU8Y4B9vI_vGEZ)HQWF~HL6*%51D0iUz zWyY!B#58`7kyGZM+J*psV|VTK`nwG-1{?*IPUXb08a;kYTT-4fUlGOaS*c0a+1#}T z!|iK;N@-oIfP3Wkggs&wMrLF?lP$Jt$Y3CB)CDx=gtaEhe~Pywe1N{s60{(ijBMm* zo>>C|-c>x_z5K`iiXF?}bWIWlsn@TN>*1REv^2~<0AlxKFEA&}H3d!)(%7c|l5S5eN3&w{+9%#YMj_!T}%s{Q9W7 z@Z-nD^ZrOx(FA&bdpbX~)EJHV{Km8C_4b|3iMwx916pX!b0Zu2{g#UResuJ6@o-R@ z-E9ZuzP;@?RoL&}uCIXCrRT7(imuIXn1MJ)1Sv;@r{ssL%+SKo0fZ(6aG2<@usSWI z<}e&qJ){P)LR!r)&7HMHPjvhK$f9V9o_{h+iCh5*26l9Rdhm1c^B|r)`g!_ue|98+ zn{$g5t=iBFOk|S%?P{}Q)d;E(@MJ@*N4E0AF`()~qCuQ+m;PxRBmjy2D3YG4y!j)k z^X1wzs)!7ZWnfsC{Ed0*hmSP6cH}75IDN+^%+xTw+gw|9eXMbk_L{UU_Rx&VYD#)A zk;cc8ZZz?KyoZEWY@lpMMZLfQeQB97DyhJFwE)Vnm5j0n(F%DFF#XSa)0vLg>xLE@ z0(AQco9Z#a2II@@bzQo(d={Pn?>30W4`szPcRPwR)4t7Orbrrs5+imIVFIc}N?f8M z25*l9-4Dsu%kFp+{{5Ya#kw>f@j)FJyDx~$+lh>BAv9B&H_zcWZZWu6bc6S z{02Hg6V{)SR?=JI`JJugwcxXDX)Qj{F|)l!pLiOH`3!VjYRp6L;5s-vxlPbwi3Q~) zcLp@ZE_h-Crehb#u?3@X8*EmAx9tLNV`E2*-7OMZJ7C;-NUUP9-W=UEbQ$)`O=7(+ zfT@LlG=OHWqOq&pf&*hZ{;g*gHUaP7(Prs0cUyb5tXbY(8qbd2TI22gj;h&=y+9o& zxm8Q&MHXJ`;sQ)`<=zP+lL_Es-pR-KxChrtzP+=YW4cO_mqW*_19p4)5@?x)&$vGF z^^lPMC1v>7HX}|;YwL#l@RQC(1i-!jJ;arN{MV51_4&mO>Wu;~TDRRv_)VGRv|3gd zjdJ!Q1moy6;{E$YhVmKbiCgv0D%e$dWkoPF=vF~uqN->nUA#%Mx@A&QM22kwvJE?2 z5SZoh73z64srji_#G%3QvLHXKffpEwz)0=fy}CdPB@}5Wkb145dv0PwqNO^k8rR}~ z!6GN`#bZ+%%tvq)lWjxt)QoyrdzdXI-s_*kWAH9^GSAU~Dw~w@E-zPkCfp!++wCQp zCEC~zYwVy2+w`H~kjgx#Qa-ZZ0qvBgFa*TOG63OdaY?byWqwW!hVmXE#eedg^+v9j z227&3y2i;cluG&|e2u-^pa7zZ>eJzWEXl&W-D*;kiI8%&UOHzVJ;;zhtFMYCEKz>- zJi!;|`qWPC7c+MZM%iX<^ zv#X9w;Do7hDBD|-j2W6}TnLj(V`Avid2Cd6Rwfjx%w`P>r)hU8B*BrwkmjTyzbU&e z0UvT`_5e%gU}JKKgbrrx1Lx>+30FDR+ptzPb}vVvq@lJ{PFt#e-blhtEK1$OJ%m0| zH)z-C+&kVOY`KfJLIF3PrT)Bs-6pL(&HEI)dOcl>H5w1?9oBE*A50?rLtb`WtdY+m zx3ESSHA1MD+6W_`q4Jm)9p)(WAsZgk1XR_->7Mg+m%azSoLf+-60bPj8?oNZWJ zIfJ&;VqfCC=G^v5FYzTU@#=X3H^b@?VVv;%bcGO^pRN?zgCtyR=Qi+vJjg4GAS9Op z_z)Ft^R%<=-QW8_@3Z4i>xN3<3r5nT0MMTUf35wRL4mKg7s4XnmpMvFlv1&Jn#Mq%2xs!a3rSE z#VlRmlr_gJ?PTa3(D;11jW_R>@@}oXugt+2%l1(R z=PmyA$C?jHgXF?Hy3VUA!&DKFfqd**DWr#mm65MZFX+%xNDn)INh;cODC&51eH^76 zQ<+C8e{|*HCDoO;UU_l|je#1ko{I}B@2m{O*X2@U3%YvuPSyV@X$Cj3oB9?~Z)K{byEEKZb|U)6cnzzp`eKP; z=io}&B{Go$AE{A)t$h02GET%vw0yIv0M!u9p8&aSS6!duOxDM}?fpXfaM z+4WYVH#J%G-pCj=#=fSETVrt*a_L@LOY=?B47N&}et)-rX2VC@6fElv&gIR=G)w=n zwJGfbf=?CfeAGH1UEtfkr!Z0(5yStP-A-NalT_TZozx1u9$Y$iiJ)@YTkHNiOS(Kl zPG$K+*#Nb+5YxHO4gzk`(52HV-W#^9V%M}gpkzE7Z)4h6f!*+vX1L55 z#^*X7MtXA2&U5N6-F9At<|a-f)~Y90L~kbsKh^2vD#aL1^G+++Wi-i?xzVb43OQfq ztDjIpa|%o#{-c#921phGn-xYn6w}0Z(o=Yx^xUz3SDS(z=1i(2k2{P@^xzk9Y7A$( z>R*m8O%VKq$fG_%%=G?!j(=~WJ9N9IEQDQ?6Ih=1J`k{I$Y!(brSU4luz}F(NgX|~ zh4_-&U~|c}<+n3xscQ)@n(>YfI&9rpi~yu>zrjE&efWi$u zdH)=LxY+0JKq${m!>S%Tw`)g>ndmiJdv2?NcIggb*28G41=w$2P9MTIz6f~0 zLT)S9cX5ltP2}Q|NzQu5N?)Pf&FQj3x}~PcVS_x(P@X+9oNyOY46tJqNhetWPa= zw%=%|MF*o*=Kz5CvRoLkKm=4t)^}F)lG`rGWoVDG6%mpp%r7a3Q1o*#J&G`*>@o>e z#^CVhLS>={e=PC-JvnWY+s^ZTfe2-;A247=D&_avJog>MOrJUP%N_Ko(E}P2cgO#} zWSR0RspCar)KaA9HISZHNh;}o&g+w_$u(LqC+X?+EMD!RHFKaguepy4U6cV{d@G#t zg!6a_w4JtkJ{R5fM!gFr-<%qq_STu6LT?mzm=GJIt0L1cv;&-)9*JV&EEGVN@HN*a zw9AwEWGM-8SeDZzKxGF|E}>&!5!StAh1+5MyZ}Ni5m8PS$-2Lauah-@fStTt18ER0 zF!J_={=SCqNt#@oTuqm~(RevIgG=t0jU>#^-@ivkc#6bKH?e&=xADDzY&Hu$%^xqOZJ$dz~Gm+M9r>5^AOE&$AWo);L;ki~#IG&g+7 zJ_f*dZ?;*27H0J8V0M6i${RDJV-=9fR1N{%C^zjJ(Rc5w*?XZz9f)(ixhHU;$2Mpo zaW`On219%|{dM)RZ>DZMUs-s5=t1v=sm0>nUF1}NK6C#yRVI)lt|PdH_%<3G{=0J@ z?e;qyr>2utFRC;j-Pe}0O9yG5qhMqiUz*SKj{ntK`(I`Et7%ey3!&XRVZ?bW^W#o_@$oIBgK-y#OreUUMbdk0}^&pS_JyD0X2ii8g{$u~V zMVNY!K)cXyh!SYz+i-#^upd(BYI*PNbw8%W*j+-p*xnr5HkiqJbhJX7bk_#MJ9pHz z!H|{deKbyg#t-C=#?N+y^xF;Q{qT=|UN`wXN%3_Wr-z>A9|%A1q}ybfR99{rt?Ual z$!MuozQqVrd{X2&Yugd+DW1L;<>EJ%+Vdsg_qHPOLu?P^iaN;=J=sV`d#Aa&Z-Y)c z7shK!_x zs*}*LG>JM|*V(rzhHsq)x4}4A+@ie4bjHDYF+BDQ>c|mDG?p|+uZ_#X%Hc^&4!w>DBoA7Js9Qd-zQ? z@jJ&au7#hN`TXPv$M*cmOzB#+riUAE`ymwc%IoV3zDwEDUpGFwyUy$UY?+N84LPcR zuDAy<2oA@m6{mxu5+SY{v*(EoMpT?Aur@UejptqPylIkha`0t(;h#Ri-~DrTFdjUy zT=WAHUoBHWut&ksMI1Z{q8>Id4uV)a?-wo9=yzPzC$IiaS%iWtOkP!WY4Y`N7iV|m zqWrINee6g9x&{J52ltph!SDV;C2&oDyO65=M2-fq2Q2;*>&{?5`-7~Wr>pFzt0l5F z!O0N;`FUV$kd5WKRQ^1uvcIo08F@|Gul@ChuLoo_MM}Yg6>w|s--rAosrWLQmrETy z=CWy4^*D$q0^}#3JRSdOsJv8jtt5fu>6dTbeE)ik|I+J#?ELPsteYae%Er}yK>m!e z+L&v{tF*bq-|!~}%ILCOjDx>?@dmb*i#sZepGJln=xC*wmkU$`CfBs6feahj^1E5U zt-q0(i?m6N+=d*yG-**eYH01}H5ssOC!s5th; z%kRGZ_J=QC{q^-1pG(BKEHA=;z|0sQ%*&$4yL|rLH{avFs}eFAQv+|yrW0nSId4a;fD9(W-gIuVHk<A_0eF}kKi)hqT#1fb-$ z@KH`3L)yS}2%~Apy>>KzAB{6SBh~>9B4j_N=2oeo+*G3oIciKd+sm}mWP}M^@JQq1 z0<}b|Nv4tZ|M|K2xjsCKS$$X}{yfDOKuQDDc13DByN2m;ZEK8!^@7lcZ7F_6>n*3axBtX1>@=yr{Pv>~zQqV7U z*J*B1yx`|mzB1fk!%>NG-Oyb)QacO*Of_ME`kAm?*Xfdfsw$5k%U_`h2HK=vx7&np zyvGKX1oo!xQ^Csg&rJo9tP@V4%i=sI+#?bIVKrIh?t%&l6HHIC_wP?KSO@W&ZVFaHJfm7r^RW!+&g+SBWoJqt)dQ;B@ zftW~2QN-a89dnEC-^(yMa5?33PDCAV=(7xSg9u&^Q0E;iCfaE!8! z^`L;c3xo&_4KM&n!r$~eUMrxPT^gRF84%xp`xn^FS$dUm7+0*xQs{o%8ez0w7yt47 z7p*?B9i8YpsGi6Wt@4Z4g7ZqY_gjl%ll_YMhGq7q;|D0SV`IR)8#3V{$Xaz&zc;_V weeX5I$OHlNQM+q$x!pjJ?R7$d3v362I0O%X!~Ld%_WG0m3o!;Xww){k02&kzcmMzZ diff --git a/dist/fabric.require.js b/dist/fabric.require.js index 2f01fe34..be08f3d7 100644 --- a/dist/fabric.require.js +++ b/dist/fabric.require.js @@ -915,7 +915,7 @@ fabric.Collection = { a10 = sinTh * rx, a11 = cosTh * ry, thHalf = 0.5 * (th1 - th0), - t = (8/3) * Math.sin(thHalf * 0.5) * + t = (8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5) / Math.sin(thHalf), x1 = cx + Math.cos(th0) - t * Math.sin(th0), @@ -1878,8 +1878,8 @@ fabric.Collection = { top = 0; } else if (element === fabric.document) { - left = body.scrollLeft || docElement.scrollLeft || 0; - top = body.scrollTop || docElement.scrollTop || 0; + left += body.scrollLeft || docElement.scrollLeft || 0; + top += body.scrollTop || docElement.scrollTop || 0; } else { left += element.scrollLeft || 0; @@ -2173,7 +2173,7 @@ if (typeof console !== 'undefined') { 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;}, + 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; @@ -8601,8 +8601,8 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab */ _finalizeCurrentTransform: function() { - var transform = this._currentTransform; - var target = transform.target; + var transform = this._currentTransform, + target = transform.target; if (target._scaling) { target._scaling = false; @@ -8912,7 +8912,7 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab * @private */ _fire: function(eventName, target, e) { - this.fire('object:' + eventName, { target: target, e: e}); + this.fire('object:' + eventName, { target: target, e: e }); target.fire(eventName, { e: e }); }, @@ -8969,9 +8969,9 @@ fabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fab return false; } else { - var activeGroup = this.getActiveGroup(); - // only show proper corner when group selection is not active - var corner = target._findTargetCorner + var activeGroup = this.getActiveGroup(), + // only show proper corner when group selection is not active + corner = target._findTargetCorner && (!activeGroup || !activeGroup.contains(target)) && target._findTargetCorner(e, this._offset); @@ -13604,8 +13604,8 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot * @param ctx {CanvasRenderingContext2D} context to render on */ _renderDashedStroke: function(ctx) { - var x = -this.width/2, - y = -this.height/2, + var x = -this.width / 2, + y = -this.height / 2, w = this.width, h = this.height; @@ -15790,8 +15790,9 @@ fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prot if (!this.visible) return; ctx.save(); - var m = this.transformMatrix; - var isInPathGroup = this.group && this.group.type === 'path-group'; + + var m = this.transformMatrix, + isInPathGroup = this.group && this.group.type === 'path-group'; // this._resetWidthHeight(); if (isInPathGroup) { @@ -19901,7 +19902,7 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag * @param {Number} direction: 1 or -1 */ searchWordBoundary: function(selectionStart, direction) { - var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart-1 : selectionStart, + var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart - 1 : selectionStart, _char = this.text.charAt(index), reNonWord = /[ \n\.,;!\?\-]/; @@ -21204,7 +21205,7 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot this.selectionStart = leftWordBoundary; } else { - var isBeginningOfLine = this.text.slice(this.selectionStart-1, this.selectionStart) === '\n'; + var isBeginningOfLine = this.text.slice(this.selectionStart - 1, this.selectionStart) === '\n'; this.removeStyleObject(isBeginningOfLine); this.selectionStart--; diff --git a/src/mixins/canvas_events.mixin.js b/src/mixins/canvas_events.mixin.js index 58e36422..a12fb0a9 100644 --- a/src/mixins/canvas_events.mixin.js +++ b/src/mixins/canvas_events.mixin.js @@ -264,8 +264,8 @@ */ _finalizeCurrentTransform: function() { - var transform = this._currentTransform; - var target = transform.target; + var transform = this._currentTransform, + target = transform.target; if (target._scaling) { target._scaling = false; @@ -575,7 +575,7 @@ * @private */ _fire: function(eventName, target, e) { - this.fire('object:' + eventName, { target: target, e: e}); + this.fire('object:' + eventName, { target: target, e: e }); target.fire(eventName, { e: e }); }, @@ -632,9 +632,9 @@ return false; } else { - var activeGroup = this.getActiveGroup(); - // only show proper corner when group selection is not active - var corner = target._findTargetCorner + var activeGroup = this.getActiveGroup(), + // only show proper corner when group selection is not active + corner = target._findTargetCorner && (!activeGroup || !activeGroup.contains(target)) && target._findTargetCorner(e, this._offset); diff --git a/src/mixins/itext_behavior.mixin.js b/src/mixins/itext_behavior.mixin.js index e4f5ec4f..261593b2 100644 --- a/src/mixins/itext_behavior.mixin.js +++ b/src/mixins/itext_behavior.mixin.js @@ -258,7 +258,7 @@ * @param {Number} direction: 1 or -1 */ searchWordBoundary: function(selectionStart, direction) { - var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart-1 : selectionStart, + var index = this._reSpace.test(this.text.charAt(selectionStart)) ? selectionStart - 1 : selectionStart, _char = this.text.charAt(index), reNonWord = /[ \n\.,;!\?\-]/; diff --git a/src/mixins/itext_key_behavior.mixin.js b/src/mixins/itext_key_behavior.mixin.js index d2b13c4c..210e1d9c 100644 --- a/src/mixins/itext_key_behavior.mixin.js +++ b/src/mixins/itext_key_behavior.mixin.js @@ -600,7 +600,7 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot this.selectionStart = leftWordBoundary; } else { - var isBeginningOfLine = this.text.slice(this.selectionStart-1, this.selectionStart) === '\n'; + var isBeginningOfLine = this.text.slice(this.selectionStart - 1, this.selectionStart) === '\n'; this.removeStyleObject(isBeginningOfLine); this.selectionStart--; diff --git a/src/shapes/image.class.js b/src/shapes/image.class.js index 8750af33..94f5dddf 100644 --- a/src/shapes/image.class.js +++ b/src/shapes/image.class.js @@ -122,8 +122,9 @@ if (!this.visible) return; ctx.save(); - var m = this.transformMatrix; - var isInPathGroup = this.group && this.group.type === 'path-group'; + + var m = this.transformMatrix, + isInPathGroup = this.group && this.group.type === 'path-group'; // this._resetWidthHeight(); if (isInPathGroup) { diff --git a/src/shapes/rect.class.js b/src/shapes/rect.class.js index 6a3aac2b..fdcec06a 100644 --- a/src/shapes/rect.class.js +++ b/src/shapes/rect.class.js @@ -156,8 +156,8 @@ * @param ctx {CanvasRenderingContext2D} context to render on */ _renderDashedStroke: function(ctx) { - var x = -this.width/2, - y = -this.height/2, + var x = -this.width / 2, + y = -this.height / 2, w = this.width, h = this.height; diff --git a/src/util/animate.js b/src/util/animate.js index 61b17319..10369eb4 100644 --- a/src/util/animate.js +++ b/src/util/animate.js @@ -22,7 +22,7 @@ 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;}, + 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; diff --git a/src/util/arc.js b/src/util/arc.js index 80b4a646..00e9f559 100644 --- a/src/util/arc.js +++ b/src/util/arc.js @@ -99,7 +99,7 @@ a10 = sinTh * rx, a11 = cosTh * ry, thHalf = 0.5 * (th1 - th0), - t = (8/3) * Math.sin(thHalf * 0.5) * + t = (8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5) / Math.sin(thHalf), x1 = cx + Math.cos(th0) - t * Math.sin(th0),