From ab7fbe798f711d61b29dde3f1d4ed915388d6786 Mon Sep 17 00:00:00 2001 From: kangax Date: Mon, 28 Oct 2013 08:04:22 +0100 Subject: [PATCH] Build distribution. Version 1.3.9 --- HEADER.js | 2 +- component.json | 2 +- dist/all.js | 10 +++++----- dist/all.min.js | 4 ++-- dist/all.min.js.gz | Bin 57062 -> 57061 bytes dist/all.require.js | 10 +++++----- package.json | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/HEADER.js b/HEADER.js index 85f6a81c..6dbb5852 100644 --- a/HEADER.js +++ b/HEADER.js @@ -1,6 +1,6 @@ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.8" }; +var fabric = fabric || { version: "1.3.9" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } diff --git a/component.json b/component.json index cfb61509..4d2c4db1 100644 --- a/component.json +++ b/component.json @@ -2,7 +2,7 @@ "name": "fabric.js", "repo": "kangax/fabric.js", "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.", - "version": "1.3.8", + "version": "1.3.9", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "dependencies": {}, "development": {}, diff --git a/dist/all.js b/dist/all.js index 1a9a36e3..0ef304ae 100644 --- a/dist/all.js +++ b/dist/all.js @@ -1,7 +1,7 @@ /* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` */ /*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */ -var fabric = fabric || { version: "1.3.8" }; +var fabric = fabric || { version: "1.3.9" }; if (typeof exports !== 'undefined') { exports.fabric = fabric; } @@ -10481,15 +10481,15 @@ fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.Stati this.deactivateAll(); } + this.renderAll(true); + + var data = this.__toDataURL(format, quality, cropping); + // restoring width, height for `renderAll` to draw // background properly (while context is scaled) this.width = origWidth; this.height = origHeight; - this.renderAll(true); - - var data = this.__toDataURL(format, quality, cropping); - ctx.scale(1 / multiplier, 1 / multiplier); this.setWidth(origWidth).setHeight(origHeight); diff --git a/dist/all.min.js b/dist/all.min.js index 4137d24c..6fc918aa 100644 --- a/dist/all.min.js +++ b/dist/all.min.js @@ -1,7 +1,7 @@ -/* build: `node build.js modules=ALL exclude=gestures minifier=uglifyjs` *//*! Fabric.js Copyright 2008-2013, Printio (Juriy Zaytsev, Maxim Chernyak) */var fabric=fabric||{version:"1.3.8"};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";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(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)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(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}function m(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()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(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))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(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]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=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 e(e){var t=Array.prototype.slice.call(arguments,1),n,r,i=t.length;for(r=0;r"),fabric.window=fabric.document.createWindow()),fabric.isTouchSupported="ontouchstart"in fabric.document.documentElement,fabric.isLikelyNode=typeof Buffer!="undefined"&&typeof window=="undefined";var Cufon=function(){function r(e){var t=this.face=e.face;this.glyphs=e.glyphs,this.w=e.w,this.baseSize=parseInt(t["units-per-em"],10),this.family=t["font-family"].toLowerCase(),this.weight=t["font-weight"],this.style=t["font-style"]||"normal",this.viewBox=function(){var e=t.bbox.split(/\s+/),n={minX:parseInt(e[0],10),minY:parseInt(e[1],10),maxX:parseInt(e[2],10),maxY:parseInt(e[3],10)};return n.width=n.maxX-n.minX,n.height=n.maxY-n.minY,n.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")},n}(),this.ascent=-parseInt(t.ascent,10),this.descent=-parseInt(t.descent,10),this.height=-this.ascent+this.descent}function i(){var e={},t={oblique:"italic",italic:"oblique"};this.add=function(t){(e[t.style]||(e[t.style]={}))[t.weight]=t},this.get=function(n,r){var i=e[n]||e[t[n]]||e.normal||e.italic||e.oblique;if(!i)return null;r={normal:400,bold:700}[r]||parseInt(r,10);if(i[r])return i[r];var s={1:1,99:0}[r%100],o=[],u,a;s===undefined&&(s=r>400),r==500&&(r=400);for(var f in i){f=parseInt(f,10);if(!u||fa)a=f;o.push(f)}return ra&&(r=a),o.sort(function(e,t){return(s?e>r&&t>r?et:et:e=i.length+e?r():setTimeout(arguments.callee,10)}),function(t){e?t():n.push(t)}}(),supports:function(e,t){var n=fabric.document.createElement("span").style;return n[e]===undefined?!1:(n[e]=t,n[e]===t)},textAlign:function(e,t,n,r){return t.get("textAlign")=="right"?n>0&&(e=" "+e):nk&&(k=N),A.push(N),N=0;continue}var O=t.glyphs[T[b]]||t.missingGlyph;if(!O)continue;N+=C=Number(O.w||t.w)+h}A.push(N),N=Math.max(k,N);var M=[];for(var b=A.length;b--;)M[b]=N-A[b];if(C===null)return null;d+=l.width-C,m+=l.minX;var _,D;if(f)_=u,D=u.firstChild;else{_=fabric.document.createElement("span"),_.className="cufon cufon-canvas",_.alt=n,D=fabric.document.createElement("canvas"),_.appendChild(D);if(i.printable){var P=fabric.document.createElement("span");P.className="cufon-alt",P.appendChild(fabric.document.createTextNode(n)),_.appendChild(P)}}var H=_.style,B=D.style||{},j=c.convert(l.height-p+v),F=Math.ceil(j),I=F/j;D.width=Math.ceil(c.convert(N+d-m)*I),D.height=F,p+=l.minY,B.top=Math.round(c.convert(p-t.ascent))+"px",B.left=Math.round(c.convert(m))+"px";var q=Math.ceil(c.convert(N*I)),R=q+"px",U=c.convert(t.height),z=(i.lineHeight-1)*c.convert(-t.ascent/5)*(L-1);Cufon.textOptions.width=q,Cufon.textOptions.height=U*L+z,Cufon.textOptions.lines=L,Cufon.textOptions.totalLineHeight=z,e?(H.width=R,H.height=U+"px"):(H.paddingLeft=R,H.paddingBottom=U-1+"px");var W=Cufon.textOptions.context||D.getContext("2d"),X=F/l.height;Cufon.textOptions.fontAscent=t.ascent*X,Cufon.textOptions.boundaries=null;for(var V=Cufon.textOptions.shadowOffsets,b=y.length;b--;)V[b]=[y[b][0]*X,y[b][1]*X];W.save(),W.scale(X,X),W.translate(-m-1/X*D.width/2+(Cufon.fonts[t.family].offsetLeft||0),-p-Cufon.textOptions.height/X/2+(Cufon.fonts[t.family].offsetTop||0)),W.lineWidth=t.face["underline-thickness"],W.save();var J=Cufon.getTextDecoration(i),K=i.fontStyle==="italic";W.save(),Q();if(g)for(var b=0,w=g.length;b.cufon-vml-canvas{text-indent:0}@media screen{cvml\\:shape,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute}.cufon-vml-canvas{position:absolute;text-align:left}.cufon-vml{display:inline-block;position:relative;vertical-align:middle}.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px}a .cufon-vml{cursor:pointer}}@media print{.cufon-vml *{display:none}.cufon-vml .cufon-alt{display:inline}}'),function(e,t,i,s,o,u,a){var f=t===null;f&&(t=o.alt);var l=e.viewBox,c=i.computedFontSize||(i.computedFontSize=new Cufon.CSS.Size(n(u,i.get("fontSize"))+"px",e.baseSize)),h=i.computedLSpacing;h==undefined&&(h=i.get("letterSpacing"),i.computedLSpacing=h=h=="normal"?0:~~c.convertFrom(r(u,h)));var p,d;if(f)p=o,d=o.firstChild;else{p=fabric.document.createElement("span"),p.className="cufon cufon-vml",p.alt=t,d=fabric.document.createElement("span"),d.className="cufon-vml-canvas",p.appendChild(d);if(s.printable){var v=fabric.document.createElement("span");v.className="cufon-alt",v.appendChild(fabric.document.createTextNode(t)),p.appendChild(v)}a||p.appendChild(fabric.document.createElement("cvml:shape"))}var m=p.style,g=d.style,y=c.convert(l.height),b=Math.ceil(y),w=b/y,E=l.minX,S=l.minY;g.height=b,g.top=Math.round(c.convert(S-e.ascent)),g.left=Math.round(c.convert(E)),m.height=c.convert(e.height)+"px";var x=Cufon.getTextDecoration(s),T=i.get("color"),N=Cufon.CSS.textTransform(t,i).split(""),C=0,k=0,L=null,A,O,M=s.textShadow;for(var _=0,D=0,P=N.length;_-1},complexity:function(){return this.getObjects().reduce(function(e,t){return e+=t.complexity?t.complexity():0,e},0)}},function(e){function r(e,t){var n=e.indexOf(t);return n!==-1&&e.splice(n,1),e}function i(e,t){return Math.floor(Math.random()*(t-e+1))+e}function o(e){return e*s}function u(e){return e/s}function a(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)}function f(e,t){return parseFloat(Number(e).toFixed(t))}function l(){return!1}function c(e,t){return e=fabric.util.string.camelize(e.charAt(0).toUpperCase()+e.slice(1)),h(t)[e]}function h(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}function m(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()}function y(e){return e||(e=fabric.document.createElement("canvas")),!e.getContext&&typeof G_vmlCanvasManager!="undefined"&&G_vmlCanvasManager.initElement(e),e}function b(){return fabric.isLikelyNode?new(require("canvas").Image):fabric.document.createElement("img")}function w(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))}}function E(e,t){t.save(),t.beginPath(),e.clipTo(t),t.clip()}function S(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]]}function x(e){return(String(e).match(/function[^{]*\{([\s\S]*)\}/)||{})[1]}function T(e,t,n,r){var i=r[0],s=r[1],o=r[2],u=r[3],a=r[4],f=r[5],l=r[6],c=A(f,l,i,s,u,a,o,t,n);for(var h=0;h1&&(d=Math.sqrt(d),n*=d,r*=d);var v=c/n,m=l/n,g=-l/r,y=c/r,b=v*u+m*a,w=g*u+y*a,E=v*e+m*t,S=g*e+y*t,x=(E-b)*(E-b)+(S-w)*(S-w),T=1/x-.25;T<0&&(T=0);var C=Math.sqrt(T);s===i&&(C=-C);var A=.5*(b+E)-C*(S-w),O=.5*(w+S)+C*(E-b),M=Math.atan2(w-O,b-A),_=Math.atan2(S-O,E-A),D=_-M;D<0&&s===1?D+=2*Math.PI:D>0&&s===0&&(D-=2*Math.PI);var P=Math.ceil(Math.abs(D/(Math.PI*.5+.001))),H=[];for(var B=0;B=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 e(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){var t,n,r={left:0,top:0},i=e&&e.ownerDocument,s={left:0,top:0},o={borderLeftWidth:"left",borderTopWidth:"top",paddingLeft:"left",paddingTop:"top"};if(!i)return{left:0,top:0};for(var u in o)s[o[u]]+=parseInt(f(e,u),10)||0;return t=i.documentElement,typeof e.getBoundingClientRect!="undefined"&&(r=e.getBoundingClientRect()),i!=null&&i===i.window?n=i:n=i.nodeType===9&&(i.defaultView||i.parentWindow),{left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)+s.left,top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0)+s.top}}function f(e,t){e.style||(e.style={});if(fabric.document.defaultView&&fabric.document.defaultView.getComputedStyle)return fabric.document.defaultView.getComputedStyle(e,null)[t];var n=e.style[t];return!n&&e.currentStyle&&(n=e.currentStyle[t]),n}var e=Array.prototype.slice,n=function(t){return e.call(t,0)},r;try{r=n(fabric.document.childNodes)instanceof Array}catch(i){}r||(n=function(e){var t=new Array(e.length),n=e.length;while(n--)t[n]=e[n];return t}),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=n,fabric.util.makeElement=s,fabric.util.addClass=o,fabric.util.wrapElement=u,fabric.util.getElementOffset=a,fabric.util.getElementStyle=f}(),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}(),function(){function e(e){e||(e={});var t=+(new Date),r=e.duration||500,i=t+r,s,o=e.onChange||function(){},u=e.abort||function(){return!1},a=e.easing||function(e,t,n,r){return-n*Math.cos(e/r*(Math.PI/2))+n+t},f="startValue"in e?e.startValue:0,l="endValue"in e?e.endValue:100,c=e.byValue||l-f;e.onStart&&e.onStart(),function h(){s=+(new Date);var l=s>i?r:s-t;if(u()){e.onComplete&&e.onComplete();return}o(a(l,f,c,r));if(s>i){e.onComplete&&e.onComplete();return}n(h)}()}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)},n=function(){return t.apply(fabric.window,arguments)};fabric.util.animate=e,fabric.util.requestAnimFrame=n}(),function(){function e(e,t,n,r){return e-1;e=e.split(/\s+/);var n=[],r,i;if(t){r=0,i=e.length;for(;r/i,"")));if(!s.documentElement)return;t.parseSVGDocument(s.documentElement,function(r,i){w.set(e,{objects:t.util.array.invoke(r,"toObject"),options:i}),n(r,i)},r)}e=e.replace(/^\n\s*/,"").trim(),w.has(e,function(r){r?w.get(e,function(e){var t=S(e);n(t.objects,t.options)}):new t.util.request(e,{method:"get",onComplete:i})})}function S(e){var n=e.objects,i=e.options;return n=n.map(function(e){return t[r(e.type)].fromObject(e)}),{objects:n,options:i}}function x(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)}function T(e){var t="";for(var n=0,r=e.length;n',"",""].join("")),t}function N(e){var t="";return e.backgroundColor&&e.backgroundColor.source&&(t=['',''].join("")),t}function C(e){var t=e.getElementsByTagName("linearGradient"),n=e.getElementsByTagName("radialGradient"),r,i,s={};i=t.length;for(;i--;)r=t[i],s[r.getAttribute("id")]=r;i=n.length;for(;i--;)r=n[i],s[r.getAttribute("id")]=r;return s}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;t.SHARED_ATTRIBUTES=["transform","fill","fill-opacity","fill-rule","opacity","stroke","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width"];var u={"fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight",cx:"left",x:"left",r:"radius","stroke-dasharray":"strokeDashArray","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration",cy:"top",y:"top",transform:"transformMatrix"},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;ce.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"&&(i=["']);for(var s=0;s');return i.push(this.type==="linear"?"":""),i.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;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=fabric.util.removeListener,i=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:"",backgroundImageOpacity:1,backgroundImageStretch:!0,overlayImage:"",overlayImageLeft:0,overlayImageTop:0,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)),this.calcOffset()},calcOffset:function(){return this._offset=t(this.lowerCanvasEl),this},setOverlayImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.overlayImage=e,n&&"overlayImageLeft"in n&&(this.overlayImageLeft=n.overlayImageLeft),n&&"overlayImageTop"in n&&(this.overlayImageTop=n.overlayImageTop),t&&t()},this),this},setBackgroundImage:function(e,t,n){return fabric.util.loadImage(e,function(e){this.backgroundImage=e,n&&"backgroundImageOpacity"in n&&(this.backgroundImageOpacity=n.backgroundImageOpacity),n&&"backgroundImageStretch"in n&&(this.backgroundImageStretch=n.backgroundImageStretch),t&&t()},this),this},setBackgroundColor:function(e,t){if(e.source){var n=this;fabric.util.loadImage(e.source,function(r){n.backgroundColor=new fabric.Pattern({source:r,repeat:e.repeat}),t&&t()})}else this.backgroundColor=e,t&&t();return this},_createCanvasElement:function(){var e=fabric.document.createElement("canvas");e.style||(e.style={});if(!e)throw i;return this._initCanvasElement(e),e},_initCanvasElement:function(e){fabric.util.createCanvasElement(e);if(typeof e.getContext=="undefined")throw i},_initOptions:function(e){for(var t in e)this[t]=e[t];this.width=parseInt(this.lowerCanvasEl.width,10)||0,this.height=parseInt(this.lowerCanvasEl.height,10)||0;if(!this.lowerCanvasEl.style)return;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.fire("object:removed",{target:e}),e.fire("removed")},getObjects:function(){return this._objects},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.overlayImage&&t.drawImage(this.overlayImage,this.overlayImageLeft,this.overlayImageTop),this.controlsAboveOverlay&&this.interactive&&this.drawControls(t),this.fire("after:render"),this},_renderObjects:function(e,t){for(var n=0,r=this._objects.length;n','\n')},_setSVGHeader:function(e,t){e.push("',"Created with Fabric.js ",fabric.version,"","",fabric.createSVGFontFacesMarkup(this.getObjects()),fabric.createSVGRefElementsMarkup(this),"")},_setSVGBackgroundColor:function(e){this.backgroundColor&&this.backgroundColor.source&&e.push('")},_setSVGBackgroundImage:function(e){this.backgroundImage&&e.push('')},_setSVGOverlayImage:function(e){this.overlayImage&&e.push('')},_setSVGObjects:function(e,t){var n=this.getActiveGroup();n&&this.discardActiveGroup();for(var r=0,i=this.getObjects(),s=i.length;r")},remove:function(e){return this.getActiveObject()===e&&(this.fire("before:selection:cleared",{target:e}),this.discardActiveObject(),this.fire("selection:cleared")),fabric.Collection.remove.call(this,e)},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;if(t){i=r;for(var s=r-1;s>=0;--s){var o=e.intersectsWithObject(this._objects[s])||e.isContainedWithinObject(this._objects[s])||this._objects[s].isContainedWithinObject(e);if(o){i=s;break}}}else i=r-1;n(this._objects,e),this._objects.splice(i,0,e),this.renderAll&&this.renderAll()}return this},bringForward:function(e,t){var r=this._objects.indexOf(e);if(r!==this._objects.length-1){var i;if(t){i=r;for(var s=r+1;s"}}),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;r0&&(t>this.targetFindTolerance?t-=this.targetFindTolerance:t=0,n>this.targetFindTolerance?n-=this.targetFindTolerance:n=0);var o=!0,u=r.getImageData(t,n,this.targetFindTolerance*2||1,this.targetFindTolerance*2||1);for(var a=3,f=u.data.length;an.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,s=i(n),o=i(r);e.fillStyle=this.selectionColor,e.fillRect(t.ex-(n>0?0:-n),t.ey-(r>0?0:-r),s,o),e.lineWidth=this.selectionLineWidth,e.strokeStyle=this.selectionBorderColor;if(this.selectionDashArray.length>1){var a=t.ex+u-(n>0?0:s),f=t.ey+u-(r>0?0:o);e.beginPath(),fabric.util.drawDashedLine(e,a,f,a+s,f,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f+o-1,a+s,f+o-1,this.selectionDashArray),fabric.util.drawDashedLine(e,a,f,a,f+o,this.selectionDashArray),fabric.util.drawDashedLine(e,a+s-1,f,a+s-1,f+o,this.selectionDashArray),e.closePath(),e.stroke()}else e.strokeRect(t.ex+u-(n>0?0:s),t.ey+u-(r>0?0:o),s,o)},_findSelectedObjects:function(e){if(!this.selection)return;var t=this._collectObjects();t.length===1?this.setActiveObject(t[0],e):t.length>1&&(t=new fabric.Group(t.reverse()),this.setActiveGroup(t),t.saveCoords(),this.fire("selection:created",{target:t}),this.renderAll())},_collectObjects:function(){var e=[],t,n=this._groupSelector.ex,r=this._groupSelector.ey,i=n+this._groupSelector.left,u=r+this._groupSelector.top,a=new fabric.Point(s(n,i),s(r,u)),f=new fabric.Point(o(n,i),o(r,u)),l=n===i&&r===u;for(var c=this._objects.length;c--;){t=this._objects[c];if(!t||!t.selectable||!t.visible)continue;if(t.intersectsWithRect(a,f)||t.isContainedWithinRect(a,f)||t.containsPoint(a)||t.containsPoint(f)){t.set("active",!0),e.push(t);if(l)break}}return e},findTarget:function(e,t){if(this.skipTargetFind)return;var n,r=this.getPointer(e);if(this.controlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay&&this.lastRenderedObjectWithControlsAboveOverlay.visible&&this.containsPoint(e,this.lastRenderedObjectWithControlsAboveOverlay)&&this.lastRenderedObjectWithControlsAboveOverlay._findTargetCorner(e,this._offset))return n=this.lastRenderedObjectWithControlsAboveOverlay,n;var i=this.getActiveGroup();if(i&&!t&&this.containsPoint(e,i))return n=i,n;var s=[];for(var o=this._objects.length;o--;)if(this._objects[o]&&this._objects[o].visible&&this._objects[o].evented&&this.containsPoint(e,this._objects[o])){if(!this.perPixelTargetFind&&!this._objects[o].perPixelTargetFind){n=this._objects[o],this.relatedTarget=n;break}s[s.length]=this._objects[o]}for(var u=0,a=s.length;u"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return 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){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"),i.add(this);var o=i.toDataURL(e);return this.set(s).setCoords(),i.dispose(),i=null,o},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.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),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;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*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;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*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,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},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,{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;fabric.util.object.extend(fabric.Object.prototype,{_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(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.get("lockRotation")&&this.hasControls){var a=(this.flipY?u+r*this.scaleY+t*2:-u-r*this.scaleY-t*2)/2;e +{target:e}),this.deactivateAll(),e&&this.fire("selection:cleared"),this},drawControls:function(e){var t=this.getActiveGroup();if(t)e.save(),fabric.Group.prototype.transform.call(t,e),t.drawBorders(e).drawControls(e),e.restore();else for(var n=0,r=this._objects.length;n"},get:function(e){return this[e]},set:function(e,t){if(typeof e=="object")for(var n in e)this._set(n,e[n]);else typeof t=="function"&&e!=="clipTo"?this._set(e,t(this.get(e))):this._set(e,t);return 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){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"),i.add(this);var o=i.toDataURL(e);return this.set(s).setCoords(),i.dispose(),i=null,o},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.centerH().centerV()},remove:function(){return this.canvas.remove(this)},sendToBack:function(){return this.group?t.StaticCanvas.prototype.sendToBack.call(this.group,this):this.canvas.sendToBack(this),this},bringToFront:function(){return this.group?t.StaticCanvas.prototype.bringToFront.call(this.group,this):this.canvas.bringToFront(this),this},sendBackwards:function(e){return this.group?t.StaticCanvas.prototype.sendBackwards.call(this.group,this,e):this.canvas.sendBackwards(this,e),this},bringForward:function(e){return this.group?t.StaticCanvas.prototype.bringForward.call(this.group,this,e):this.canvas.bringForward(this,e),this},moveTo:function(e){return this.group?t.StaticCanvas.prototype.moveTo.call(this.group,this,e):this.canvas.moveTo(this,e),this}}),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;return n==="left"?i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y-(this.getHeight()+this.strokeWidth*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;return n==="left"?i=t.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"&&(i=t.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2),r==="top"?s=t.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"&&(s=t.y+(this.getHeight()+this.strokeWidth*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,o;return n!==undefined&&r!==undefined?(n==="left"?s=i.x-(this.getWidth()+this.strokeWidth*this.scaleX)/2:n==="right"?s=i.x+(this.getWidth()+this.strokeWidth*this.scaleX)/2:s=i.x,r==="top"?o=i.y-(this.getHeight()+this.strokeWidth*this.scaleY)/2:r==="bottom"?o=i.y+(this.getHeight()+this.strokeWidth*this.scaleY)/2:o=i.y):(s=this.left,o=this.top),fabric.util.rotatePoint(new fabric.Point(t.x,t.y),i,-e(this.angle)).subtractEquals(new fabric.Point(s,o))},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,{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;fabric.util.object.extend(fabric.Object.prototype,{_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(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.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,u,a=t/this.scaleX,f=t/this.scaleY,l=this.padding/this.scaleX,c=this.padding/this.scaleY,h=n/this.scaleY,p=n/this.scaleX,d=(n-t)/this.scaleX,v=(n-t)/this.scaleY,m=this.height,g=this.width,y=this.transparentCorners?"strokeRect":"fillRect",b=this.transparentCorners,w=typeof G_vmlCanvasManager!="undefined";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,o=i-p-r-l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g-p+r+l,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),this.get("lockUniScaling")||(o=i+g/2-p,u=s-h-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g/2-p,u=s+m+v+r+c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i+g+d+r+l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f),o=i-p-r-l,u=s+m/2-h,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),this.hasRotatingPoint&&(o=i+g/2-p,u=this.flipY?s+m+this.rotatingPointOffset/this.scaleY-f/2+r+c:s-this.rotatingPointOffset/this.scaleY-f/2-r-c,w||b||e.clearRect(o,u,a,f),e[y](o,u,a,f)),e.restore(),this}})}(),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",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._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){var t=this.rx||0,n=this.ry||0,r=-this.width/2,i=-this.height/2,s=this.width,o=this.height,u=this.group&&this.group.type!=="group";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);var a=t!==0||n!==0;e.moveTo(r+t,i),e.lineTo(r+s-t,i),a&&e.quadraticCurveTo(r+s,i,r+s,i+n,r+s,i+n),e.lineTo(r+s,i+o-n),a&&e.quadraticCurveTo(r+s,i+o,r+s-t,i+o,r+s-t,i+o),e.lineTo(r+t,i+o),a&&e.quadraticCurveTo(r,i+o,r,i+o-n,r,i+o-n),e.lineTo(r,i+n),a&&e.quadraticCurveTo(r,i,r+t,i,r+t,i),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",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=s(this.callSuper("toObject",e),{path:this.path,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=[],n=[],r,i,s=/(-?\.\d+)|(-?\d+(\.\d+)?)/g,o,u;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(){var e=this.left,t=this.top;this.forEachObject(function(n){var r=n.get("left"),i=n.get("top");n.set("originalLeft",r),n.set("originalTop",i),n.set("left",r-e),n.set("top",i-t),n.setCoords(),n.__origHasControls=n.hasControls,n.hasControls=!1},this)},toString:function(){return"#"},getObjects:function(){return this._objects},addWithUpdate:function(e){return this._restoreObjectsState(),this._objects.push(e),e.group=this,this.forEachObject(function(e){e.set("active",!0),e.group=this},this),this._calcBounds(),this._updateObjectsCoords(),this},removeWithUpdate:function(e){return this._moveFlippedObject(e),this._restoreObjectsState(),this.forEachObject(function(e){e.set("active",!0),e.group=this},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);var r=Math.max(this.scaleX,this.scaleY);this.clipTo&&t.util.clipContext(this,e);for(var i=0,s=this._objects.length;i'];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)},_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)})})},fabric.Image.fromURL=function(e,t,n){fabric.util.loadImage(e,function(e){t(new fabric.Image(e,n))})},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;s=0&&N=0&&C-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!=="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(/\r?\n/);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),e.save(),this._setShadow(e),this._renderTextFill(e,n),this._renderTextStroke(e,n),this._removeShadow(e),e.restore(),this.textAlign!=="left"&&this.textAlign!=="justify"&&e.restore(),this._renderTextDecoration(e,n),this.clipTo&&e.restore(),this._setBoundaries(e,n),this._totalLineHeight=0},_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;nn&&(n=s)}return n},_renderChars:function(e,t,n,r,i){t[e](n,r,i)},_renderTextLine:function(e,t,n,r,i,s){i-=this.fontSize/4;if(this.textAlign!=="justify"){this._renderChars(e,t,n,r,i,s);return}var o=t.measureText(n).width,u=this.width;if(u>o){var a=n.split(/\s+/),f=t.measureText(n.replace(/\s+/g,"")).width,l=u-f,c=a.length-1,h=l/c,p=0;for(var d=0,v=a.length;d-1&&i(this.fontSize*this.lineHeight),this.textDecoration.indexOf("line-through")>-1&&i(this.fontSize*this.lineHeight-this.fontSize/2),this.textDecoration.indexOf("overline")>-1&&i(this.fontSize*this.lineHeight-this.fontSize)},_getFontDeclaration:function(){return[t.isLikelyNode?this.fontWeight:this.fontStyle,t.isLikelyNode?this.fontStyle:this.fontWeight,this.fontSize+"px",t.isLikelyNode?'"'+this.fontFamily+'"':this.fontFamily].join(" ")},render:function(e,t){if(!this.visible)return;e.save(),this._render(e),!t&&this.active&&(this.drawBorders(e),this.drawControls(e)),e.restore()},toObject:function(e){var t=n(this.callSuper("toObject",e),{text:this.text,fontSize:this.fontSize,fontWeight:this.fontWeight,fontFamily:this.fontFamily,fontStyle:this.fontStyle,lineHeight:this.lineHeight,textDecoration:this.textDecoration,textAlign:this.textAlign,path:this.path,textBackgroundColor:this.textBackgroundColor,useNative:this.useNative});return this.includeDefaultValues||this._removeDefaultValues(t),t},toSVG:function(e){var t=[],n=this.text.split(/\r?\n/),r=this._getSVGLeftTopOffsets(n),i=this._getSVGTextAndBg(r.lineTop,r.textLeft,n),s=this._getSVGShadows(r.lineTop,n);return r.textTop+=this._fontAscent?this._fontAscent/5*this.lineHeight:0,this._setSVGTextAndBg(t,i,s,r),e?e(t.join("")):t.join("")},_getSVGLeftTopOffsets:function(e){var t=this.useNative?this.fontSize*this.lineHeight:-this._fontAscent-this._fontAscent/5*this.lineHeight,n=-(this.width/2),r=this.useNative?this.fontSize-1:this.height/2-e.length*this.fontSize-this._totalLineHeight;return{textLeft:n,textTop:r,lineTop:t}},_setSVGTextAndBg:function(e,t,n,r){e.push('',t.textBgRects.join(""),"',n.join(""),t.textSpans.join(""),"","")},_getSVGShadows:function(e,n){var r=[],s,o,u=1;if(!this.shadow||!this._boundaries)return r;for(s=0,o=n.length;s",t.util.string.escapeXml(n[s]),""),u=1}else u++;return r},_getSVGTextAndBg:function(e,t,n){var r=[],i=[],s=1;this._setSVGBg(i);for(var o=0,u=n.length;o",t.util.string.escapeXml(e),"")},_setSVGTextLineBg:function(e,t,n,r){e.push("')},_setSVGBg:function(e){this.backgroundColor&&this._boundaries&&e.push("')},_getFillAttributes:function(e){var n=e&&typeof e=="string"?new t.Color(e):"";return!n||!n.getSource()||n.getAlpha()===1?'fill="'+e+'"':'opacity="'+n.getAlpha()+'" fill="'+n.setAlpha(1).toRgb()+'"'},_set:function(e,t){e==="fontFamily"&&this.path&&(this.path=this.path.replace(/(.*?)([^\/]*)(\.font\.js)/,"$1"+t+"$3")),this.callSuper("_set",e,t),e in this._dimensionAffectingProps&&(this._initDimensions(),this.setCoords())},complexity:function(){return 1}}),t.Text.ATTRIBUTE_NAMES=t.SHARED_ATTRIBUTES.concat("x y font-family font-style font-weight font-size text-decoration".split(" ")),t.Text.fromElement=function(e,n){if(!e)return null;var r=t.parseAttributes(e,t.Text.ATTRIBUTE_NAMES);n=t.util.object.extend(n?t.util.object.clone(n):{},r);var i=new t.Text(e.textContent,n);return i.set({left:i.getLeft()+i.getWidth()/2,top:i.getTop()-i.getHeight()/2}),i},t.Text.fromObject=function(e){return new t.Text(e.text,r(e))},t.util.createAccessors(t.Text)}(typeof exports!="undefined"?exports:this),fabric.util.object.extend(fabric.Text.prototype,{_renderViaCufon:function(e){var t=Cufon.textOptions||(Cufon.textOptions={});t.left=this.left,t.top=this.top,t.context=e,t.color=this.fill;var n=this._initDummyElementForCufon();this.transform(e),Cufon.replaceElement(n,{engine:"canvas",separate:"none",fontFamily:this.fontFamily,fontWeight:this.fontWeight,textDecoration:this.textDecoration,textShadow:this.shadow&&this.shadow.toString(),textAlign:this.textAlign,fontStyle:this.fontStyle,lineHeight:this.lineHeight,stroke:this.stroke,strokeWidth:this.strokeWidth,backgroundColor:this.backgroundColor,textBackgroundColor:this.textBackgroundColor}),this.width=t.width,this.height=t.height,this._totalLineHeight=t.totalLineHeight,this._fontAscent=t.fontAscent,this._boundaries=t.boundaries,n=null,this.setCoords()},_initDummyElementForCufon:function(){var e=fabric.document.createElement("pre"),t=fabric.document.createElement("div");return t.appendChild(e),typeof G_vmlCanvasManager=="undefined"?e.innerHTML=this.text:e.innerText=this.text.replace(/\r?\n/gi,"\r"),e.style.fontSize=this.fontSize+"px",e.style.letterSpacing="normal",e}}),function(){var e=fabric.util.object.clone;fabric.ITextBehavior={initBehavior:function(){this.initKeyHandlers(),this.initCursorSelectionHandlers(),this.initDblClickSimulation(),this.initHiddenTextarea()},initKeyHandlers:function(){fabric.util.addListener(document,"keydown",this.onKeyDown.bind(this)),fabric.util.addListener(document,"keypress",this.onKeyPress.bind(this))},initHiddenTextarea:function(){if(!/(iPad|iPhone|iPod)/g.test(navigator.userAgent))return;this.hiddenTextarea=fabric.document.createElement("textarea"),this.hiddenTextarea.setAttribute("autocapitalize","off"),this.hiddenTextarea.style.cssText="position: absolute; top: 0; left: -9999px",fabric.document.body.appendChild(this.hiddenTextarea)},initDblClickSimulation:function(){var e=+(new Date),t;this.on("mousedown",function(n){t=+(new Date);if(t-e<500){this.fire("dblclick",n);var r=n.e;r.preventDefault&&r.preventDefault(),r.stopPropagation&&r.stopPropagation()}e=t})},initCursorSelectionHandlers:function(){this.initSelectedHandler(),this.initMousedownHandler(),this.initMousemoveHandler(),this.initMouseupHandler(),this.on("dblclick",function(e){this.selectWord(this.getSelectionStartFromPointer(e.e))})},initMousedownHandler:function(){this.on("mousedown",function(e){var t=this.canvas.getPointer(e.e);this.__mousedownX=t.x,this.__mousedownY=t.y,this.__isMousedown=!0,this.hiddenTextarea&&this.canvas&&this.canvas.wrapperEl.appendChild(this.hiddenTextarea),this.isEditing&&this.setCursorByClick(e.e)})},initMousemoveHandler:function(){this.on("mousemove",function(){this.__isMousedown&&this.isEditing&&console.log("mousemove: need to select text")})},initMouseupHandler:function(){this.on("mouseup",function(e){this.__isMousedown=!1;var t=this.canvas.getPointer(e.e),n=this.__mousedownX!==t.x||this.__mousedownY!==t.y;if(n)return;this.selected&&this.enterEditing()})},initSelectedHandler:function(){this.on("selected",function(){var e=this;setTimeout(function(){e.selected=!0},100),this._hasClearSelectionListener||(this.canvas.on("selection:cleared",function(t){if(t.e&&e.canvas.findTarget(t.e))return;e.exitEditing()}),this._hasClearSelectionListener=!0)})},_tick:function(){var e=this;if(this._abortCursorAnimation)return;this.animate("_currentCursorOpacity",1,{duration:this.cursorDuration,onComplete:function(){e._onTickComplete()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},_onTickComplete:function(){if(this._abortCursorAnimation)return;var e=this;this._cursorTimeout1&&clearTimeout(this._cursorTimeout1),this._cursorTimeout1=setTimeout(function(){e.animate("_currentCursorOpacity",0,{duration:this.cursorDuration/2,onComplete:function(){e._tick()},onChange:function(){e.canvas&&e.canvas.renderAll()},abort:function(){return e._abortCursorAnimation}})},100)},initDelayedCursor:function(){var e=this;this._cursorTimeout2&&clearTimeout(this._cursorTimeout2),this._cursorTimeout2=setTimeout(function(){e._abortCursorAnimation=!1,e._tick()},this.cursorDelay)},abortCursorAnimation:function(){this._abortCursorAnimation=!0,clearTimeout(this._cursorTimeout1),clearTimeout(this._cursorTimeout2),this._currentCursorOpacity=0,this.canvas.renderAll();var e=this;setTimeout(function(){e._abortCursorAnimation=!1},10)},onKeyDown:function(e){if(!this.isEditing||e.ctrlKey)return;if(e.keyCode===39)this.moveCursorRight(e);else if(e.keyCode===37)this.moveCursorLeft(e);else if(e.keyCode===38)this.moveCursorUp(e);else if(e.keyCode===40)this.moveCursorDown(e);else if(e.keyCode===8)this.removeChars(e);else if(e.keyCode===46)this.moveCursorRight(e),this.removeChars(e);else{if(e.keyCode!==13)return;this.insertNewline()}e.preventDefault(),e.stopPropagation(),this.canvas&&this.canvas.renderAll()},onKeyPress:function(e){if(!this.isEditing||e.metaKey||e.ctrlKey||e.keyCode===8||e.keyCode===13||e.keyCode===37||e.keyCode===38||e.keyCode===39||e.keyCode===40)return;this.insertChar(String.fromCharCode(e.which)),e.preventDefault(),e.stopPropagation()},getSelectionStartOffset:function(){var e=this.text.slice(0,this.selectionStart),t=this.text.slice(this.selectionStart),n=e.slice(e.lastIndexOf("\n")+1),r=t.match(/(.*)\n?/)[1],i=(t.match(/.*\n(.*)\n?/)||{})[1]||"";return n.length>i.length?(i+r).length+1:(n+r).length+1},moveCursorDown:function(e){this.abortCursorAnimation(),this._currentCursorOpacity=1;var t=this.getSelectionStartOffset();e.metaKey&&(t=this.text.length-this.selectionStart),e.shiftKey?this.moveCursorDownWithShift(t):this.moveCursorDownWithoutShift(t),this.initDelayedCursor()},moveCursorDownWithoutShift:function(e){this._selectionDirection="right",this.selectionStart+=e,this.selectionStart>this.text.length&&(this.selectionStart=this.text.length),this.selectionEnd=this.selectionStart},moveCursorDownWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?(this.selectionStart=this.selectionEnd,this._selectionDirection="right"):(this._selectionDirection="right",this.selectionEnd+=e,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorUp:function(e){var t=this.text.slice(0,this.selectionStart);this.abortCursorAnimation(),this._currentCursorOpacity=1;var n=t.slice(t.lastIndexOf("\n")+1),r=(t.match(/\n?(.*)\n.*$/)||{})[1]||"",i;n.length>r.length?i=n.length+1:i=r.length+1,e.metaKey&&(i=this.selectionStart),e.shiftKey?this.moveCursorUpWithShift(i):this.moveCursorUpWithoutShift(i),this.initDelayedCursor()},moveCursorUpWithShift:function(e){this.selectionStart===this.selectionEnd?this.selectionStart-=e:this._selectionDirection==="right"?this.selectionEnd=this.selectionStart:this.selectionStart-=e,this.selectionStart<0&&(this.selectionStart=0),this._selectionDirection="left"},moveCursorUpWithoutShift:function(e){this.selectionStart===this.selectionEnd&&(this.selectionStart-=e),this.selectionStart<0&&(this.selectionStart=0),this.selectionEnd=this.selectionStart,this._selectionDirection="left"},moveCursorLeft:function(e){if(this.selectionStart===0&&this.selectionEnd===0)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorLeftWithShift(e):this.moveCursorLeftWithoutShift(e),this.initDelayedCursor()},findWordBoundaryLeft:function(e){var t=0,n=e-1;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n--;while(/\S/.test(this.text.charAt(n))&&n>-1)t++,n--;return e-t},findWordBoundaryRight:function(e){var t=0,n=e;if(this._reSpace.test(this.text.charAt(n)))while(this._reSpace.test(this.text.charAt(n)))t++,n++;while(/\S/.test(this.text.charAt(n))&&n-1)t++,n--;return e-t},findLineBoundaryRight:function(e){var t=0,n=e;while(!/\n/.test(this.text.charAt(n))&&n=this.text.length&&this.selectionEnd>=this.text.length)return;this.abortCursorAnimation(),this._currentCursorOpacity=1,e.shiftKey?this.moveCursorRightWithShift(e):this.moveCursorRightWithoutShift(e),this.initDelayedCursor()},moveCursorRightWithShift:function(e){this._selectionDirection==="left"&&this.selectionStart!==this.selectionEnd?this._moveRight(e,"selectionStart"):(this._selectionDirection="right",this._moveRight(e,"selectionEnd"),this.text.charAt(this.selectionEnd-1)==="\n"&&this.selectionEnd++,this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length))},moveCursorRightWithoutShift:function(e){this._selectionDirection="right",this.selectionStart===this.selectionEnd?(this._moveRight(e,"selectionStart"),this.selectionEnd=this.selectionStart):(this.selectionEnd+=this.getNumNewLinesInSelectedText(),this.selectionEnd>this.text.length&&(this.selectionEnd=this.text.length),this.selectionStart=this.selectionEnd)},getNumNewLinesInSelectedText:function(){var e=this.text.slice(this.selectionStart,this.selectionEnd),t=0;for(var n=0,r=e.split(""),i=r.length;n0&&nr&&o>n){var g=n-s,y=o-n;return y>g?f=a+l:f=a+l+1,f>this.text.length&&(f=this.text.length),f}a++}}if(typeof f=="undefined")return this.text.length},enterEditing:function(){if(this.isEditing||!this.editable)return;return this.isEditing=!0,this.hiddenTextarea&&(this.hiddenTextarea.value=this.text,this.hiddenTextarea.selectionStart=this.selectionStart,this.hiddenTextarea.focus()),this._saveProps(),this.hoverCursor="text",this.canvas.defaultCursor="text",this.canvas.moveCursor="text",this.hasControls=!1,this.borderColor=this.editingBorderColor,this.selectable=!1,this.lockMovementX=!0,this.lockMovementY=!0,this._tick(),this.canvas.renderAll(),this},_saveProps:function(){this._savedProps={hasControls:this.hasControls,borderColor:this.borderColor,lockMovementX:this.lockMovementX,lockMovementY:this.lockMovementY,hoverCursor:this.hoverCursor,defaultCursor:this.canvas.defaultCursor,moveCursor:this.canvas.moveCursor}},_restoreProps:function(){if(!this._savedProps)return;this.hoverCursor=this._savedProps.overCursor,this.canvas.defaultCursor=this._savedProps.defaultCursor,this.canvas.moveCursor=this._savedProps.moveCursor,this.hasControls=this._savedProps.hasControls,this.borderColor=this._savedProps.borderColor,this.lockMovementX=this._savedProps.lockMovementX,this.lockMovementY=this._savedProps.lockMovementY},exitEditing:function(){return this.selected=!1,this.isEditing=!1,this.selectable=!0,this.hiddenTextarea&&this.hiddenTextarea.blur(),this.abortCursorAnimation(),this._restoreProps(),this._currentCursorOpacity=0,this},removeChars:function(e){if(this.selectionStart===this.selectionEnd){if(this.selectionStart!==0)if(e.metaKey){var t=this.findLineBoundaryLeft(this.selectionStart);this._removeCharsFromTo(t,this.selectionStart),this.selectionStart=t}else if(e.altKey){var n=this.findWordBoundaryLeft(this.selectionStart);this._removeCharsFromTo(n,this.selectionStart),this.selectionStart=n}else{var r=this.text.slice(this.selectionStart-1,this.selectionStart)==="\n";this.removeStyleObject(r),this.selectionStart--,this.text=this.text.slice(0,this.selectionStart)+this.text.slice(this.selectionStart+1)}}else this._removeCharsFromTo(this.selectionStart,this.selectionEnd);this.selectionEnd=this.selectionStart;var i=this.text.split(this._reNewline);for(var s in this.styles)i[s]||delete this.styles[s];this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},_removeCharsFromTo:function(e,t){var n=t;while(n!==e)n--,this.removeStyleObject(!1,n);this.text=this.text.slice(0,e)+this.text.slice(t)},insertChar:function(e){var t=this.text.slice(this.selectionStart,this.selectionStart+1)==="\n";this.text=this.text.slice(0,this.selectionStart)+e+this.text.slice(this.selectionEnd),this.selectionStart===this.selectionEnd?this.insertStyleObject(e,t):this.selectionEnd-this.selectionStart>1,this.selectionStart++,this.selectionEnd=this.selectionStart,this.canvas&&this.canvas.renderAll().renderAll(),this.setCoords(),this.fire("text:changed")},insertNewlineStyleObject:function(t,n,r){this.shiftLineStyles(t,1),this.styles[t+1]||(this.styles[t+1]={});var i=this.styles[t][n-1],s={};if(r)s[0]=e(i),this.styles[t+1]=s;else{for(var o in this.styles[t])parseInt(o,10)>=n&&(s[parseInt(o,10)-n]=this.styles[t][o],delete this.styles[t][o]);this.styles[t+1]=s}},insertCharStyleObject:function(t,n){var r=this.styles[t],i=e(r);n===0&&(n=1);for(var s in i){var o=parseInt(s,10);o>=n&&(r[o+1]=i[o])}this.styles[t][n]=e(r[n-1])},insertStyleObject:function(e,t){if(this.isEmptyStyles())return;var n=this.get2DCursorLocation(),r=n.lineIndex,i=n.charIndex;this.styles[r]||(this.styles[r]={}),e==="\n"?this.insertNewlineStyleObject(r,i,t):this.insertCharStyleObject(r,i)},shiftLineStyles:function(t,n){var r=e(this.styles);for(var i in this.styles){var s=parseInt(i,10);s>t&&(this.styles[s+n]=r[s])}},removeStyleObject:function(t,n){var r=this.get2DCursorLocation(n),i=r.lineIndex,s=r.charIndex;if(t){var o=this.text.split(this._reNewline),u=o[i-1],a=u.length;this.styles[i-1]||(this.styles[i-1]={});for(s in this.styles[i])this.styles[i-1][parseInt(s,10)+a]=this.styles[i][s];this.shiftLineStyles(i,-1)}else{var f=this.styles[i];if(f){var l=this.selectionStart===this.selectionEnd?-1:0;delete f[s+l]}var c=e(f);for(var h in c){var p=parseInt(h,10);p>=s&&p!==0&&(f[p-1]=c[p],delete f[p])}}},insertNewline:function(){this.insertChar("\n")}}}(),function(){var e=fabric.util.object.clone;fabric.IText=fabric.util.createClass(fabric.Text,fabric.Observable,fabric.ITextBehavior,{type:"i-text",selectionStart:0,selectionEnd:0,selectionColor:"rgba(17,119,255,0.3)",isEditing:!1,editable:!0,editingBorderColor:"rgba(102,153,255,0.25)",cursorWidth:2,cursorColor:"#333",cursorDelay:1e3,cursorDuration:600,styles:null,skipFillStrokeCheck:!0,_reNewline:/\r?\n/,_reSpace:/\s|\n/,_fontSizeFraction:4,_currentCursorOpacity:0,_selectionDirection:null,_abortCursorAnimation:!1,initialize:function(e,t){this.styles=t.styles||{},this.callSuper("initialize",e,t),this.initBehavior()},isEmptyStyles:function(){if(!this.styles)return!0;var e=this.styles;for(var t in e)for(var n in e[t])for(var r in e[t][n])return!1;return!0},setSelectionStart:function(e){this.selectionStart=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionStart=e)},setSelectionEnd:function(e){this.selectionEnd=e,this.hiddenTextarea&&(this.hiddenTextarea.selectionEnd=e)},getSelectionStyles:function(){var e=this.get2DCursorLocation();return this.styles[e.lineIndex]?this.styles[e.lineIndex][e.charIndex]||{}:{}},setSelectionStyles:function(e){if(this.selectionStart===this.selectionEnd)this._extendStyles(this.selectionStart,e);else for(var t=this.selectionStart;t-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,0),o.indexOf("line-through")>-1&&this._renderCharDecorationAtOffset(e,n,r+this.fontSize/this._fontSizeFraction,i,s/this._fontSizeFraction),o.indexOf("overline")>-1&&this._renderCharDecorationAtOffset(e,n,r,i,s-this.fontSize/this._fontSizeFraction)},_renderCharDecorationAtOffset:function(e,t,n,r,i){e.fillRect(t,n-i,r,1)},_renderTextLine:function(e,t,n,r,i,s){i+=this.fontSize/4,this.callSuper("_renderTextLine",e,t,n,r,i,s)},_renderTextDecoration:function(e,t){if(this.isEmptyStyles())return this.callSuper("_renderTextDecoration",e,t)},_renderTextLinesBackground:function(e,t){if(!this.textBackgroundColor&&!this.styles)return;e.save(),this.textBackgroundColor&&(e.fillStyle=this.textBackgroundColor);var n=0,r=this.fontSize/this._fontSizeFraction;for(var i=0,s=t.length;in&&(n=s)}return n},_getHeightOfLine:function(e,t,n){n=n||this.text.split(this._reNewline);var r=this._getHeightOfChar(e,n[t][0],t,0),i=n[t],s=i.split("");for(var o=1,u=s.length;or&&(r=a)}return r*this.lineHeight},_getTextHeight:function(e,t){var n=0;for(var r=0,i=t.length;r2=Eyfpo}@6yp8|ZsQp`HQr^_+6uvX+-~_q znBhm#5P5 z3T!9oe1ykS5{jT8<5QZJW? zNW2`cS{Sm~m7haIB&E$b;D)Ra;e1l?-mHvKQN1vSs%NLM+i%8v!?H>@2oGyJ;eTtA zSUMq`%xr6;+bZdZ>SAEL+2xU$$Zo1xbghe~pZnhM5rC-KL<-P}U?K2YNStN50Xu4% zYis|JEWoth?eMe{au5 zSn=#A{6kHJy+C+Hp6oxSJyp`XwaMSz4Egr)YA>E1;WT<+E zlDMH7GTnG*6(WL>6b_6eB!B5xVvzy`f(7#iJp$m56L!4DKG?t(Kyl1J~&GPtO0)tLyOXP-OwHd$)l9NwH9WE(~a<*8_bD@U$ zQ?^*;R4|h&Znp&=iGP_aAV?WtPO=Hc=zOd6`k4Sj=pFxux`I}=1vCK#CwsV2_Gp{z z@g~{hEy90J_Go+1zbAWQ^NGJFd(I5(@dWP~%Vy76G<(*1*|QhQp1VNyX#eer{kVsV zcu%h6JzhC`JcxT@GWVPn9Ss{eN#W=rZ_Q!PiH2$gI(4fEl7Cj15kJW23L%j3D`-!Ek1&3CED`dAb`V2?3Td{9tfeQAsGWBP`IEGuUzz+ zfR}5;E0>J(5<>()de4;a#*&8+!9uVL;o7|>Z%p-bD0_J92g!*bkJ94I%r|`Md0gdyX4vRG@RN8%d;-dFPCGQjm*z@4UC#qr<6D0xI5IQ!4z# z3O~Vc=FDmh+0Kt_G#|v!>E$RGJG}xGgD0|Ak}r=XJHnL-|ER`?I}>)Gnh6S4`~`)H z4|(PrROitn)4iS`R~~2PTn$*NX33dCTn5|#FqO#O1PLt5^a-Lm$Oy63KR*R-S73V^9ftyk z|9^nZK^zJ4+ePYZ9oSsQevo3V-Q>8_-1HXLU70!braKOXPNGjDR2kyK(%c=^xp{2H zOrmil-<8BNKaQeF#5`F+BK*CpVm{ByX(Zp7tj#4|HsKRPbc_rN>PYSdri(WmP1h8v zkbX)|1;a7fgJqCJ(>*lJr;q{DatJ8x@P9c>M@IAy0&6=C0aM}9i!p^CgVTpmjU7e9 zy`Vva&`Lzo0)-#B_?BY^zgG|xAr$DDSP_xhEdh*L5B) z*L3I?aUYf?eXQvt#^r-kGdhm;1TTQ`xroIDEELQHd~TYKCBHL_ncTOZUeL*ED$0`z5HTP#IzuS?T4WB-10q zMsG;o0TAT8Bp>~sBz|FkYO(PegMUxs&P`IOTKF zbo}|SLD9cI6|%mlU-T5AfVJ@~qK(pZ{+#A##IpxLKlPK25Gch82F76G@u3CP#>ufZ zYkUfV2pMIe5&PPR_{28+4q|PJFX<87f)!^y5c8{!+0s(J?B|xIWp1dP*?-y$T=)!b zC$OW1_@jpk?PdXw9+gi=#|D$0?i(CZiMZ(T#H_>3aAIUQu`;mEg=nGBx!}>TgfVH| zla63}!*Mb`RPL$`HrrsWp#w*A>#}mfySJlSJfiV%74hX;^xVID<9?%Esie9p6_3iTr?_)@GbAVYR|<}q#hA` zW3g08IAGsAZRJf^p$+khXf68&t?BnlLwz^;?%ANcO5lzwdqBa}IC7q;G`+iIUqLp0rbLAqSWFfeld0I z71J4JP=lcK7C-L?^?!2fGA#P4*R|hMKErz+=)QRoaRXE>Br_A^$rr~kmO4`?y-Vqv zbtududnWWR`17;H%8ovV02RwJ=QmaY;Y-L#a}r2%qWFP8yX^)>k=-J<0d8gFn1VJN z4tsb&Xx!x6kHEjylSZGYQkF>Vemko=W7kHhTZ z0yu|PCi~{n3^fLvs$*I38VwR}_a50BKMIA5hxkX~NaP8J1ee+i#RqGOlj^ufL`FW@ z1@kJ3Y>k5OP@pXmc@WqEf;(Vt3}e?xCkKjWGH&y_{E1H3L9{Kx>%E?r9`-2|w;~Mw zi@LftWjx_HDSs}My7)2rHel|fBY|wj^M;;vL##LFkm?17V`Vzq@Rgn)tc@r7QoPY~ z)gl^I1{A-uT_wA8o?SgvSjiiGhLR^>)n77thg65HT@~0`3P)QXp15Q*VyQ2}?G|tO zB{@GKRX|hYSq2Hk=fqBvQ=-C^jiu4QUtC-$HR)U7?`KLz$y*@ayFwzd`YYkKsDP#pI~YZIJpwvjT5txbaF@e5G1^ zb$YAc&wnPTXLr+@TU62?OgpT{=mxJoI*zc!Yyr1<DQubXrv+Ra zYa@Vf=eK+eO^SqKCOBd*FV9gyTL^_%u!CelGo(uyBrmey0Q_Qf82Jc!VYx-24F1Zp?-){Q`D^! zTYp_WM{&#R>dU(7hV|ak46}$G8e%55nu0CF_WhQ@#_L=!JB*1cB-k3|0M{58mBYFy ziqZM9sxj`NEi%j4sX=B2r#-lQURMuo3FqFa4V=`j{Z73PNpG~XylE=9@hTOrr1epa zSyG$^Vx&7Y#0B+Ysi-Ee-=VUOQE)(hoqrzb=(lfI#T@P(O1gJLdS~{7g$SJR>hmPK zmd`FnwQW0!uGf)U1Dn7Q%NwptEEAsL4Jp>GmA`iF@R4HsN}MQNF1UB`0}dcrUwjBB zp5+aa3K`tD5M=$NlSpcwZie#iu%U<(Y)5T-kfdS;_b$dZ9pKf~;RCivkhmndrGKy> z6e&Ech=C~yLt9^_qiz$3q)Zq&%ye4Zwc+Y+GP8j++1_97lO zt8Zd1(scs!))pMt8g%mgLao> z^M9-w)#$MQEj6$C{Q5q+upv(xj4Ub)7ET+5JlFmWWNHE9o1R^tV+K$h|UhXMS$0 zi=rsAhbyCpnVxVP=~E#d-6fvNVAmC)3y3pF%EX#eq7Df)@O$%NmFNS>LVO36-2`7` z#Mf?jUzfvnK^l_qXH9~ZK!1vwQy^+=(u7i+a~bDUMiorKWt>wPD>*b@%T7S6wad*P zs>S-UBDb2fD|@GC|5qi=Sz^98uju7|)!21iGoi>SpN38ak(QQG3}PWW#&n%#wukq9NHbd+2uIp#v3 z)Lf+P>4LobUJR?@`YDa}#c<9)EvLSe;906u&~Kdt<8NS)Fn{g_lfWk?xjF7tDSZLq z%83(WH%mP#WkBV|hxBzrUpKfj(a(K(kkj>xk__qtE~QEby<*TnmJ%JCuhODl9#lX$ zsWx;Q-%rP6Tb4m{j)W^d8CA`?sjg zowtqE$&03{PZ=V2Rw!QfTKNLv^3FzO#>Ms7*w-f?$x}*LkRm3QdE*jB-HgD;x;ci% zSigJ?5X*~X25fGxXud>?sXUb0Z_V*8sU{;NH0mbW^y~Pbkn{!bq9Vk&og(&- z&QUAGB<~J1OK)!`Kz9dKvWCCw!Rju#!m!!!rho6XO?vlBvu`8!rrOx@TJLloihP)67xvx8Wit$~2#e#wAcK24)9PTgIyvE$~ z4K>fZYd*)k*Km5S;or4wa3fBx6fZ$DyyjftEoF(fnK?T3dzW0dlWTPOcZuHq*6>+R z&VTO=$VFlCjio3R8aueB9%6Pv=JPMWj^B>1W6M$K9yZl=-s^mGA~jhF&dsueY(dqK z>NN%<6_iln-4DS|tv6+a$tE}`^Ou7l4 zE~a&}2t;cTI5+r7(LpCJQs6@e zeC-25UL&_pCYNwmvAv91ceY!>)e{J&)W!2~FwJYrzG!$5F8BTWj1e`VEdEuiU+3!A zB8qj9tF0Hy)9h@>01mN~ZF*NspdoN`8xDaAk^Y(t!pnp>ylR@dC>n*9}atq14YSz*_DB7d%(iMZAi zaqUdRwVsIUTGxE;*L<#PK6h$9*EOFzHJ|I6&z+jjbMa<>qG!0MT{Jc z$RO)XW=<20)^0^s8;d-*TDe=1{VhdWt=z5S{f!;JW6$Xle7_JkyMFlK{Z1;aFG2Q^#=%%%>8pC%N)3dNtu z_^My_Yb#@ajNvOM`~n( ziaJTI($e}~THkNrDu3TA2W@PHz4O9O;OcEOIT5a<`8{ZD=o46oX2+4<3DJbKb?GPE zh&ys5ze(7DzrB5Ty=`lC7Z5ArJWp0&^N2)xlF9U-Ox!b{V zP!AS}oISXLU$f-5_wUc&zt0)+m579}C5J|xuFv!rWbR)MmVf=a|IqBZ?*4WE9Tarm z+WT`^`~3^pbbIPi>4!&y<%0)CX8s60gQBh;Jg)c3EJnpA&enh!G!eVkMg7eEIk-4H z!cmwsoy5{jey=gNjG^u&PU^yA{_@S+&wqUR9QAQ0pN>Y!#mx&-G2aDKP22bHZ|{Vy zk#S|cBk0Mhe1Ac9CvE=zeMztt(nC6aHx{6>^#W8D*C&(~E!7a0$B|bI3*;$A9M)7UA{MGAX;;IE=E!dkv+s zLdorc+y#=|7aNN4Fe^X-U42QAzs>3B446`81k6AKazml1piUzR{s=+OOdU%^lUNA` z>vTja0&Ma+t)CXty5Eo6G(WA+fRjU=*kT}^5X)I>6SLUU_RRQ3t9i?#o5*C?%<9xG zYKJ!r0e`<7=zJ7iRtty|RN*4=7}HM+U5E6(|4O>Kf80K5o;hPq6l1E~*Tb zhU$E|$YwdlCQ*dexTzU$FPzX0;kpb`lANz)%zybh$+HF-vU12j^rk6?@@J9(8`nYr z{eASvm$Zv0wr(l9c209#oZ|4D@$jVWq>$EhF*`XF7TBdC2&jA{e|K*yGjCy0tI{Ag zqAc-6yYKgaa7Ob-vUwx}$T3?iI~mwy5)LzTT5u zynpf_$@xOi&C)_A5g5+M|)lU zn6)fMU4VTAqt-=ZO4|f6WA|#~mD3zt<>11@!y%U=S{z|s;{_m!{;go-=qs8kxru|R zf{%h5@oKn(#3P1~YdD%LP#i1=1&<(gx9reIj|xjm@@D*0{5T>|RH;e7mf>p-pMU12 zah}2j8Xu1)<$*b;mX{$;AY?oy>W&cM1j-tWw-+bV==tA-5hKj+t!wu*ATQ(qyv?W^ zxdq(gLqu?9y=Y7*i7s%3T?bs6S!@{TCfz#LQ)}r;LrN53aa)mWB9dOxB!eOuG#z*x zmXxdmHCG;pJ(pC<)MROmXN11l1AnoM@vP7xYYc%S#7J|5Y0MBHljID7;N?0sa06(1 zCY}YccF|K@HhWR>_-33&j}xb5kE6Y{6TTMVH%CtTBaz+-UyE>ZI%!5JJklPCS+Z@+kjhwoRMe<7_#RrkhJqvo0AH2uo)<|JS|}HBSuaE zi=F@89EorItAGvJoS&9vla#%Jfdz~<2~Q3F4m-{9tjY1D$Psq|ejSC1MR)9X4>Hzu zStVtWQ0P5C5D}|}4l)Atp?}Y3qq}W<6&-g!d`+(82M5@sp~)w4 zs$Dpx8KvytmEcTFbK;cr2`+k_$POda(MG;0-+FGFIWc8KmLv=+D5}$NcrPiSrx5Wr zQK@oaXmp217b(x|CXGhX-fT^O9w(1$MJBk?9mt3Ff`8zo(I{;@Q5m24 zVWfBaHO7;CGXQ`U!N-sU6)``cfUKVN1hkRxks`j>Z;ILX5!`1HudF^^@08R-jyE;kIQBF_-~xgP*qlJdwy^f+l)De>~1HlV2fT8$L&>J{YGT^i@L60Prk#;`W{f| z|E~XgFO#JqiL3KpS4ExA_p)-nH_L#ySMA<;4w)}A##EZBOG$&m3t@?crpCa;s)b1V^5!vc`W2?Jv3GAu|{dIBO1$Lh?K#&6?7DAb)#&GqG#MVX*7?Sd6k5ZQMZh zjeWPKieabJYbSiY)1CWc?XV!vEcK}B8v{KX8VVm$Uf*%g;o>3z+_D=--mO1(Kh``f zsx(ENrr45OF049dYa2~_Ormqq?L#pZ_UVphuhSJe26r&UpNd|E_mzvEj2!eDIo69M>*xZ$1b4As_=N2ZPyFxw}@ASzE z8QF?{-8o&}c6P|Je^2Sl9zQ{({0Ey!ZwV>=OP^ciFx{sNs<_0rs2N(pacLbi7`2h_ z6#zQ{Ksv`dNUSr&?_?r~#{wM!5&l5x#x2==T7S8&7J+%9^Q$H@t`9H#fqz|}TmrA; zgHJYcDfjZ`{{ACp*LOKfJj9ioaYi8$Gb!JYe{6zKrcfA$b ztG#wtyZIhvKRxYuWyAp}`^Ek5ew2s)?SFSYP;JZ$xypy+l{t62biOSS5gbXMfUYt~ zuYVxwCv($fDL<#@0xw5!qzci@QXi1XtP|cUj9%1p2HO!uDM$gUthGp{t`{5pVz%kF z2R`p^K(y4o9$=uE5LtOM4c#Di@GU4;yzf{L-vK_(6$B4VdLzVpg8M#=Z+>RD+J7&2 zF}df3h2MH*6z?<$77x5KTpTg~S|S8wNACCbxF=X>%ki_zPgAko&yeJ%SK3%0zp_yP z9cp7d1&+Gc*pglbo$A%cZ9qe=jwitQG^PZ2!`6qQS)i+WvW-W6Dd6k>5ZQ|8U|W4z z+~k7CMclDPNDWIyY?1EDWV^^xmVY8`r%D!HnWR#drdTXW(=6r|#jLjwKl{9Z1=JMi zTDv4~dsbKwA7CgT*bH9X$)-`Q={0kcOeIvBOz#yFCR(RwQZCs+xs^x9xAD^ zT0Cv01!}A^Z472Dv!<9mE#j_Y-PBxrforcbwu76&*o^{j-B7hoddtr?^0LC|O{?~gozTwUVUL0_W*wo%szA3c100hJA&UicET{qTZRyPjQ;boZl6 z5Xby?IkQZ|YpMs$5qfPxoOQ!LkqK6PXq+s|{W;rbv)w)X+&IA*)g?XQOOrS>0Jc0b0uu8tjj z*mjDe>Z);yBbqau);)BUWuDlwo7=92vJ82Cf8aT-UQaUf^@Qx?(&#J5c{)CulyoO!yORcmJUk+fgAY=&L;~rnTgV6 zCNg}=-)fg6ufX3gTjC1Xd~84Wb?5#YOZ;zT&}b^nMbhV@aLSa&ID4l&M0>RJ&mwUo zQ}d6}+VnbWXMa~HsHPvi!_({kSzNuFHNUpm+3Ei^J`N5q3&Si0i%{lmFpIieCZfDU ziNKf-Mm!7@P7a>5=V~qE)DEwEW`bBeCFvpp2f5ImkUHA*wa@+vOXWg56kDfSb_+{R ziC$q*)z*_Xuvf;T_H-X+aKAhj2YzC7-r(|Z2;}n>vwvfvav&ozTrg!)NevF*ULnU7 zA37}_3pR?3qgPRrGn3vX^xd@IpVKClai{aMY4clw8>K~Kz}p$HiP0jO)cv$Yqu&Dm9-WylNmmfK zjHd(}KBe^EKzfmUhtyZP^o{AhQl)N8_AZ(fyA<~mq}w6cb)fI3`#=!TeK^4#MvorJ z-`_^Z5%Y(_&nEmh3l{sWH$)$y&{;Ie(z@TCet&ufca{Qv{0U*fG33b^;eWK~-yFHP z|0(iXKN(^}s61>+f0;D!QNiB~{$BLSJ3@xuAI!>La1TD^9#BQ1nqVcO3a5flFB;j4 zC$blxVByX2(Lp^xb$}|Z;CC^oCWTjxF4*mp>I)CZSPsb1S*Ulfuo0pOq5)JrWTL7& zD}T28=?)+b(wGP7=*+C}*Kn`hrUu?ycbTmJa=Q~K=b}|~&eng6Hl37~aXF&YnG`sPdhiJ@0 zbQGHL2Mv7|O;*VF^GZ)nsS2uq=7VN~wto?BqJB*?@aMBWq&o^)KYOS$BgubDBem0||n(`&r; z)!2)gHYN6=#$MFW3pnz{p{_G1AvCg7+OV~;BEFP1v39WbcFy9KMX`KcA>IIUynpbC zP-wt*E2o~0vVd`scBSE)RsF2`Ty!Dd8T)=K_(sM#k<65VbEpb65#G?9u&q@nFADw* zIQsXe=Ea~F2}EyoY3{}S$MIzEc8{3G$=+jS#@&CM>@i!ZLP-Z8+PixeZG4Vzw#m7W z{Z)KPqB)z1!|6EB?Iyo%ao4F69e;PIA3-K3EVz2bD?K_Ghqcvo_EU_Ma__yVvCCjH z=Q*NZ?3sPpq#^JiNuR+MI&wbE8Y+8%Jqe?NQU?{}2=^X8y$s3bNUb-Dl*WW7seAS~ ziJoG8C={Gy#`_u)YE`etiOsJ=GZRNUD2gL49=GQJxvN>WOrsk8S)f&8bbt6Pf(9L4 zK8rRB5O)wU=|P6ufx15WK-4sY_-2as?df4}aQyS|=XpPVkH6;q9)BIjhnF_`H+n46 zaEW?Gv!{z`1~YnF8;pK-1{b}0*er@!-W$iTyo+msU*SyYX!_e#vB-N>+6?oXeAZjV zv6$KlZwAwg^t2w%uCn@h+kYFyXQ~-9XaGkwoKb=b~ zq*E;MOp56)M7Q51@8JFei+^mJh&G4YJu-f7u`|9=<&lPQ!!-(E_% zn=k9?`bBkpot1Oan&Zb8@k}6g7@aN^zJu_?M~>*=1;Gg6`v%N+2E55E6&`yO1qR;a zg4Ctp60fLruj(%_kRAG5NQXWP<(y&09=p8ec~DJ>fa7S={qZyxH44TDoVG%1y*M#_#4~`UJM}HA$63T>KHV2xIGx+1n zZ+e_U3sDsk0`XjkF@o_^angv?Aqix!z{9z4gjnd@0YRkV344L%cFS7HX|d>vD@!lC zW$CBUJUX++ARtX|HK;=w5P*kkjS=3)YH2Z?CoJ_g+L|@%at7<`U*YZ#bn8rHzv^--*f^i3Z*|HKhYez8ml*0yOcRSs5%J5C6v~N0ivxOTnV(9T*`3e5> z3I6lxnah{%a&2iluPt5Np7pHT@7Lz=0;4A{Huz36y?^J8<)hqI0{9yET#rN(*BHWQ zhIzx*y2kfx)e4f@Dd=YVyMfcFQsdK=IFIC;F=>pk+}&!RJTExR`saiF)jfT_K> ztUR5A?SHKNt~X_-qrvNPMAv2Hz4jt~S&ouD;?iW8c~v%+affRfbCi)6A{8{+4ECIw z>4y2cyk2WA)PSim^CNq8xAP?iF;VBMnd#)pz`x1+J=~hccpSIZ;7srVdBpG}qM;jW z6R+`dz&qHX(qV@hgCA1NlY3$Qgn1J~^{RsVOEvrDTR2E? zNZ(BMM~NA5A_JuR2Kg<()!#VZD!s;EhY+}+4L2|~;$^!X!Y*8}-)YI?2=-<-w&pF5 zmVe9HNEK)itEiV^Ze$G7FPFawJ4FlY;+dLw$_x2T=-bm$ zAU%u0`i9JsP?g0Fe~lJKg$ictrFxL75Pvd3Dh90xFu-ZwzQsbm(w;KVBw2qY)>n#- z$7loYcBs(WoOGQicuH(1nQ{@`CE1+(jsHmV(dkF3@Ba zT47eH5;C;Aom8DMlp_g&rel&zXvW;I{JW)_91u}yxC=ioU|D~eT^9@W^>>yZi7#{u zqkbcwM?@HoqpwslyqbKT&#GDxaSVCBC@$&aJe&P;NwQaFg!V_BHv#49FwlDI7U0rb z3?y7#_e!A1FWd^$r9dH^Q2h?F@hRAQW&_-N#_i7P`-(f1AnxFP7pGO zgDeNlQ>H7oBI6{QQEZfmY&w80K&ZTnm!o>PmZ;z4E*%CGMOl{!(-cui6epJRkb&i< zL_|I(Tqlm=-*Iddd*T&)qKl=Yeqj3W*i`6L-V&sD+0WMBQx6IM%<#@+4o0g+q2%rt zqWgvFzPkW?-@o>CTQNYT5r4!UNNN=#T7A$HNK}X8zl@aIQuaf7V0Ju!|JXNtlpa_^ z9{`+04_|@wo6EM_(OI@NwA?XsX8KN_omJEJ8+*dbexU+H6-jQ_7-)o@<;2c%66~bN zqK@|5;tzA5pG?$&?ML~Cw^O=v*z?Mo=lHtWd86;3CLXo0__ZMK#D8w9eU{&@&EU=b z|Naw4Ao6 z0dV28w>{GZ?vJL*SGQcXn^^o~yC`y;SY79(yGA$G{_B&!~j-pR-k#V9Po z^Tc<*o9M373)OT36t4Upl1ujZR(x46g%q_Je$q^7HN=#wSIzPO$9#*_eE)8teq4b3lZgjvN7qQb2cuL++%vLL8c|1;}9MKwc_t24Jr?e7S zVMN$;NVO4Z$?-wDq2U)(#l>y|BCGEQ?zID|7g?;_=YO>}q?c-6$~U~+TDvBobt>5{ zOV6~SvLtXEe+{#X3%WR)V$GhRf0C^^ilgujxTx zf|Y)sjx!H;-+!{%z#WWXTL*QlbWz7@6LqX`P{;1qS#yba=CG)Y)%FpZn%9C0_O&@P zXY4ad*?&U|z^o50KxW?stIXAB-hf%NMH1K4vq_NF4k5<98_1})5SIvwJF&>`b+!z$ z-9$&^%R4dx8x8cQ?MBVnu&(Umr*xF=-7Jdom&sL~U$_tM^{jVaLwZAlw!ddBbOH|F zv)6iG=+NF11?<_=Lu&f7$2(fGn?hZbPEXY@wtuJlaNM(xjAKTi14bk79>kNw1a1JK zQ75&ra;;!owVPg_9;??UV&hP40e8n<^jOJMXbJTnqoTs&yM)lhTy~9iTUEl8tx&LP zFxb+*Q+~yS6lL-!?xiEZ*%18nt<5b3H)(=q%JV%snny9wLoTmn*lBrGsdLI2j3B}Y5*ZrK*A;@T zK%+%dWMQ?}649xm`KI_KU#!2Y=J|22#ub#7Fjb$efR(6w>PC{73uL$~FVQ0>P-4`G zMrBYnCAAp-cmkzWB`RH*zJvoQ6O|4&Hh*nn;3ZWetP~&wt(*!TikO>O-oZV(ez1~%hLQE&M5He>Xkbi{n+e4pTz)L0|erEP9b4Q^T9XZeuWB12E3qb_qn2>ga5 zw*)F`*3z03XM|pN{@b2eBssxj4S()J@Kj#=foRxT;$>&^?ZwpdYD2M*Ux};7E+RL> zhMIt(2E%4!hkAVpLBVOQcahvzec#mFcp4h9UU3>3twJep+pDb|82}V5Vs~t$kZaSi zk&f>r0=vJb^|$gZh){LEtnj*<;lSr*HxU<)NB{BUPb2l-^lWrY?^L9f(0}XYgK>QL z*HL`%*U`iX&qdfBqR|KHv2<=_MNB)p8`@Kc-Nj9)`5Mn&$^vzTcl08loo54UNDsHt zH8+0S9LzSa2=kmv0>dR zsD}_pEkqW&hgS*yanRmR4J11@@Y_hJ*e>9Z!=G6!j{H|KS(f+W- zsIu?27OQ3U>ng|7f`5Jp&`h?4&&3bm&_)UWZ!G?f&ZI)jf+mm)F1j|Rk7YjI` zdIi2M;BKN#hsM`jV3yYEVxF$hpf{OW2K>4m7s(<{uF@G7A%B!3c#@9ClaYz|G@U

WdT(SH{oe3G2QhW`!z`vU%ZmFfa-;P=hb zVtQi~_!`1qL)dFs;CJbD|7Or6FVf5Y>jB}be)kNYq`rHaJ$m$le!h6R;>5qCz3&cI z{TEp4H)(r%bAM3uU!P6S`)PIh%h|y<$#3)v$P4`bf`1?3?^pc$3H-jhyEN1-G;b)9gbD6Oa4En1h5D)x=m}VH&0O;{!;P z%KNWHq5g*6fMJJ|gc`0Rc{y7@j97(A+Kq0taB*p_s(-~Coo313f8YtK>O`#*Qw4^V zVMny-MR4_WHLdt8t#G9leORUky=G9whs{SnL{-Zsc0tIv^TnK3eE0-;u(PxhOquv`gg=mH z>sV6Z*?;HG2B&=6jC0n1#vFfLzRT+l-*Vd~nDhSbvnzLh!Ynq-Eb!EY=BZOWs_=)L zMDg7ppUK&jAxCGs&nWlq{?p0%{)G;iZ?oo?hfOf%-0cv##yWEPBQzu6j$P)9^b|SW zqvXli5U$tx&G)EACF0^|gYmKYnsgjDN*@NxHh--jKa2?#3}ut5vTccfwUHl}F8@T^ zQKeIIrU$hmLeol!$CcYaDfCwFq1C46t%fcL$_txpJ@tN(2C{lR_woXhyr7=bR?1*2 zWx(BLxRr|243E?q{8^n%9lo#r(6barc%sKz3ndac|K@;(Pgq=zTeT2PAv;xNN!m$Z zPJfHl*t)24$ji&rM)d3MDaFJly$eAUs5eO|NR5mMyfAq zwsMM1+8ch#78bx!&8zEP93P=si_m)>hS8OF@FHVNcsM? zt~EatH#us;JZ$mF+&hW@(O|uSBq#xtzklDq|KxXHg_7AM*m*(UwRV5PcbFAW*cC7< ztA1*?HrDjFLHg^&-d5@A;FE)WRdb>1scw4HMvUp9;8hG(p54~SADy* z>GJ7(y0oMkS#q6bZZgJy>jSU6q`Kch-B@#aA+|}n5W6IuCE^Blb@$Olm$E$*yMKA% zT_YFE12&G#`meQj*c|!qSH(lOk5Rw}2>_mmclvqJv{^aB{Uv|Ce}D8(5Dr+aL4aXk z>ISkjCU!_<-zU~cgn##iu?ilrHH_T5;zP${p*1cIt<6-1HOd{sY4&QB_(<2e>zga2NY}Vep96m-~XaY+5TyBd-MU5 zd-R9SE*|Qk877g#DixB3EH$ULR~-zW{PjtHbuj$%pZ*G`_;CD}zs85-;eV4)$8yFg z%_o1wG=KWbpD4|r{(@wJQ>G_N5kijz5^)rAF?I5ac6M>FOgIXd)|vQ#-Eq;sI#_;mQ3dsX zqK87ExtN^@pSrlr9&p@Zwtp%Ys=>)jWi^dYCVXxZI+>-{)2x=%sDED6ikH*vy z0R*WdlcPxj{MJxBBGG3y+zy1o=zo{7k`%l4!i9nT-0WEN?OY;cKPM|R#8QFYA&iiN z3uGe(X*3}p7-$2EkbkfsQ@=>9SC&GcK};%nfK(Gcv6>LE)4RxQ2oTrnyxIE>7WT{P zI)edp+7(3xV37cq&<%xHqoHs@CV^4LROH-%j8@cub8oC=F{xxvDJk3e@$cP$=&*KW zJ^Hr!rC2H?bJWjt)wz}VtebRf7@(R?zd|@Rb{b0wPuhRm#ebWEaQB`VQXNsokluN+ zBgz_W+l@{xaM@@J82s!%j*>ldSL$dTs7z!!U4QLp)Y?kZPRA2r92ybANd#6^^uZE>JYn^2M-Wz?I?niV>zXQo$8d5Vavey`}wcrICgZD$#ay zEz3CfwM93Ka^9-x`Ld!^M2dDYIW~%B4>h__9V4xR%{beJ*fR=N1QAy-kwm$;%!q%i znzp!DM_~kMS-mE;fwA*5LMI8TB&!R?dsm}Wwb|kuMSqJ^#E}b*oNoql-|qC(z?*x= z&VjJi0s!k+FRR0&iT(fqD2=pKcv?B1TM==9XX3~_Nngq46=n>ZwL{kEs& zS*&o}L?q(n2uF#9B)Gap=1y)+%NBXMGNY`IKjCAdV8koZ)lBR?<`4ZQe@&i=G#{-^ zj#Z{nh8K|Y9N2$3alOGaM$Iy@j(Rri$-%;~7kVJRgfCc$i%cv<;rc;u>9b`D-E&a9@Gz+xtk^9T|wS;}8zEaLnNrQlH8E%`=4lDbq%Q zo|lTmzPQR9gDvUqqdm>fdi-0Z#-efA1TrKI9QlLP8kB#-Pn4-|a5u?yU^K-l&}FR6 z4wj;K@u z-0c>JGq@9u98a4v33=E=70hs_veWrlQumkCvt-$K8iUcI^8S^^q3j+UURZhqhqUNz zo6ph2vWtHdE3;a5<#&9XCeDe{1^YQF9ga!4b1^^m^R*dLkS23{WaYckSf*!WX2v%b>^5u1Uw_!V%=Fo;Xy`NgV6|p zj;+HXyKbNBj!`^pf8wsl$llSwvBy37!v4^cqlC2WLI!F%Gu7@T| zA{{=7(@+MH;H5J0-)Y1*;Ia4!EP<|e?W({%dwY)pnYQs$czOZbglAUtq0H5`0qi#& zi}rtDGviex8{=`oJ4@VdTPK)ykexMLRS)u5vb0uGvZ*l{-$9Nla@LS-vhpy?lAMB3 z+QeaW#Gz>|BSVDa7&VKpy#l7>*0y_UZM!Eyt57q?pY7%>CPR+ERIjY5uKjt=lK=hR zUeRw3>JSA)Q2qfhsjCF77OfSpdu1OQ;j4dW8!KF*X`l$D)kxR(8W&82dX0}B6}`<1 zD%n^XCIrR-_SogsZUqi(p7Cf)1#mmPM{DiE#RhN~exJ;rI-HX#al#A-oezX$^YF$#qWjqmu9Nth--XshQeCwKv^>`uwenqDbEa%4Q+$IJO=mp}#C zk^M5Msa(v7(woLg&qAlhNUbrpIUj$735Bz_ICak(JeH2#fWuE+Dli!tq6M>IczibK zGGr4fQ?R>T(q1)9$JToFS~PH5?FIPVK-@Xw07g<-Z>)7No>+IdL2gMYR5GsGk)la3 zNI78>Ugxh7$UPA=G--vL#~f8pI)JLn_s2SGc~@M%By?Fh9ZB>QgZHAu+1r1|kMZ~5 zf<988g6hkDgjfB?5n)_CrZ*mQFhn_|m}!agHD3_h7C9QuFyjr&DFz(>t5#RJrIGn--QFx>c58xJe=Caf}nDovMksd$oj8 z%$YmHQ0-w^Z7s3$9TymUjRb#+M5-+5c&cyJl>YtueOHJe@rrAy_5yre>GE|@ObHyE z!PQHoYF&_o)YKu6<2VpT?=O?lw3aKpZJ^hC1V&f%vc6Dh6{wvR5sx=GW(}g8xeq4C zh*$S`0{_m}Fe6-ulO#WA97I09hLcI&?@7GtgYeMQC9jCTTbOX&UVn=np zv{mPUaW79Ro?dZZF(?$$HR*?6S9hPi)b}W{U9mRb#23CV@5{ zv<~JRM=QX|z@$JyEGOZl8iX>OR%q~3;%83}v2V{F>k;|v(tm$$aU?qaazT0DJ;urv zDd};t;rFbe*=bxh4n$|qy=I2A(xBHuQOR_mZ77oEF&vi?oW6t|Uz+M<=tf-Yzrp?( z!zqqvpK$!>%#_Ow7g4!+$jKVG{kHanx`7(f@fOK^DVaa1)Ko-=+2= zTd`eXWSh^?F{`HGe)cfe+AVNv2KTq8*|9x?$J$ej-JZie*_dpi0bOWpe65yu={;1? z5w5q|05Ds)H}N#A&ekiB1L|yWwL+I3&Mv6Fu~~awv-B3LKRmXYL=Xi zHp%MxdM$s})|XYyiZ8zEN}OprHVF zjZ;Zu?gnqvDJ~i-BylhO=#N5uB<=|fvHAn}GX{Ucc8ILh$_uP99}7`zoq07|5$ZYb zQ@PTjWljENwv z`rB``1ZpBeSt(V?rS!u+Nv1A~B>K5#FK@Vt)P>#FM_^&AOtZ+_Hm_gdaa~@fNvBg4U#Wxcn-6SHRA{#R-sK=Aa9SUD5t$zWypJ=L>Q(lBnPps~X7Tt6caa z4kh{geDPvY%zk-QT(1^FVMWJ&Rm|skiH*r%if}PFwVADPFoeG;8X%`|{L5)hqF?eg z?C4V35R_2R=kRSn4thw$;Zg_*)GX!)3^0Go;g;I%cl1g34|~NA+5CO+!xaoY{Hf;g z;U%ny28bez^<{=&`Ohs)M&@Od>~TRSaKofv;q zf64fSpikx$pTihH!-W&-vKL)fFr2&uOwixfOixNagZ$~IBZ=C6QPeOj^Yg_FtBsH^ zk?x#xym8j~yBwcjNG|>8ksCrl;SG!fvX|KU(j07sn9 zVK49T9Mg>>vfHFqOLvRV3%##5X%F^zx^+U8uQp>!(E;M{M!pmovq}+b+|;E-KpU}X z#1N1|fEb0I>X@^$f<2Q3MgB31X{M+)3b)8=W%yQP*NU7Eu}YHhNIIl{i!L@7d8YTi zJc7`xm@z22Zlr)S%wjcyA54GYR)K;Lkq3B_`RlAkAmkSJpL#&WE3DD`ZB2nT(-^&N zVR?ojsgY%Tjz65)Uiwhqja== zc#nd^d(=6+!PcT}k}*E!uwuhy_nllG5$Y&=l(_;U+Qj3CF=|Lz=ca;05t_~($MckT2z!5oqVo~Ixgj+}Z zUH%)&E08huS=!v^U(MBEb41pj))%H7ruI5-Ge~aCGX6A1$^L&FKe4}`{Mq?-(m(mD z{S8y(j{}ZekA*-aH^gsD47RWZ9FZJ}KTh+Se?EU~YxZg_QIr4?WS^PVzzG&7?t z!%Y}WhDI424V+!pv|mg0v!BZ-?vF|F0x^GQS0rVRe=d&?V{{r>q&*ceJovd(k!Yuh zDc-+V?+bhKxkeO!U$d!7btu<4(#H;7wy$6j0e7J(h(0NP$n@1Am$l`OQbtr(B?=q^7EqR zA5vpAv|jqsp4JY2<_>^-0<@1BDUrTRk*f!haI4V^i>)?)Z^*`=ekl}b!MXfxr{jvy^vv_sPfpbbnSh6n%0 zCK5?8RrEokx*Qiu+X1M9MtkWaU!-?v5n5H7Hsp^>y&Vg0J94brjKyx7(I_+I;mlfV zp+y-;H%Nb__nGjrH&xHKZL&$Y{Lp%MI_lWp>IxcK@U#d00qLeq+s7o_3~04WSaxgn zwjsJt=SV});ZDN68o6`{Ye$cd)(!XmdvC+?#>VLdo_h;i#;YZsZ(8Cg6F`}ru-sjH zU1w4=LMCD`*4O$v$H#`8<<*)H&44+2js}f!%&33gyQXgY{iGZW1XlRr&#w-<6F+)X zJ{ycx7I`Tgw0?J9dj9f^{`}6p>GyZ-%~Ox~%K~KI`l4^78MNC}aozhslpj8nW_6o~ za@X2+>*`w)JG$C*`7m3k9dX*8(KbJg+&Pc>`YDlO9O>wI zFrI&mMbn(2*OqV?NzLUvu}JTZT`0p#W;XhsjG$yiBL=WKf zEF!ftr^iR$?yTO1mP7Pr7S0%?9r|uA2K;RoK8&7u9Aw~V z@)P}z2Nkt^(@CWg>~>UjmHc~MB=p)40u_IMaqN0W=qQC2>9z$1iGV_PEHJ!t^naf# zhc`PPd;tw|#=RYec{lnaXT!dbNm;;mtLyLb-^eES>r%e#kd9ZN_y>+(u+v^X76f&+ zXS+10le@KQNm>JZfNg?vsTvr?2D;|7d|Hr&aD7^y>2;=$WT5O#p4GD}^OOyPe@K5D z9{b>j$_`KWelC9=Ce!_&kAEJV9ZH6wU~Zu%PGl5h5K5TDaJgDRP!&?|%MSD~A8ECY zCU8$Ju@mxzy6ZCScN2Oy7^^qOVEkA+&b9?kO44J-e1VFQyac|fX4yhKZFaRN@CK?{ zqYPVKSKpI|cuJyP-(S$HCWpm|IPia>wpuFnrrVoIJG>c`!<%Fczt-?;eTU;@zd(0_ zfo*)@zxSxLAqlBb5MQ2YGf%r?Ja0Gj&Iqw1M3Ww}htL6fZ0 zYEa6pw|;hce354T#f1LtkCTfK@w^BS%Zt0L-zT$hp;UKa>Cj1?WH;koV!qag-d2q# z1b$P<;WIN#hAop*nYdHaBcy-3F?@#xsJc@fid7p90)uQj*)FQts*w(q;f&4R5wN0C zoV!A+ao(V*z=DPWpw`0M2==KGWgm$%A98@}kFp zZ=otw@Oq;L*9<*Tq2d*^>p_vi(VpP{>+RZ~+qRMLztZStI^>CVB|Cq)2NlJWYwTWc zdTpjjr_)h&H;haroRLYFq}$%u`rmIKcq|^2==6FTOdkHrF50E_R_q6kkx@zpiG zTi%PB_&(D&b$%h-R{nK=^b3dNu4>ou$!qqCr*#Y?TChk=s?^j zxJ^n2(Q1Rnnbc#OUD1`dK~^>8M3dodllV5VJ~NG(=zDvx&Rc&>4l-wKkMwb6smGV4 zrn0D;qa!T;lX*04Wyf=g6b>f3>ng&pHk!HKspwq?^+Tsi(-B3SBKnJi0vEK^s1?m3 z2#U?A3ju9(!059?;pR>l`7?KEwd&Rn57#9+Gszbaybwd%ppQc^bIA)0>f${46w{r6 z4S7W|eRLq0=puisS8FGPA1u>aH(J=pFsju0B2K(T%Sii?_mp;g7;)-&yzR6SI6Cp=HuzGFKDeT1(kw3eY8+uZ&{W3J`EYf-Dg&sm=IrdWDheVdj0okMoYs(U9 zxv2RhFsYG<$Qf5E4H9Td-C?O04cA5ydLh9=y7xtil50t#reUMS)96UrrntH7|D(|` zBH&uE0z7|vrFQ9I*{tjXyv~3+L+AU%tA@KQ^yJ8__4T18ZOBU1xn=hX)i6Q0PuaKR_>KQo-2e+(*hN>K=-0In|f+^pMuDdHwHm5gVA(Y9by8l)dri9 zD6(o>iDGLx@R5ghC+?QbsyZQZn>)SKm*vKHUZa0t5Oq>Q4)MEIwNCxWD_1|Kh1;vD zwVC|AAIz3;H9TdwLZHXKHW=#zOqTc|#~g?8Dk_sk_$LRzMwKVZE!oc674 z-VfBgw=b43yxu zO^-O&8mLSlQ9A;N|R*GFYW9|oJxzO;XZ zP@_|*v#Y4aztYYC3UDd%VpZCiVU2o{-|u}v2cYwhSby_`!tesx(2Llm+P&PUN_276 zKMyik^adx~%>>!i42idNO*dhz_;a6pMW)Hn%T?{jeJ~Lx9;G;p-Y_Z+ z33(jqvqUc8I1@v$;olWhc;ryi;@EP6#}@bw@;J_RtJD@d>t9stPoaQi%> z!^BD5gEg#Ia0!)V=zz1#s%d}XloO0~s8KbYVt&w9Hv?ylh&2uNH&I3)bfIRu@Xtdb zhpa(JYAd?{m0EWo^1~zKpB=Has0%flX;M5qplh&Ug!r&`$3Y*MN}&k#(;n#^ zw8G8G)AzgPU9ltNELGE(Wx5db5CaX4={bn(1nM*8|G4&y@H3^qI>dkWA4ZtzJk(=v z1dVuO4uR9Vi;cza-shH;(eff{v=kAerO=T0g;xBu77|0ZRx7Oooxy0nxtv#MZ!&q> zEf>eJj!~$Nu^ZI-1AQe0U55_8T;9P%wL_P9p$=TDsjS>|$CaCkDrVbkxQ;NH$*y*V61YY1@QhkFP=teU9>@Z zLba5Gm+KzFueS%rHc)}unpuk$qz%mrJy;D;F0=a1WmXRfdq{v?w#jzLw~j4QAOhGx z%c02Q3`!B%&w1C+P|&Dpn>lj^Y+1^MR=X-?PD5~^IJ__8({X?55mi70-c=B}+1B{} zvytIi95q-Vi5^OH5Ry>ojjTcyPnjVKzzZ3cgmFS>X}Z}=lM{7~+4Stb&z@K4i&#B^Y^l#@G#If2iYqA*BN#Lubgstq!we#fXSbXDaTOrz6?oV?D!?^ zqpUuuAap*S3vTLSuYLA3*vj(~5+f7Sn~mUe88bb`bCiD+$^oI$$I}oQrZ2g@=<#ht zKTF2&6=_p@rhR*lG`l_Ep_PqcxT&6Zi|RNV7oI!Opueif;G3lP$j!CTnAdv=L>;lR z`Xein-zbfvoK(}o+Gh@>(zJzDC)j}AjE1K?T4Gy}7#Nliq=mM9zFTaS1?+s|PK4EZ zwT%Tu+w*^(t&*OjglnN=35*cIG-f|{FMDdCt=U13$!Ngx-lz|!bCBU4HNrD%2PQA? zKwZuxov{kk0jVp%c8$kk%|){;lP1j@JS=D3YXa-Rpio*--hs*f6@ruN9|$=B3ScJc zM4Jg5-@eelbOPQprlW&!p51AZD3b&|IVR8d7Bqj91$CvdPrIZsV3~~qQ?)47P)ZYs z(0gh_RWbGISJnkq69Uutmo(JShlx*BOpF&}+SCne%j;|cmI7p!2w3f-9jo|RQ?T;p zSTY3HsiQGEt%>-(AYiu7CQU4vP1JTJ^Qf@Gg-%CNoyTET(r zBKv=R_1ZVEp&MKTAw#>2E?rVk<(J`<52aYP!hjpvh-Hbih(d3cTu>J0EGHZ^D%t@F zh4FtVh|JC_i8~}lN}?vug`kRCbkA$%5s7cwz3kQc(JDmcSm z6~G=EW7K=BVI-4cgUBbBb0_y1#u!ITJdl3^QGLd#i3e#om8|MzJyJc|(6&)pfWlnO z){x)~chm3@ETl^8B3P1{&yoISE>|#P1zId>K9ArE-QgL+U%k=%1go&kFDeZ2`{zG$}PrkT(JJ|;?vn?zd7QG@8 zzN|ORHR5H`WQ}N?(69~&Xq~i(rO7X^i@tEtIT0YN=j zo7P25El(k^Zr~G;6*3TZyN6?!d~ zqBe?uqD*nu!l)Q!34&Xoxdy_p7sNDP^b_}NR=xcNbf)>`N#qV0>C3Bc{`ndeuU!(_ zvnk-OH@oZR2HDb0j108Y*5H4x-A&RAHOq#fR;s`^ZYWeYV_J82rmkr2`0xDT=P?nq!qT`v4NGeR-Fuh1P%Yn4hoKR<-E<8!m74Lt-QI?h>+F?Q$ z8kwy#qYTA03|i<8kBt%>LM=;+pZ~8P>mR#6ewM+6CqVTt5R8h#VC`{3=T%2bCOceM z5XA_=McAjgsKMlMpT?@mQ3jfwfy%X>raY9&gj20W^ahfArTPqvvAX+QGBCW?5wQ*F z*Pi}KWkkoQOlMTQNI6cjj5ummtv$^dcQp^<(rcKp+P^697gS0cqg+8AeN zA;#la2Z7-Ul+ZzRSNQB=)}n}bVVpTjK5y!6MWc)gfT5`;LRhE$T3mNy_!3qmt2L=P zjq0Mv%8!$J@>SC!=j}3P@f^YEH$w!Mo6}1mTXcu)=|3DsnfZV49-2rIceHBLyVk57 zt@@$nNR=(8_wb+>+A#H08xDl&5_7D?efmxlz~GI$qC&{$mQJ5JG?|^BgV z_h_27djCcl|I19n`F1MWVqCOXv1D%6Mm5f0qQI;RrMk1{v^jb|%jam`ql%bH5hxOv mqhBie)sgWINP#097K7>nA0dawRVM|Lcky2w@`&TQKLY^X2=rk9 delta 24932 zcmV(>K-jo zP>#mxQ%D%)OeRwYbyln!MWuV zVUj1B^223GoC=eYZ$(=t)-mYDJHc0(O2&|k@=ILf4dZ5rKi6N0l^P}QR&>fBx}${t z7k{HP1p4qrHj|Ft{ibZHYD39)0=Tt%;+<|^74zKaGmU}~z5qi_ok{K|eh`&qBKrc6Pez_@QhQphc26JTf2>?Ah z#;n6-hUUq6Jdqwm*u%VGzi1tjZ}V~idw;H!Pi?j6dt)l17VK^FQYhlmL4l_~zC4wd zS719y=Oa9xl4$g8>c#>cfb$Qoe)x0-j6B-kD<|4ip0eHk%nt8)Db2>0ZlrJkkb1d9 zMB?Rm)xwa?uKXM#A}MXg0XJlY280+=qAGJ;8}j+Yov0%{j(_j0LbjZJp+bR;gMWry*Ai?DRYKWdWFLpA(!mTS3yY z8qTt1(Goy6-Yz=4Lm*68$1M~wqTq^v&?drzr!a((=dJvfg`3_VZt)nN24q;Oy)A%9875{ncl5GxBwW)dIrqFTj7LYw_|qo|`d%0f|NLnji8{IyQJURcN|3`ZETbpc zQ-TayL0=+v95TShM#;H->`bC4VN@CJfdOBJBSv4^zl4!Qc%Gd^sDCgJCAO>CNpxM% z%y96x`0-5vVdx%@eT{KhJWOJj{QW8~`AuRn{6s{NNc_tTpQoTb>Y3!*4A$ulmvLQ` zl!_}Dj>d_8_Q6>aU=8?FAUe?8X;xo+3RYWuSt2(KtIYsbkeqxn>TpR>l(WTZo(nb1 zpR&a&r-GSOal0+}NPo;^0YSh%Kk0*G~ST=jkqS>?7%bvYZ_S^-sNBeJ2?8iM^ z#Cvij@A1mn<3ZdLley=t=xEr$NeV{~d20@PPBc_2(5YKRkbkto9RF|V<|cPMVKM?2 zD%j#*c5?Iz#u7N|{T>JI6~aLbTp-$^EJXtdLyIt3l;DY`6Nucgtlo2&9L#nR_o>H3;8m4M;*4{*@7(yo0Vr5tjRi5!s{GZ3F_vlEx zl}NYNGSa}o#_ZaGa!6VuwKyJ(Cx6l`T>yjX*b|P$&Q%@n+c=xT zQuezazkU1V%jYj%fBpS;Z$JO~Z(qNDh3^5x6ELfb0s_et@IVMX4apc7fx-oic;%wk z1iV}$Ub$qPmlz@d(tD}{+;iMWqXM0C-AE#x%sXeilY(5#d*{8?9vx1N5>WBxno{8> zR`>~qGiO$7$aa2Yqxm3)PA^Bn*y$Ch7(9`^l6-kA*%7Wx_(wH9+?lWg)l5*Z;x8yn ze8@B3pgNBpneO!jx$-zO=W4)GHA~JE;xga{Ab;PM*kss>?G=QSN`!M+Emyet@qVXS z1Xd9)&u=dC|#k>4CTGfl*zrXtFZ(o1@ zHtOr>V&0G9NN=A>RKmqHl4zT}x}2@jRiH><7AZEPD6~x7Ep+S#OrlYwyaL%itZ_Jb5_?Iy>a=BBr}?#j%eH{EeCbP|0Mp~?^+mgerT&dp;p zW)h7f`K~0E`Ee9YBId~o65;P%74vysP9yowWNj|#vI(CUqGM!GP)BkvFkQUiXu76Q zh4fQ$Dj1H*9xQ_-n(m=#K7|aJmP0^khkwsuIx?bv5LnxB2$%|&UW_UH7@R(gYV0T) z?gb4ZgjOPw7AXA4#kU+Y_`QOl2%$jF#EOX2ZV6!2dgvdL;HeN>=dsv)h&Je4MjrT4 zzotXKi2JZC>0?bFF)kmRn$dBzCwKvj&qXXQV4+|p;B(V-EGZ^~=;Gr$tp;WpFn_m6 z;#HL@X={Omuj?Jag5S)9KT$sZyFvHM+ zJ1n?wv-+11AkFESMREP(9?1+D-YL(tA_59!TDm`0xTe8_-Y-E#g~|}S$Vx8{C7B)> zHhM$y4uBx%CHd(8B=HOTQ;Ut)7=L^kcW#nO)xww2BC`t2Ff4--{ycglUx?u2j@kw7 zq~p(r4T}E#sgU(W{i3G`1+0x{5p9&N^XD`_Bc43~`l+9Egg_})Ffaxaj}I-VHcpPU zS>sa>M93%$jo8;l#3#1lcMxk+d`XYs7OXf+hk{>q%$An&Wk0txEptQV%zxHq;KFBc zJAoZ7#2-CWXg3RZ^r(C~IyRW}bl>2RO2kEvCuSXPh7%*hiIstME<_83&ION#C5%by zo^%A;8;+Clp>kJku-OJ{4IMa=O`;_ov7a>Zer{Yp*`0e#L&4Wg;o!X#y9Aa)T8byM zwz|CB2pMPi2sGyWys8#?R)0pu6*o`zTlp}DXmNB&_I&@EhsFlsL7;8ddGh7Yf zxRp3=C5~H(<5uFhl{jvR)Iu_rg3#YI7lCh$BG0Ct4<2vaB{>q9(*O%AB9RjfajX!1 zt(eX*gBk>-xA=KKsDGDRmtoOYy{`S9@)_RqK=;jyh#R14A(@#NPrf*YvDBGD>0L_S ztV3ZQ*)ySk!JnTkR(A9`1gKb+Ilr+I2wy@@nv+196U7e%+HE&5itHA-4R9+X#}u^L zaM;5GLgOaiemwT6r|6hZR|G{dZiAxJtV^fKWFXB6YuWKsYk%7=i*a*kf#k2uc^qaJ z7r;5ZGTAqmW~edXR2|EL*JzMA~N#H zE|^zQWNQ?JhXQSp$b-NR5ZnQCV;H+mIyq20lX08Z9SLMJo;UQY8)CgVhg2^x94ph=hOhMeU~N3nm*S0{ zs}|9yGNAaK?JC)&^X%%W!b;xgGn705tNxPFJES^n?W(}mQaIZB@Wdsf5lej$Znt>L zFUk1{sREiB&oW3TJ|}jXoDvnTY%Gob{o>+6sY%}oCx7pX&6Dt*vG7VR!ckb>W09~7 zBHOe(rQRBVUJZE#6AvHks7x_JrNREF2Ww@qloSfbO~Nr0mcEH~`^2_1v4z@EATq$R zLgyI?>s6ztVs;|gEv$n`7|I-dgI_Nf`3;IEd<@qSE+$8HZiCbhniY6E!;M$M;w#nS ztJ7Qket$MOJ-eIM+@g~HVA^3lMmKo%(Q$+&W(&B@BX5!6kkzn3vG?ii%@|?d$H^N1 zuE)vE5q=*fYy7)Dx?|^%vaDEUgpd@26CH4b0Y?h=vcQ{RX*}~uLqxH7Nny*3KP}+e zSQ`O+JHO>)Xi_8;GrO`kzof1yP{r<{;s+0MDx<~$> z0{J_$bL)Ds`1KQ>DtzQ@sgV;&kh~^G-{q)))Rm3c{NuJm6?Ui#FaTpI5A{Qwnxbx< z*njHkIf`3eS6|juH>~%TW|&3n&=51Z)f8+Yw(qwLHeTm?*wok}N56f$D&}zSP}02{(mS&sEJWahSDz=@ zwS0Cts%_g*biIz;8rTGeSl)1DVwvy^Z%DCjt^BoXhmRE7SK>tJa>2ceA8-K4`r<=4 z@hoqURLJ1Ig&^xEokUXebTgE9hYdxXU^{BtgCrF*xOXwO=>V^;4j-^Zg2W}sEq{dt zp-ACjMLcvq?md*D`MCF_dh>Drfeg;a{ipTA=fi%k@?ToKawxmT4?*v~7B?K;a1tiL zf=kgZdL>qn>Ps?E>ip0Pd~ zxH5d$`s5<+PjV=mu|)Cm@}WzV3x9b4-JyK(q$i%sY2j3x&hA%Yw?u3rT}j`lq`$3_K<<^1JM(i} zT@*!`JzN<*%=CoYNS_Mv=q~Y82D`2ZT|k^cQYO}%5_L$Zf!~`Ct3)427UDao>?Zgk zBffUK`??&q3(}B;KWh@S1bjf`r+Hwn*?qe5wT&D<|l;@_n7?h%~dZ z*_g1CR^(Cw4d1+bd||QVW2iaL^5G34=26pxbo6PIIBUbOMf5~%!|5exTwa`%Rpvp1P%C)Bh+4ElBf#|T*Yspr6`e{+*Sxp zvPkCmr@l*wI2$oF#hgP7GdMcxTtqGINFZ%Qh|(5!cfxE6+>uq+)zTCyj3)CxwnbF-#5x6vNF&^f+SgV53 zFwW|!&_Xj)F@LSKLuxnV+z)|V=$goKH$;zysGfsa}R? zwP@|N$PIy9XGzo1B6M!u(V{}}j@Y7RP$@sK{IWxjIgQlmms3|t#9&dzRlT`i8!`!B5;Ooj6d`}n4+p%!9aIOvZix~IjP*2_=-oHg{ z?!0ZRPF^%seaaBIvqJH**UA?Vmv=TQGcK;r#=buJNS;!{f)p{a%o~?5>ShE!*3B_A z#`>T8GhlOjMe`+EOy!}}ert|*Ni`WEp;0%{reDVgg`_Wd7ZoAK?G&+x zbdFjfCV6+DS$caj0lGV=k~REY4_0@{6^6}*H-CMvB?lLfYBpR4V&FVmV!kVhy=ryp zAcKroPDT-RahJ?Rja@n2Ds|3x-8m1BHspm!$bH?}Q;hHGD;5k?x4XBZ=5T+x<~8P? zZ>V|RUGq8Sy@u0s4gaofgBx*jrFaRN;Wg(9Zz)T>&CJoM-@D|xom`{Kzf1J?w}#Jp za({kjKrRZ4Z!ATr(AdE}^$@cYGM|3|cKmj99b1k<_pqt1^Iqqh6RF8caBh|zWDBZ> zRIf1@si1@k?|uk&YV{F5BunJfVXEtj`VwKXYLyrW`mjpG`GqLrPS@<7S!JcSV$x0U zbTO@)MIai?-r?0ghHS)x!?c9chN7Bb9e*!1kA>kaJlc_XN;%`W$~|C{W@2_ z7E!E=Ty4Ero@Qr525^X_Y}3190wpPcj==g^F#s}OGb_Gk#^&;Q`<4q!vm}%7oPT2h zylPN~4(lK(yHc_cEvW5%^69_~G7smY1Lycvpci=Z!ui{z#esRyRq|ULgDX>HE00JP z=uSx*Bszrz69$9jM06UmtZ0A=YqgH*H#(}iL%OPS>8L(NnYnaM%B7eH8tvvWq((0&F8w$=c3Q&W>ll1%#NMwj-7MIRC~|$NS*UY z-LXha)hrY0j-A)`ke=(-pVv;!y3gmL&#jqDM-6ziul+t>>povQ^L(vaf9=fkwH}UZ zXE?6)a9rzozHa@RTU~SO)ZFTtTc_q$*W5Zax4Pz5*X*ybYdtvE&I-HM6Mu2-OvJUG zh-+seuJuG**Sh9&zvgpY^SM*=xvu%#srg*jeD2hIu4_IwMmx}H-dFt~AU3YUOSn?{Dn*9eYlf_%lJxag9%7o*Gl*hAD53 za0I|zu1^2=e?2IG!=w1%Xn$(x+Ix@^(kTGnoVw6?#vwxu1Mx^)0>_6z*@JOY#mn8+ zROFyT+oXu}9z2kOs6hP#$F-S$ar7?tvL__5gE1TQDj23gJE-A0U^aCy{4}BXRVe;M z##jBaUt1abV+>z8;U^HTed4*ijWPj}?2Lo~iX`TW!J#oHkfkQ##(&DLtPg8qGFT0) zzySopAwSLkZFrvJYhFf!Bvr_IBgFmZq35r@Swq)yo(#HT$P#0=sG3~WBvtyQ+}1V6 z;GLm>n!2`z8i|g*VemDuJr29K2XIFNL$HD&jSSIx+$?ApvIJq(d|`c`NRfcpl~&SO zSJX*zm6q1`()xY_SAY3lIcQ@m?41{O0#|RN$%$|+&F?{LL!ZDxG&_#;PKYL?txG@Q zM%jks@-)1H7%eAG8H&xTCNRPRpZL?6(Epw}UJW}OZeHj>R$lVT> zgL<$)>YTCYke|slv zjf^Yn9YIf4<$nvZJ8ARx?@NNMkRHB~)fsIIv76G~|=FL2}UO=GwJ7u0_58O}x z^npVquubEJ!kUK-8>yFlv{8HMm|pyohD+G(m_s(&IDbB`un4c0mPy&&#$l8--fJk8 z6-sUo%+m zQ9Hb02!HtHK|9~K>h;A zau~((Lem_pbDGBN6uWe$Z5;D>8llN5dO#toJ2GHRt2p`JR@ab5@o}40eS)?Ba#3Zd zG*suyMK;SZHi;s%#!bz5d*Ot32-jthlH`0XV}H)qNuD*xkd;IJp*KxAls}UU*tiw~ z=aZWL~s|NM25YU&RB$OpcOa|Mp)RS+9;BNaT5E5{N{+cyqhub z(ql8ZfX;E!uSNQ`mtLsUN>51WyO}gz6o1N&s3#Hi3axo{m(?ZF;Vj)KVL7NWV;8d) z#jIs9>H_Q|7_}}MQ`#no8M{{-ubk%KDhC%H9uB!2(c%d68ZQ7*^lt?tM_^yJd$ydQ@0ik~ib0;>QtzqDoErwG3Z#_qTQiNpyiL>^k7m%woexH|f@~o?1&+8d9PNi`$B16Or_iCK(jTpy|Nl zu%u)isJZe$?75^;rY1{kJR|hY9)E~sjAw-oSz`zsAx4@bOk;)snIvZr1TWXAfg3>6 zGx02lwTqtOve}E0$2a3NdYm{ddmQbpo$$2?zd3T!ABpr%_*#UM(@8T*;gR+*{_xpj z80BN&6%`;L@H+-L;6_}8F&oL^WDcLde*N<6&whOU#oOQT_QN25DDx=49uH)%AA_GWAP^Ei22D>A{A?m#}Y7k>mNjYetPiOTrQ z4Ng_OU(|I4d-5G#*7txy z|9Ac0dzmZ^NnD-(x+>~?zL%Bry;%mty=wQ)bI5#|F{aW~T}m1hUI1%pJyNnSTN z1(_#mbR58>lBL~dl_KZfA!%oTsJSQN{~CrKiF8(%Dv?Lv`qP8uck4KOS98vglM zq^Z6k_W4G$&K$g^;I$Jh2${ivz*%!}6q4r|Y1WkH1Ap1$n~7a34uf6C$6}PlXyXQ| zZ|u7@RSY|&UOVCIo$lNpYlj7SW~oP2-x%oG&`|i0^7@W@4i^^*;FjGu@^1aP`?2O> zQKc#BG{u(Oa$(guTia;bV-lTRSK>EbKe+Zj=0}Ib( zm1S|e@_))*GL(*Hp%|r*NHU1axzucKK@g;y*j!H0#pbRAn=7gYKDRLW+!gY(1%&wzET){d-DZ_V@`Ri0}teH*U%1(|^i!wFt};onJMPaea8<5B%%;Q@qK8MXl3<*WP25$*4FFNO=9(j z1Al>xcf44wc6_vQ>gayHax0#))^NK|Cnh0a=x3+8-zJ4|PpbRPfI>2C)~~BBUOlImimB9W}Wa>Vf3P&GuVzONrH3lWjcmO95a1hsah$2ixk) z;wBe7F5-?YLTXqtVvBTFCfh}pvVRn5J5{pq$|RMtG{s_3nr1P#C}zEd_}S+LETE=9 z*V-j{+q1%g_y9uz!DjI4PBx8dO|O}oWGbQ3WO}cdFwr_alXA%p%B9=|q$7Dm^H52R z)#7P0El^{XX`7(soaVGR19lC)LcssLm^H=hX%S~_ia4bjg_dz@0`fahs(;#`RQ1O9 zOEGj^vUszTqch17>wvW$Qw9$UjA{9_o|dEqY-TRc44J+FaGic^o-L{Ej_tkx%G91; zyKARKe|&~2>7Be0yXQ_2)Jwr=xg64#lS7|>Vmrs8k$j>^GIF0&#md($gYl0I*CB{F zKo~VaKhn8xcCz8@>NIrbbbs~2^{k^#5CPOs<1>(S;KD^9v~EaC9>p}t{)kj$tj>3; z$>d_1ZOs@}4}wNxd4J>yWH@5uo$n{<+E-}|wUsY$6q;5hm4W{_s6&oxLd6uQrc=pk}t6SHDT zL^eHLoSrH8&doJe&OaZt8Ik zWhdu=F2Fq&q4ZgVGQ?k0srLvY4dmcdEcKRoUeDNP8}5Mkwscqu2;9g|a6Va}$xM_k zGm+s_{#Lsrc?JG{*%DX4=41Q0uRHhOSmJ*xgGN(nE|NYMg;S-@(;esiXN@{Qb_X;_# z_|R$bSg=uK9KDK~oS7VNoD8<{Pn~ZmUq!xig|9w8s3*rm9iAl(kht^<8P-3Nkz?!yW0FnaVz z{{A*Pj+j3bem3F9S+Lk|y&?Jth0dZ$me&3D^ncScxU&@S<4*_+jv-IZ2>+u+|K`ZW z{ZEnC`pFO*Lgiso`pcw&j|%=~@b{um-VrkN{$N)2f_v~O_kb!A)dVXMRX7!ddeO*U zJdwTl1PgDDj}GbqssmJM1;2|yH7UGmbir<)R9|>N#&ST8&O*I=g^dtR5DlQ}Arn>I zS%0zJPj>)mkj6YnM`vb*zlMA5HZ}0xy31t!m)o5{IS*}lD_cI6Er)jE;#DW^fBpKp zJv+qH8VMg9B`HA!!3|7sVCc4o2Y4X{c%~zNWp8WN@FP-mlg!fUJ_F(pr`e6yJVaw2 zqNC7^KWON)XtF}SpI3TvN>xw=G#@k@w116o6ZLDFfj^)1A?+EI*XO-Or0368d!OH{ zTu~~ODT?$;{GVt-fB)ZTV&9+O{&v@`FUaiDyP_%3^`zsHUCJe|e9eq$trRopo?hd% zuf|@~v?;L{HTI&0Uciwr4t1SD389gt(uS>#74fCCiM4~Zw{sS^EQ;mp3h@S*<9~%u zghB(hTRHV~lm(27v?~qYtmoI_QpiSUN*gl(-tc~S6h zz|p@yH7^FeNFaKvOLH&oKaMARw|m4iPWB!vGw%N5WRKZO6-qh)(cay&XybEyvrW#0 z?62ZW63y9698Sl1Za4XDi@Q#p=zq9F{RlESVZqfaUg^=nIIOLvv!7z5lzZ<@ja>$t zInNROV$bZ$CJliHN%{=7(2?_L)==3C>`53Elsc#&N4WR+>19YZM{2!Mq%#T5fVhK*Ne?pI4%GG02co7K#5Ys4Z%+?UxXhgcr%z@q^I?8c9qr7+kf6DK2yz@K{HTvAS$0dh5w-P!n7ePPiH{Ui{`uRyIv8$ ze}BOR7rd;N=>>8R==<|G#6WM5I?my^S_;ogQb_Y`9?M$arQ_r}l~L1oPp_x%`srL^ zA)R80XHraeA-er8c?b6&Sj>cDB$8fe3{5#rp{ENIiHT?I_D;(l{C~#)m`tG*`u0-7 z-F#VB*DtE;>#UrU)*L^+h-U(^!{~IW@EwF7K5|3{F9=2m-#1{sGvG~TsqomNC@}CQ z7o;u)mv}|3dsTmdf$Y%dLOS$WDCZ0__Soe$&x2}81RO_`?vJOrxT$Z%(|&GQr{;m&2Pr_1O?CLf8bukkZ1( zx_@CN_zDvM!O-Wz?G0RT)|286WzZ~!3yWAux+cV@d~l=)JAaBmlTaq?vN_OvoWUPo ze$(R=T8OHU5QyhOj1i2Vijzj94oM(;1s=|YBg8`I4hSL@PuL4Aw_DaqPK!lXTv>YA zElWR*=Fyoo1_5b$t3e&gfB-yPYmD$VR!fWFJYlJ~(blY4mor#j|1!_XMfna6DSA;3 zh=Dmsyd^{X|9^%@t^b-VW465~%XHxvWnw}M5%7TZ!V^TGnMAt^gfVA>8u_PZ#$%a| zQtxDg!8F#vr{x(l5{x_O%a)b6Sv!KcryMpQyW8oeQ-*IkrG3-En=Ras5krsf%1`j0 zPw<~l&s@HAmupMgd2Q+9_N-^!e!n({7Z^QxvB7tm>3=V}t;DmtGkLWje#aK|;=&Wfwi zy6Swu{pEMLfHWNyZO})yItQ$41iU}6)!TUX$I0W}Uhk0)e-@p&YuUZAhy%UF1x)S5 zW##D{Y=39vcfBby9SvTWBf2gl@3j}{%W{1F1%}gg(2L4Un@8Q-o#^boP24{i~$Rma)5e?l~ zn|O_v1Kz<7l@2@982nHh=7*X9LnLBsR;W?8U4Qm0h0TD{1V4gGZ*VHd(-IgV2=A`RH!Bb*8$&`!eF3INPZ~RA^k4`^=Zw1pOiZxyA>7`0XC&|F|x=c1r zSMI}ekL>KGSHSx$Rm#dN=Ptd&bYBANy3FT_14_1b{NwaWBZohzlW!|=cs!raO@Hr` z)C#jom5`y`?WF3Ap&UsFG#!&%LNn%u<=-vco{4e&JT2E(HqVoU(kF>VK{%e+AoS8!Zohx}*GBR7w$&+&eZkw| zE@>!yx}z&qK5tE#oE+E!WzJQ=<5UKru5%F5#Hv(pl|#uuetb^$@&oaOQ2jy|%C`#T z%kDZay!+)xd5rVq6QnKVQKM}nUJ024^o$BHh!ND_k;1@rPC93xgYr#;9Dkq{bb^pM z9Ar6Yo-$pz6&WYdjAEliWYYn30Yc?nyd2fTwM6|Ucj+*oD9XA-n5KwAqByafhYTz? zB_i@U;W}{?|Bhp$*b}eV6J0DF^#jv~$EHH3@|GaI%YL^0o_a|5XNGqsb1+&p3MF^H z5Zy0S_uU2H`~J1B+lm1yjej8aKvJs^(dvVqK%zPv|7E1yma-qx1GD1+{KvlGqx8TU z`T*c0diV;Y-(0rcj?S{Jq2-R5Gt+na?5vu$-`Epg_6rptsz`FX#y}(NEGKrBlVB%B z7In1e7Jr!g{A8jIY(L6Byq(gW!=6{xJjd6~&KrFPHSws0#jgc22GnNGgaLHCd^sE&@O8yvUf_@rKnT&}}JF*@VS;$VGLRatNsnX095os$GW0_0c@YtC&iExpHDy#J3 z8)OHNW1uJCet#CWC`Mrs zo+rNh-9&etUZ|!Upm62)kX*9Ix8losDWs^)@RMdrt0AUb&2ok%w(JT^psx_{+fT6%?nLOQFj-xvr-=|yqLmKmZ@Nd#pbDndMDp+BoHIiwf!HW5X4 z9zHq8)A`}0^|0b)a%o_z4y7-gaH9kExQLyGz*F*mVzyc#%j0n(<%rgpyN8Y(JEfJt z3M0a%L#mBPOO6lH4Gq7TDlT>#5LtacaIYOuy~twaK7X&ZA-z=lQoiBk*4i}zty9Tv zS$d`ol_i1W_-mM5T+qb<71<;)3_i{7u950pS>?5Nzx|MxUEjVmFkFs4uZJ9}eN7Jn z6Rh<6bews(`~H*72JT=C+d8OYrHeXNo2X-jgF1G<&YDZaGlxZGthSHP)Vvm4u&>RT zIb)wu%6}eO0A_t~0W$k8SY@t0^9IbCEt0sVo=t+Zb_g-<-9SdYg}6je+=)egud`*4 z?It=RU*3@s*l3_XZ8vJphIM5hKc%B|?`Bbyzf7*`{K9>3uV=mc8qymYwEaD6p%ZZU zp1s!lLWlOAC}7W?9#YevJ>Joh-4yDgbb6|Ov41_?hvS}oWE?XB9WWYs_aL4eCU64? zjXJ4~m1_m#s@?SZ^jN(<5gUhU3%EP>qQ^?6LQAOs7!?&B-z9`5=CW(F+o}?#Y=weV zgTa>eo$@Otq$ra=aW5SK&W7NpZ*6WVxJeV-b3F^Xwku^B;#kSkqZ&M*;(i($rd}+F zx_?$L;l=ZBtynh_sTlZ4v0&(>Ql9V8(L9QY9&&jt!%oYiN}W^IU<46HkjT(*zOE2# z1sW}yA`7d%mWWOj%{Rp_`C|QDHP4TGHLjqvgsJ*$1*}BfQ#X>tTp+_`d5Io5ffA!e zG%ACtDXGQq#}g>6DpBde^d%ffnW%KIv43eB123r>g1SwpuEE!Z!zDUVH{_)Oe}~3^ znu{fQ2#>%r*$%gr-5fL1F5h8C2;M$7>N4&uzN;O5k?5H#5-R>|{q>xfEX%9xd@ht4 z+~(PH`Qp{9w=bT5_tW!NvITs<*y5g3YFe6_iKb7=T$bkVa7KYwSFhaJ=*MO+ynkD` zyqH=PSNh2Vqm|%+sQbP!2*w-J6nVa}jRk&aoSrQ}D`uZ6LFB(lXiw zqOxPY(r8AsYEWEXM$QIRO2LW)NH-)vrp6k%E^TvjYH-W)KFf#178!aP9d(%tLf|(f zxg}6hvzFGRI3x7B^WXN&BFPCJYkzPTf~WG@4@AS(5-&TOZ!e~vR~w3j{7PIsb`iN5 zHq-ieeV#?#P<^@`KTXcbC%+g@$$$N->d5xZj}gONWrf$>335RE=ikEL@fD`MK&-O!#o>@IFX&DVJLQWmHyyrUNZ?K~S;LwdNC zuDS8s=3usYCD)H5?AIzb9F%YEh;~v=X}^5)_VXWKK7al7_umB^k0TpsJo5pQu)&eI zt)ImSUtz1gRJPWOe2cl;VSjm9ZorL2rsul*DoUaXJr2};W?h~G2@Fl}rn1a*y<0VO zcB#Yj0@_Yn$M2kjWJ|Ie%M zzw6pL#$EbjyMc$xx6{`eN4W%Y6;>AQ8W}0!*7(Y9X@FJ-k{-*{xzZ35jYB(Na96D^;&L3{6wZmz?HlHEsIoCvkn+ob}TpfxrE+ z`gMfANQz<9U6Svdkho?Sy{S04)ya>+n%&bAy_^NzF5Ek z)hqCA0e2H^IyAoK0<*MM7xQ$52EED5GT_(kxJVXpa+S`w2!Ej*!IN}6o{UVyr|JCZ zVmj~l4GZbf^xe~o={u>Ncb(3Y%k*8cPJ8o%i~hU#;FIJWHvDh!-xu)Tt5g?w1HW&c z7SkJ}z}FD=8p2-70>4YI`!|Cod68cBUk?ah^}A>IB=z0X?9rna^z+5j6({~B?R|H! z>c7BRze(HEn}36%|N3lt-cPI3U(OD`Nq(bWKwjYY7ySDOf4}12PvH06-PP&(EIm)) z41 zO5TH)BxjF)?{y^P$Olq<4AhaBFrlp8JT2lX?GgVam@nqM;=?D%gPo<7V9LagBm99p zTgQ?L&woC5HaO+mW}LJBGv@f~@?Bnc_?Fu?!JPMZpIy286K1htW`Uq^HQ~ z9wkrChH$;kZ@x!0DiIey8;ptBw4)bonRR zjw+p!Gd-vk5t>#)Jg(dZN};!U53M#mZ#8s5P+r(%>#6sPG?3NnxtAB1v@DW_YB|;Lqx8>hOK_hn}T4!V^8#S}2jo`8NkNe8S>#+^U6W3fZYDOVUmP zbAMW_#@0oZLtb8{Hlkm5Pbnq_+VxL2F!uKScU95l<9gf1r>wi}{E}+P`R^adHd1{_ zvz1e9(%$e>wy*$>YF=IU;`jhXFV$H;ZSXG%WB3;eV?I6~Nll&TR)<$Njrju@M#}fE zb*=fKxXDoy=3$FZ=H5{Rhz9EoBtZ$F{D1xa{U^WsDwND7!Ojc%uC@CUzQe45!mfZ> zS@l!9wXvqZ4bopH_O?n_2cH}?{S0_nI9p(~CX198E6{LWtI1W$_aJQokgk$>y6W4d zO_xvS)1@WV$dcc*PW3$aboh1ezOED<-btGkabx|Hpi*niCn z?;5#S90b|o&|x?pAMh1@_nRtp`2H7F%Jxs2+oKPd z+@n8qcJWXT%`k}^R;iFQWT`o|z3O22WYdAN~7?{x4FGd~Eb7QL{vVGbS>4BJPq5w5Q9D>8}2K zvAoK98(!T$l8B>_i`n8&lYeD0pU%^bEo7`ml6TBcM`s7-7{H33pN^fd3kW-M!j|cH zUvxCU@u`Xu(OMUWx`Rww9do_?2e26)xq+kiz=x9 z6Fn3P&Bg3Q_|(N^_JHFSv;9-KPz_FIDywOHGU0QR(8(;lo@TYAMt}99CU4O^1uYLE zwoMqmhQd88RSet+qbe{^e6-dE4d%5mt8yPVt%PZShT4geNF(itk5^>v7~xJ5e>A3! z2p~uunH)_L;J1e25s5yt;dUStM*q8vm896U7cLC!=Vr&EZ|4#r`#D*mA(jgC4q=2G zTp$}UNTUh)z(5;NgnxtunfgU)y|NSn4PsKs1EiYpiPeONo!&)eLx8wm=gr=Cu&`fN z*BK0;)2=8o0E+~;gl;Ir8V!XLG6{?_rXuGCWVE6NoO@#}i%BJWN=ezykALq5M2EF2 z>(RH(FU3+JnWKKDtIn;=XWgV@!vNKE`W3>lvC~*ec+&pcE`Qz>guC~|km`sshV;&p z9Z}Y3+irAnfy+i)z~E>9ag^+tyHZE%KxHD+>H2F&qt;fMb~;wE$2*z260Bagooiby zSt&kH!B%71V7YN3X#I;73`S~FdSQ{IR(YDj!aFwS@uwo=C~2y1L{ND>!$GM^9N;h1 zTnTmR!=LNppMT3ksc@vNbAh6nmM?}41Fj6mSBx;FkqWMuf~XA%>MiYmD~&XSP>Hsq zYgxv*uPwS^l=D_i&zBXYB2u)I$+1y1d#KTc>KJJiY{uC(#GX;GB8a$xi6qL!Wk&pC z)wIRMItn95%jz|$4UCE9!>NIFnYpBMfWIVW%u@6MW?48W{8UuBCG_|+QcD|>$g2E z&tiq+CL$3pM>t9>B*E1+GIw%oTDHj3l^JDy{0Scu1tVUOu4ZEIF@NYc`D^k_r1@xV za;!3qGQ5DC=fHo?iR%rXF>02Hb=0$APYxD_z0d>kC49k3Tx4P?3fB*MV{gz&)Z-!M z!W|f07PBpOQSz>IooCIe&R-LOfcpwu-`+>U?#Mut9fxqRg<}r4korvKZ=NCaPnk9f z^t@Cg_Qh4^7;H&*AMI&=*5ltQH5QG_CXgX%;K(1O)}VhJexgi$gS$zt1EVQcfi7ch zcCZw^lMmY5Rj6+Dtl}Zb;JPW#hNgdrXh2R8Kwy@O46cck;4(pbTu~|l23^3tE>qrT z;BL1#oWY%Nc|mCuwWM2Nfz(zXrxU95Pu zfqAEWe<4r?YG@9S!?f|v8%jVR=&$LnfK;&-AT#!8sx!wNBH$U(7VFL$3J)^E8jMB& zbZi|C*>(F|cZ}j;8;>7_BE$$i3P&OtXQSa>D87FKjDhSmjmvQ`Z|uNV>@;=N)~TyH zrjBd>pvl_=1>!WQ8~-hQ2wLkx^K-#--AGv7n7p6QC1Fz@l5CX_)w)-7EXh2w#6i+gRZeO#?+Jtwy@O*SKIJ)N6e7sOW88 zP|3#9Fd;Awu*WX1b}MjT^NdGZDuCPRJz8rQE;fL}@cU%`)Zv^|A%AzTLP%bcuGB0h zbTZr9wI3~SBDa9YL1EM5i4$fx=zJg~n};{{5#7&jaGk{0{4TU6lIp4@pyj#NxFvs~ z*$@M4NO+wQO9HdPQ)mcsT>|UKgaeDy5E9!YEOFf0hUCLtXOkf-rX=dq@gP-{v&Cwj zf1Y1ts|6cxHxko|g*jFfiG6o*CmWEhDVS1xVEgHBNY&Iy)$~dUk|X2kK3>j0y96r8 zj_j97P32-vl-@K}dKNl0Mrw_*&G~;IOemba#i@JV;IVY<1{{9sQh~|H5G|Mu!{f6- zmm!-_nS$NzlJ=@;I=0rU*P?;jYA?X=2I9^c2QZS#dSk7F@x;2r4RT9Lp^|acjucIT zLCOi6@H&5uK<4Uz%zZF9 zM!dSm6Zm(&h8f{PoFw@{;~?_+HJnWHevfK64n>Y)nl+qtMSxK*VL*S%nAupb0-f?D z;z5I5tqt>LmM!x)*9#g@o?+}h;@rW6u^4OB?<*>Eai(|U!ju~2T%27$EB5W`;C*Jc>Kk?TVL18C;>!I+{fD zb=0vsn*&E~IB5>5-Buf3nl`Vp+*)GZfNeT@6i(#ECWHhF$z!>j%f2_3tr|-OH3_uw zpmi|kI9dTt1||gxVmS#X)gYANv_gZQ5A4Zmj%%}(R8aUeQ-?lm){l?J^Qib|#fZ9|bPkKwqK;PfTz_|jA-LpS1D{|)xX z7*26S`-I~+r#sqXsb~iwW?DRnWlHig$Km66*j6tu&ndy6NOYfnA zj&Qxz27uYZy@{t`b+%r498hP2s}*9e)zTjkuU9(7_?>@~bPGz;ClNzn-3tFhLIeei zjDE8m3*|%XmWU;ey?8)Bg#-zrVKRz4b2zps2O3REYBD-ZEDfLMvsvCW6@t{Wj@?Iv zg`;Mgpm4TkN#Mpt;nZBA6!rdn&kGZp;0xu!h8Vw!W-tR($bQSK@>lBlfe@j4G2`;CJwSLZCuMNs}*8n3bcNTbW1OL?9i4 zlN}`;%&kuh4pF{4F}o+uhEA<}iDd4~2Mq&&a!icrsa zpURaMEo<^GyDizgcxQN}#-~Quc`vSt1;1zU7XRDZch?Kn@%uI_v&+0r9o_SyEc5!S z*WZ4lB~TL)%1Wt9E~OvtNiua=B+<_`dwIiEq%Q2XJ^~9{Wtv6awt4*ukL&U>Rr;a1 z1vY=@jFU&26|^S3!{t}my8?FpElz;^G6!8q?27h3^YvF*IbV>QkwgW*Sk*utU**Cd zaVW{>=ZhDMV)o0c;(E0Z3M)GHt71OSOKeOAQ-q7bsm*MSgCYD)(EvGx<6lm568(~| zVMmwJhM z4=-UwG(Z$#tS>VJBZs?4{rnOtjxAM#E34#fE4mfwq?0l`H}P-sl>coGb z`b)+q1bs56_#DOn8ZMkrm%Zq^g5l&PV1oX(W_nWc8RSnt9ZA&oi=u{MnV&CaSZ#!S ziFD_jkiE<uwAXHQIU{8)GNdsD-IE0$%b+c>o zY-u&~56Zozs71&!-m3g>;NZDQ+|UyUUCYp-QB6|H=JsL~OafPFeGGrAaUs`VEVeFa zG2qP?^8)W5lJUsJ^nbRdg-*S&hRT?=?xDg&QQ}5heG?TL4M0B#6&@$mrBQ#(1UTY+ z4tsfz=a_CBk=-V>TDn_=Ug&+jNqexz)2$P#e6<-mivRL7j173`TTDDsb4OfyBbQMg4`E5o-UyH@0Uh*gq|N75nvTXeCx$TPk7 zPFCx1#I0h^<@vsDeZ9FbV~n2eHfa%&?n&nW(L5!L~& zoDbhtX#B**c$dqK;)67^S1_ z!+R7Q-lNXp4Yn3-lZ^2(hZP$xyYJ-kh)_q_qhyCQa-V*Bt0EmGCP6YLZn^{g>lzZA zKw2$=I}d9Bsw36N@4jCEPmN z@ABVJUV)6M&(h{T|7xxVnBxlm5wH z?QfVOe;jb+dMpGYxgmaIdKkgqu8P?eX$$Q#K;yqnR0H z8E(R0GBnEIXyEL!ru|x~pZ#1$aeqvT7l`>gyCNxj{BwDH7^Bn3BJHV&;la^Fu`SVsiM5JvE-xIp2Gfij6905Q)fTq521f;LB@k)Ibe z|BxE1q4m<2_Oy2JGj{;w6NsJ68>iSQ?2B@q2J(fvbdP`jIEHL?+0yU1*@olp#+%8K zZ6g>@diNY;DAgZg2;4rvYUs@2wHCvV%Pt+QtyE(AL7NGmb_8kZq8*w>0Bv9rF+BJ` zHjzk*siF@O)#bQQ+73V+G}=oa`69hTi_ogtv>|_7>g`x~+mU0{W-NBwj7FIu4`ZIeyH<%ib8(^1F%R#(u_f~P&`4@fs{+CC=XWpGK~5i${jvA)*VIX*VzEU(stXa>yDb2Mm-V@7}d-ZgdG?_Qn{GTY(Op$D*ljO`MlO93J#Ri|XPpfQo1B6c*0vv9^B?a+5~A&1xzY&~#9!KM!e_dL+7HQ;Z%@L}}K;~)b^ zlb`5!JgBJUn@%c~V7H^HtK{G7BB9rY5U79ni(}V2LPsgINVhF8NCXtRV}aqFqyPI{ zIlS5V;0tJwGw$s$%)8MaIUDwcOv(bjTU~#b|3)^sUzhS_hjhFG#XoTTf}QsAu^_0k zJ=>*0o!qTeOVS$P18ftVOVz+AHqbSv<`*cc1#=5EaU!E2gHXaGhRf9of~t^uUv{8}`ADmE zG=Y0+iJg!y)LoZpznjpz!C1XH2II%takedRQj#7s<_lDey850x#8VRW`u>7mH90I!#DRYowbfFoH{IS$+TqQh9Nr{r__c;#>pL7L`vtla z3~b{I|Gh`04M|9iA~!U{97!=i(5IT-^b2$U(DIjDypV9m?52p!FGfiQ|6Qnkvw*Le zg6^Cyp3bHVG|G@j@}AK%Pg;AEEMm4xBcDPiBug>CxJaqb%aRna^o$oU#=d`wr&YRi z09%UF#hHuQB3$HQ)am?e+N4!d^}V`DuC406hT7-a{UMGBf_N+zzyer&AHKSz zciF9|N$OWE5mie4Iwnq;(|$Fa2p{?pJ|v=XQopqlr)ko`MiWL@8g4j7?V$_mJ$aau zG$9k$c~Iz&AMsd}c36L@dSAK4A5ga5SN2_B1ACEW8-{gL#{TFlsH=^=_--o)GDuLI?sefA@zUG7hLbw8e_=OMeNLPnkJ}OL8=?bo zAK*4A9Ym`Q8fQ`uZFU7$-UeCKloL&c_jTmk#QMxMWTNlv!8(6$F*(Sbp*_<3m8BYA zmWs-vZjO$y{Ez0rw3QvtB~mz;=&q{>znWm?dZ(gu9n|-oE=@-iaf;|K4hmeatwybA z7QLX*oVpOuMth7tOB8PIgpogU8<)#=b$54Jpfi(v0l^C~v<><=^ky!3p+Q}oC!b=v z6R;+)D5j6@2_}EI$m-PE3E>BexYCW*Z)6x%Dt!?r+@eLG{m6StJ3fp!bv)d5S_vGT zypN6*2egcryW@r<-qzt7N@1aZ(_ZY5Gr-eej|*+X44ZskONAWQ9Z@~oj_M{cCyLuT zuXM~7-f71{rSZ^eEA4nHg6I~R=w|xWYFQo4@t*tb4i|q9P24VLtE@1GtTKs~J(0}q zcdr-XE<9a8{0>&HH9Cbo%@FysUAm!1)ygkJy-EU|mtN>0M3!SG^?gWWu^f<1im+U}q z4I==q1uK8RlNV~29+u6@KEUe?s55lFPrPcl%R*0%%o<-G8q$WOP@P+Luf7^a2=}S` zSy1W`W3+mj8ElI}mcz=u^v83BuxVPLq!wtOc4kvg4ewJBIr7FJC}wXo9ae{sKr6Mu zW+aNN+E$|2S`K{VzTJtNtX`H!L~e7Vm-@2Y_|AW86bzzHO2{F8*D6=BA9?BO=QMYF zRk<>gpFd`lxIboXmW}rvR&~Qw-G+w4;1GQ@PiG6&hd0nJ+trS_#0p5uH1ubz*P7G5 zw$1yQn)mu?2E*(11MZlcZ^ZIZ$3i4zu-zB3Ej%mj5_5Jui!m*kXa(-DIXP&L-Xll9?k!p%;$eiP98r_X2+-T zBryw;6n&G`rU|k;^q2iQiP=dqe|)OaIC%_-um>?;V?9w%>XSd5o}TImbi9+!i&Ooq z{mcI}LpBNO^~@d7$C>@$U- zpseT-=UM}Gt3wb3R3$jq5E3)m8+JEn54!#o_t;hQKaJfC&pkxgzQOfHnbC*6&1ZjK z+Cr$oDb(3jRO4S^X8;Ab6nL>L?98x2JxOnOzMy-c^Y>VP^Mu0i0@~0E*rnRN+^9-$ zan(KPWw7WBPPm&1CMkph3mo}AytWwWoZecBu)>eVDfVl5fUL6BJSkAa=C3_A$9Co1X5)L zkDUARF)M32gc{g;P{(gZKT_=odo)jso}|^%2J1tf9o68un!_OKg@zOzMj?OJW6sJz zs;lQExiFs1(hf4%`_jM;s5_SW(Ju{8^k2CsU<{~Y2MrmEJ zK{`UUl!KS+9>T9Td&V|Ufy$a$iw2|(%?mwP4Nxw#`qpJu?-TZr0NZ4pY>{srTOvmU zuz{9Ck%t+S0!xhkGALll4)GAs$>gwWD-vzaC*>Ke1@*}l{Wc8K1M z1VTUEv;mSC`weAL^@^AZvx6VscG;By%>J%)dCloZN6LZvUKAu>!~a(mI^ z+X#LZjo~ZOruIzx_8w?ZS!Qi*eDCw`No|H z%hhrd3JQO==Pg?$9Y^V}g$^Y!LIl&0{oFq5sD(CW2R$UC0n2->KAg@$hC9><&#WDo zyu1T-Ig_-;Do_Wct^k`A9*fmybyh@moYr_)&bn9ktOtWaX+?PhCi^P{C)Ym^asU*- zOw^G!6F9zop?~QFyk|^D2jM)s)g)0S33_r&o*#cLXebNnLSvt{QEk97YXzoiQL3So zCJ>?b)P|~J>ea8T3#=vtrtvSTsiF51pQ@M`FT}K|8`hTB*#s;E$Se`C+DAK9@w292 z<;}5Z2(D8{V{}>*@kc?xY@bbreSmimVX^+|WiWOQb;*db8w$vN&fs{XwIo z9gw~-{tpF_*?A>#hr~ch)a1DkRB?;;NyR)O;Z3_|omxLyg(#ie0#=i&0l~o3@neuQ+F){o+~iBSloagVUmWZ;p~COfm6aDXB-Uux5|I{ z!F6xi#UY-vd-e=U08bNl_7IcYN`ip+odbw3qer|{PS9qEeTNwR^P8sl`KHi2c>3t& zhwoo8u>hXvHphsG4-*{!$Qo{;b-lH#$2?xJ%dKv>@0vp`uZek>$rM7vNx(Nfr+i=Bf5GUVVffW1U z#}vMh1ID(_FFAJj2-AeZybc3>vnD(GZ#SDwfhSCpk7b3R7BC%v`3!I2W86Tbk*=cc zQl{SEoN?KJ+$f-u)f#2V2_ZV3>4>Dl)D7dah_f6>J5C98*6G5N7+rty&KzZFD54!E zbfJ;iIx)(SU&5e;?(o|<_STfn+ z`UO#p5L|>^oQfJu?)Pb^njB@I*%_!@>uJnGsZ2Q5T10Ok$rq~6z!m>d6;%gPgZn$l^JG(Qk$bE;pwaLAK})+0lPEj52@o;Vm?gBJOC^rgx=T zI~w&v&5+ zu?`+_F`e-<{Z3jVC7Gcx!&nG!U%v$PE%K{OOrO$(vHAF4MDe&R{_*y_mq&3R6Z;KB z", "keywords": ["canvas", "graphic", "graphics", "SVG", "node-canvas", "parser", "HTML5", "object model"], "repository": "git://github.com/kangax/fabric.js",