/* MIT License Copyright (c) 2012 - 2021 jonobr1 / http://jonobr1.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Two=t()}(this,(function(){"use strict";var e,t={move:"M",line:"L",curve:"C",arc:"A",close:"Z"};"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self);var i,r=e,s=function(e){return{translateX:e.e,translateY:e.f,scaleX:Math.sqrt(e.a*e.a+e.b*e.b),scaleY:Math.sqrt(e.c*e.c+e.d*e.d),rotation:180*Math.atan2(e.b,e.a)/Math.PI}},n=function(e){i=e},a=function(e,t){t=t&&t.identity()||new i;for(var r=e,s=[];r&&r._matrix;)s.push(r._matrix),r=r.parent;s.reverse();for(var n=0;n=0&&t<4294967296}(e)&&Object.keys(e),n=(s||e).length,a=0;a=4?(i=arguments[0]-arguments[2],r=arguments[1]-arguments[3],Math.atan2(r,i)):(i=e.x-t.x,r=e.y-t.y,Math.atan2(r,i))},distanceBetween:function(e,t){return Math.sqrt(y.distanceBetweenSquared(e,t))},distanceBetweenSquared:function(e,t){var i=e.x-t.x,r=e.y-t.y;return i*i+r*r},MakeObservable:function(e){e.bind=e.on=function(){return this._bound||(this._x=this.x,this._y=this.y,Object.defineProperty(this,"x",x),Object.defineProperty(this,"y",b),u.extend(this,v),this._bound=!0),_.bind.apply(this,arguments),this}}}),u.extend(y.prototype,_,{constructor:y,set:function(e,t){return this.x=e,this.y=t,this},copy:function(e){return this.x=e.x,this.y=e.y,this},clear:function(){return this.x=0,this.y=0,this},clone:function(){return new y(this.x,this.y)},add:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x+=e,this.y+=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x+=e.x,this.y+=e.y):(this.x+=e,this.y+=t)),this},addSelf:function(e){return this.add.apply(this,arguments)},sub:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x-=e,this.y-=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x-=e.x,this.y-=e.y):(this.x-=e,this.y-=t)),this},subtract:function(){return this.sub.apply(this,arguments)},subSelf:function(e){return this.sub.apply(this,arguments)},subtractSelf:function(e){return this.sub.apply(this,arguments)},multiply:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x*=e,this.y*=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x*=e.x,this.y*=e.y):(this.x*=e,this.y*=t)),this},multiplySelf:function(e){return this.multiply.apply(this,arguments)},multiplyScalar:function(e){return this.multiply(e)},divide:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x/=e,this.y/=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x/=e.x,this.y/=e.y):(this.x/=e,this.y/=t),u.isNaN(this.x)&&(this.x=0),u.isNaN(this.y)&&(this.y=0)),this},divideSelf:function(e){return this.divide.apply(this,arguments)},divideScalar:function(e){return this.divide(e)},negate:function(){return this.multiply(-1)},dot:function(e){return this.x*e.x+this.y*e.y},length:function(){return Math.sqrt(this.lengthSquared())},lengthSquared:function(){return this.x*this.x+this.y*this.y},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i},setLength:function(e){return this.normalize().multiplyScalar(e)},equals:function(e,t){return t=void 0===t?1e-4:t,this.distanceTo(e)>1,c=1&r?n[h++]*e(o):0;h0&&this.set(a)}function H(){this.renderer={},this._renderer.flagMatrix=H.FlagMatrix.bind(this),this.isShape=!0,this.id=A.Identifier+A.uniqueId(),this.classList=[],this.matrix=new D,this.translation=new y,this.rotation=0,this.scale=1,this.skewX=0,this.skewY=0}function Y(){Array.call(this),arguments[0]&&Array.isArray(arguments[0])?arguments[0].length>0&&Array.prototype.push.apply(this,arguments[0]):arguments.length>0&&Array.prototype.push.apply(this,arguments)}function W(e){Y.apply(this,arguments),Object.defineProperty(this,"_events",{value:{},enumerable:!1}),this.ids={},this.attach(Array.isArray(e)?e:Array.prototype.slice.call(arguments)),this.on(_.Types.insert,this.attach),this.on(_.Types.remove,this.detach)}n(D),u.extend(D,{Identity:[1,0,0,0,1,0,0,0,1],Multiply:function(e,t,i){if(t.length<=3){var r=e,s=t[0]||0,n=t[1]||0,a=t[2]||0;return{x:r[0]*s+r[1]*n+r[2]*a,y:r[3]*s+r[4]*n+r[5]*a,z:r[6]*s+r[7]*n+r[8]*a}}var o=e[0],h=e[1],c=e[2],f=e[3],d=e[4],u=e[5],_=e[6],g=e[7],p=e[8],m=t[0],y=t[1],v=t[2],x=t[3],b=t[4],w=t[5],k=t[6],M=t[7],A=t[8];return(i=i||new l(9))[0]=o*m+h*x+c*k,i[1]=o*y+h*b+c*M,i[2]=o*v+h*w+c*A,i[3]=f*m+d*x+u*k,i[4]=f*y+d*b+u*M,i[5]=f*v+d*w+u*A,i[6]=_*m+g*x+p*k,i[7]=_*y+g*b+p*M,i[8]=_*v+g*w+p*A,i}}),u.extend(D.prototype,_,{constructor:D,manual:!1,set:function(e,t,i,r,s,n,a,o,h){var l;return void 0===t&&(e=(l=e)[0],t=l[1],i=l[2],r=l[3],s=l[4],n=l[5],a=l[6],o=l[7],h=l[8]),this.elements[0]=e,this.elements[1]=t,this.elements[2]=i,this.elements[3]=r,this.elements[4]=s,this.elements[5]=n,this.elements[6]=a,this.elements[7]=o,this.elements[8]=h,this.trigger(_.Types.change)},copy:function(e){return this.elements[0]=e.elements[0],this.elements[1]=e.elements[1],this.elements[2]=e.elements[2],this.elements[3]=e.elements[3],this.elements[4]=e.elements[4],this.elements[5]=e.elements[5],this.elements[6]=e.elements[6],this.elements[7]=e.elements[7],this.elements[8]=e.elements[8],this.manual=e.manual,this.trigger(_.Types.change)},identity:function(){return this.elements[0]=D.Identity[0],this.elements[1]=D.Identity[1],this.elements[2]=D.Identity[2],this.elements[3]=D.Identity[3],this.elements[4]=D.Identity[4],this.elements[5]=D.Identity[5],this.elements[6]=D.Identity[6],this.elements[7]=D.Identity[7],this.elements[8]=D.Identity[8],this.trigger(_.Types.change)},multiply:function(e,t,i,r,s,n,a,o,h){if(void 0===t)return this.elements[0]*=e,this.elements[1]*=e,this.elements[2]*=e,this.elements[3]*=e,this.elements[4]*=e,this.elements[5]*=e,this.elements[6]*=e,this.elements[7]*=e,this.elements[8]*=e,this.trigger(_.Types.change);if(void 0===r)return e=e||0,t=t||0,i=i||0,{x:(s=this.elements)[0]*e+s[1]*t+s[2]*i,y:s[3]*e+s[4]*t+s[5]*i,z:s[6]*e+s[7]*t+s[8]*i};var l=this.elements,c=[e,t,i,r,s,n,a,o,h],f=l[0],d=l[1],u=l[2],g=l[3],p=l[4],m=l[5],y=l[6],v=l[7],x=l[8],b=c[0],w=c[1],k=c[2],M=c[3],A=c[4],S=c[5],T=c[6],O=c[7],R=c[8];return this.elements[0]=f*b+d*M+u*T,this.elements[1]=f*w+d*A+u*O,this.elements[2]=f*k+d*S+u*R,this.elements[3]=g*b+p*M+m*T,this.elements[4]=g*w+p*A+m*O,this.elements[5]=g*k+p*S+m*R,this.elements[6]=y*b+v*M+x*T,this.elements[7]=y*w+v*A+x*O,this.elements[8]=y*k+v*S+x*R,this.trigger(_.Types.change)},inverse:function(e){var t=this.elements;e=e||new D;var i=t[0],r=t[1],s=t[2],n=t[3],a=t[4],o=t[5],h=t[6],l=t[7],c=t[8],f=c*a-o*l,d=-c*n+o*h,u=l*n-a*h,_=i*f+r*d+s*u;return _?(_=1/_,e.elements[0]=f*_,e.elements[1]=(-c*r+s*l)*_,e.elements[2]=(o*r-s*a)*_,e.elements[3]=d*_,e.elements[4]=(c*i-s*h)*_,e.elements[5]=(-o*i+s*n)*_,e.elements[6]=u*_,e.elements[7]=(-l*i+r*h)*_,e.elements[8]=(a*i-r*n)*_,e):null},scale:function(e,t){var i=arguments.length;return i<=1&&(t=e),this.multiply(e,0,0,0,t,0,0,0,1)},rotate:function(e){var t=V(e),i=z(e);return this.multiply(t,-i,0,i,t,0,0,0,1)},translate:function(e,t){return this.multiply(1,0,e,0,1,t,0,0,1)},skewX:function(e){var t=U(e);return this.multiply(1,t,0,0,1,0,0,0,1)},skewY:function(e){var t=U(e);return this.multiply(1,0,0,t,1,0,0,0,1)},toString:function(e){return X.length=0,this.toTransformArray(e,X),X.map(c).join(" ")},toTransformArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=o,t[2]=c,t[3]=n,t[4]=h,t[5]=f,t[6]=a,t[7]=l,void(t[8]=d)):[s,o,c,n,h,f,a,l,d]}return r?(t[0]=s,t[1]=o,t[2]=n,t[3]=h,t[4]=a,void(t[5]=l)):[s,o,n,h,a,l]},toArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,t[5]=l,t[6]=c,t[7]=f,void(t[8]=d)):[s,n,a,o,h,l,c,f,d]}return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,void(t[5]=l)):[s,n,a,o,h,l]},toObject:function(){return{elements:this.toArray(!0),manual:!!this.manual}},clone:function(){return(new D).copy(this)}}),u.extend(H,{FlagMatrix:function(){this._flagMatrix=!0},MakeObservable:function(e){var t={enumerable:!1,get:function(){return this._translation},set:function(e){this._translation&&this._translation.unbind(_.Types.change,this._renderer.flagMatrix),this._translation=e,this._translation.bind(_.Types.change,this._renderer.flagMatrix),H.FlagMatrix.call(this)}};Object.defineProperty(e,"translation",t),Object.defineProperty(e,"position",t),Object.defineProperty(e,"rotation",{enumerable:!0,get:function(){return this._rotation},set:function(e){this._rotation=e,this._flagMatrix=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof y&&this._scale.unbind(_.Types.change,this._renderer.flagMatrix),this._scale=e,this._scale instanceof y&&this._scale.bind(_.Types.change,this._renderer.flagMatrix),this._flagMatrix=!0,this._flagScale=!0}}),Object.defineProperty(e,"skewX",{enumerable:!0,get:function(){return this._skewX},set:function(e){this._skewX=e,this._flagMatrix=!0}}),Object.defineProperty(e,"skewY",{enumerable:!0,get:function(){return this._skewY},set:function(e){this._skewY=e,this._flagMatrix=!0}}),Object.defineProperty(e,"matrix",{enumerable:!0,get:function(){return this._matrix},set:function(e){this._matrix=e,this._flagMatrix=!0}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return this._id},set:function(e){var t=this._id;e!==this._id&&(this._id=e,this._flagId=!0,this.parent&&(delete this.parent.children.ids[t],this.parent.children.ids[this._id]=this))}}),Object.defineProperty(e,"className",{enumerable:!0,get:function(){return this._className},set:function(e){if(this._flagClassName=this._className!==e,this._flagClassName){for(var t=this._className.split(/\s+?/),i=e.split(/\s+?/),r=0;r=0&&this.classList.splice(n,1)}this.classList=this.classList.concat(i)}this._className=e}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),u.extend(H.prototype,_,{constructor:H,_flagId:!0,_flagMatrix:!0,_flagScale:!1,_flagClassName:!1,_id:"",_translation:null,_rotation:0,_scale:1,_skewX:0,_skewY:0,_className:"",addTo:function(e){return e.add(this),this},clone:function(e){var t=new H;return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),e&&e.add(t),t._update()},_update:function(e){return!this._matrix.manual&&this._flagMatrix&&(this._matrix.identity().translate(this.translation.x,this.translation.y),this._scale instanceof y?this._matrix.scale(this._scale.x,this._scale.y):this._matrix.scale(this._scale),this._matrix.rotate(this.rotation),this._matrix.skewX(this.skewX),this._matrix.skewY(this.skewY)),e&&this.parent&&this.parent._update&&this.parent._update(),this},flagReset:function(){return this._flagId=this._flagMatrix=this._flagScale=this._flagClassName=!1,this}}),H.MakeObservable(H.prototype),Y.prototype=new Array,u.extend(Y.prototype,_,{constructor:Y,pop:function(){var e=Array.prototype.pop.apply(this,arguments);return this.trigger(_.Types.remove,[e]),e},shift:function(){var e=Array.prototype.shift.apply(this,arguments);return this.trigger(_.Types.remove,[e]),e},push:function(){var e=Array.prototype.push.apply(this,arguments);return this.trigger(_.Types.insert,arguments),e},unshift:function(){var e=Array.prototype.unshift.apply(this,arguments);return this.trigger(_.Types.insert,arguments),e},splice:function(){var e,t=Array.prototype.splice.apply(this,arguments);return this.trigger(_.Types.remove,t),arguments.length>2&&(e=this.slice(arguments[0],arguments[0]+arguments.length-2),this.trigger(_.Types.insert,e),this.trigger(_.Types.order)),t},sort:function(){return Array.prototype.sort.apply(this,arguments),this.trigger(_.Types.order),this},reverse:function(){return Array.prototype.reverse.apply(this,arguments),this.trigger(_.Types.order),this},indexOf:function(){return Array.prototype.indexOf.apply(this,arguments)}}),W.prototype=new Y,u.extend(W.prototype,{constructor:W,attach:function(e){for(var t=0;t0&&(i=Array.prototype.indexOf.call(t.subtractions,e))>=0&&t.subtractions.splice(i,1),t.additions.length>0&&(i=Array.prototype.indexOf.call(t.additions,e))>=0&&t.additions.splice(i,1),e.parent=t,t.additions.push(e),t._flagAdditions=!0}function n(){(i=Array.prototype.indexOf.call(r.additions,e))>=0&&r.additions.splice(i,1),(i=Array.prototype.indexOf.call(r.subtractions,e))<0&&(r.subtractions.push(e),r._flagSubtractions=!0)}r!==t?(r&&r.children.ids[e.id]&&(i=Array.prototype.indexOf.call(r.children,e),r.children.splice(i,1),n()),t?s():(n(),r._flagAdditions&&0===r.additions.length&&(r._flagAdditions=!1),r._flagSubtractions&&0===r.subtractions.length&&(r._flagSubtractions=!1),delete e.parent)):s()}u.extend(K,{Children:W,InsertChildren:function(e){for(var t=0;t0&&i(this._children)),this._children=new W(e),this._children.bind(_.Types.insert,t),this._children.bind(_.Types.remove,i),this._children.bind(_.Types.order,r),e.length>0&&t(e)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask=e,this._flagMask=!0,e.clip||(e.clip=!0)}})},MakeGetterSetters:function(e,t){Array.isArray(t)||(t=[t]),u.each(t,(function(t){K.MakeGetterSetter(e,t)}))},MakeGetterSetter:function(e,t){var i="_"+t;Object.defineProperty(e,t,{enumerable:!0,get:function(){return this[i]},set:function(e){this[i]=e;for(var r=0;r=0&&t.push(r),r.children)for(var s=0;s=0&&this.children.splice(r,1),this.children.push(i)}}return this},remove:function(e){var t=arguments.length,i=this.parent;if(t<=0&&i)return i.remove(this),this;e=e instanceof Array?e.slice():Array.prototype.slice.call(arguments);for(var r=0;r=0&&this.children.splice(n,1)}}return this},getBoundingClientRect:function(e){var t,i,r,s,n,o,h,l,c,f;this._update(!0);var d=1/0,_=-1/0,g=1/0,p=-1/0,m=/texture|gradient/i;i=e?this._matrix:a(this);for(var y=0;ya+(t=(i=this.children[e]).length)?(i.beginning=1,i.ending=1):ha&&oa&&h0&&0!==this._scale)for(var a=0;a0&&(e.lineDashOffset=V.offset||0,e.setLineDash(V)),e.beginPath();for(var U=0;U=m&&_&&(k=M,E=w.controls&&w.controls.right||y.zero,P=k.controls&&k.controls.left||y.zero,w._relative?(T=E.x+w.x,O=E.y+w.y):(T=E.x,O=E.y),k._relative?(A=P.x+k.x,S=P.y+k.y):(A=P.x,S=P.y),C=k.x,j=k.y,e.bezierCurveTo(T,O,A,S,C,j));break;case t.line:e.lineTo(C,j);break;case t.move:M=w,e.moveTo(C,j)}return _&&e.closePath(),I||r||(oe.isHidden.test(o)||((B=o._renderer&&o._renderer.offset)&&(e.save(),e.translate(-o._renderer.offset.x,-o._renderer.offset.y),e.scale(o._renderer.scale.x,o._renderer.scale.y)),e.fill(),B&&e.restore()),oe.isHidden.test(n)||((B=n._renderer&&n._renderer.offset)&&(e.save(),e.translate(-n._renderer.offset.x,-n._renderer.offset.y),e.scale(n._renderer.scale.x,n._renderer.scale.y),e.lineWidth=a/n._renderer.scale.x),e.stroke(),B&&e.restore())),N||e.restore(),I&&!r&&e.clip(),V&&V.length>0&&e.setLineDash($),this.flagReset()}},text:{render:function(e,t,i){var r=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,s=this._opacity*r,n=this._visible,a=this._mask,o=this._clip;if(!t&&(!n||o||0===s))return this;this._update();var h,l,c,f,d,u,_,g,p,m,y,v=this._matrix.elements,x=this._stroke,b=this._linewidth,w=this._fill,k=this._decoration,M=ae(v),A=w._renderer&&w._renderer.offset&&x._renderer&&x._renderer.offset,S=this.dashes,T=oe.alignments[this._alignment]||this._alignment,O=this._baseline;if(M||(e.save(),e.transform(v[0],v[3],v[1],v[4],v[2],v[5])),a&&oe[a._renderer.type].render.call(a,e,!0),A||(e.font=[this._style,this._weight,this._size+"px/"+this._leading+"px",this._family].join(" ")),e.textAlign=T,e.textBaseline=O,w&&("string"==typeof w?e.fillStyle=w:(oe[w._renderer.type].render.call(w,e),e.fillStyle=w._renderer.effect)),x&&("string"==typeof x?e.strokeStyle=x:(oe[x._renderer.type].render.call(x,e),e.strokeStyle=x._renderer.effect),b&&(e.lineWidth=b)),"number"==typeof s&&(e.globalAlpha=s),S&&S.length>0&&(e.lineDashOffset=S.offset||0,e.setLineDash(S)),o||i||(oe.isHidden.test(w)||(w._renderer&&w._renderer.offset?(u=w._renderer.scale.x,_=w._renderer.scale.y,e.save(),e.translate(-w._renderer.offset.x,-w._renderer.offset.y),e.scale(u,_),h=this._size/w._renderer.scale.y,l=this._leading/w._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=w._renderer.offset.x/w._renderer.scale.x,f=w._renderer.offset.y/w._renderer.scale.y,e.fillText(this.value,c,f),e.restore()):e.fillText(this.value,0,0)),oe.isHidden.test(x)||(x._renderer&&x._renderer.offset?(u=x._renderer.scale.x,_=x._renderer.scale.y,e.save(),e.translate(-x._renderer.offset.x,-x._renderer.offset.y),e.scale(u,_),h=this._size/x._renderer.scale.y,l=this._leading/x._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=x._renderer.offset.x/x._renderer.scale.x,f=x._renderer.offset.y/x._renderer.scale.y,d=b/x._renderer.scale.x,e.lineWidth=d,e.strokeText(this.value,c,f),e.restore()):e.strokeText(this.value,0,0))),/(underline|strikethrough)/i.test(k)){var R=e.measureText(this.value),F=1;switch(k){case"underline":p=R.actualBoundingBoxAscent,y=R.actualBoundingBoxAscent;break;case"strikethrough":p=0,y=0,F=.5}switch(O){case"top":p+=this._size*F,y+=this._size*F;break;case"baseline":case"bottom":p-=this._size*F,y-=this._size*F}switch(T){case"left":case"start":g=0,m=R.width;break;case"right":case"end":g=-R.width,m=0;break;default:g=-R.width/2,m=R.width/2}e.lineWidth=Math.max(Math.floor(this._size/15),1),e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(g,p),e.lineTo(m,y),e.stroke()}return M||e.restore(),o&&!i&&e.clip(),S&&S.length>0&&e.setLineDash($),this.flagReset()}},"linear-gradient":{render:function(e){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var t=0;t1){var x=ne(v);g=(r*=x)*r,p=(s*=x)*s}var b=g*y+p*m,w=ne(Z(0,(g*p-b)/b));n===a&&(w=-w);var k=w*r*_/s,M=-w*s*u/r,S=re(o)*k-ie(o)*M+(t+l)/2,O=ie(o)*k+re(o)*M+(i+c)/2,R=le(1,0,(u-k)/r,(_-M)/s);!function(e,t,i,r,s,n,a,o,l){var c=T.Tolerance.epsilon,f=a-n,d=Math.abs(f)0&&"number"==typeof i.height&&i.height>0?r():ce.isHeadless||"function"!=typeof i.addEventListener||(i.addEventListener("load",r,!1),i.addEventListener("error",s,!1)),e._src=we.getAbsoluteURL(e._src),!ce.isHeadless&&i&&i.getAttribute("two-src")||(ce.isHeadless||i.setAttribute("two-src",e.src),we.ImageRegistry.add(e.src,i),ce.isHeadless?we.loadHeadlessBuffer(e,r):e.image.src=e.src)},video:function(e,t){if(ce.isHeadless)throw new ue("video textures are not implemented in headless environments.");var i=function(s){e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),e.image.width=e.image.videoWidth,e.image.height=e.image.videoHeight,"function"==typeof t&&t()},r=function(t){throw e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),new ue("unable to load "+e.src)};e._src=we.getAbsoluteURL(e._src),e.image.getAttribute("two-src")||(e.image.setAttribute("two-src",e.src),we.ImageRegistry.add(e.src,e.image)),e.image.readyState>=4?i():(e.image.addEventListener("canplaythrough",i,!1),e.image.addEventListener("error",r,!1),e.image.src=e.src,e.image.load())}},load:function(e,t){var i=e.image,r=we.getTag(i);e._flagImage&&(/canvas/i.test(r)?we.Register.canvas(e,t):(e._src=!ce.isHeadless&&i.getAttribute("two-src")||i.src,we.Register[r](e,t))),e._flagSrc&&(i||(i=we.getImage(e.src),e.image=i),r=we.getTag(i),we.Register[r](e,t))},FlagOffset:function(){this._flagOffset=!0},FlagScale:function(){this._flagScale=!0},MakeObservable:function(e){u.each(we.Properties,ge,e),Object.defineProperty(e,"image",{enumerable:!0,get:function(){return this._image},set:function(e){var t;switch(we.getTag(e)){case"canvas":t="#"+e.id;break;default:t=e.src}we.ImageRegistry.contains(t)?this._image=we.ImageRegistry.get(e.src):this._image=e,this._flagImage=!0}}),Object.defineProperty(e,"offset",{enumerable:!0,get:function(){return this._offset},set:function(e){this._offset&&this._offset.unbind(_.Types.change,this._renderer.flagOffset),this._offset=e,this._offset.bind(_.Types.change,this._renderer.flagOffset),this._flagOffset=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof y&&this._scale.unbind(_.Types.change,this._renderer.flagScale),this._scale=e,this._scale instanceof y&&this._scale.bind(_.Types.change,this._renderer.flagScale),this._flagScale=!0}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),u.extend(we.prototype,_,H.prototype,{constructor:we,_flagId:!1,_flagSrc:!1,_flagImage:!1,_flagVideo:!1,_flagLoaded:!1,_flagRepeat:!1,_flagOffset:!1,_flagScale:!1,_id:"",_src:"",_image:null,_loaded:!1,_repeat:"no-repeat",_scale:1,_offset:null,clone:function(){var e=new we(this.src);return e.repeat=this.repeat,e.offset.copy(this.origin),e.scale=this.scale,e},toObject:function(){return{src:this.src,repeat:this.repeat,origin:this.origin.toObject(),scale:"number"==typeof this.scale?this.scale:this.scale.toObject()}},_update:function(){return(this._flagSrc||this._flagImage)&&(this.trigger(_.Types.change),(this._flagSrc||this._flagImage)&&(this.loaded=!1,we.load(this,function(){this.loaded=!0,this.trigger(_.Types.change).trigger(_.Types.load)}.bind(this)))),this._image&&this._image.readyState>=4&&(this._flagVideo=!0),this},flagReset:function(){return this._flagSrc=this._flagImage=this._flagLoaded=this._flagVideo=this._flagScale=this._flagOffset=!1,this}}),we.MakeObservable(we.prototype);var ke=Math.min,Me=Math.max,Ae=Math.ceil,Se=Math.floor;function Te(e,t,i,r){H.call(this),this._renderer.type="path",this._renderer.flagVertices=Te.FlagVertices.bind(this),this._renderer.bindVertices=Te.BindVertices.bind(this),this._renderer.unbindVertices=Te.UnbindVertices.bind(this),this._renderer.flagFill=Te.FlagFill.bind(this),this._renderer.flagStroke=Te.FlagStroke.bind(this),this._renderer.vertices=[],this._renderer.collection=[],this._closed=!!t,this._curved=!!i,this.beginning=0,this.ending=1,this.fill="#fff",this.stroke="#000",this.linewidth=1,this.opacity=1,this.className="",this.visible=!0,this.cap="butt",this.join="miter",this.miter=4,this.vertices=e,this.automatic=!r,this.dashes=[],this.dashes.offset=0}function Oe(e,t){if(0===t||1===t)return!0;for(var i=e._length*t,r=0,s=0;s=i)return i-r>=0;r+=n}return!1}function Re(e,t){var i=e._length;if(t<=0)return 0;if(t>=i)return e._lengths.length-1;for(var r=0,s=0;r=t)return t-=s,Math.max(r-1,0)+t/e._lengths[r];s+=e._lengths[r]}return-1}function Fe(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),F(r,o,s,h,n,l,a,c,i)}function Ee(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),R(r,o,s,h,n,l,a,c,i)}function Pe(e,t,i,r){Te.call(this,[new w,new w,new w,new w],!0,!1,!0),this.width=i,this.height=r,this.origin=new y,this.translation.set(e,t),this._update()}function Ce(e,t,i,r,s,n){Te.call(this,[new w,new w,new w,new w],!0),this.noStroke(),this.noFill(),e instanceof we?this.texture=e:"string"==typeof e&&(this.texture=new we(e)),this.origin=new y,this._update(),this.translation.set(t||0,i||0),"number"==typeof r&&(this.columns=r),"number"==typeof s&&(this.rows=s),"number"==typeof n&&(this.frameRate=n),this.index=0}u.extend(Te,{Properties:["fill","stroke","linewidth","opacity","visible","cap","join","miter","closed","curved","automatic","beginning","ending"],Utils:{getCurveLength:Fe},FlagVertices:function(){this._flagVertices=!0,this._flagLength=!0,this.parent&&(this.parent._flagLength=!0)},BindVertices:function(e){for(var t=e.length;t--;)e[t].bind(_.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},UnbindVertices:function(e){for(var t=e.length;t--;)e[t].unbind(_.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},FlagFill:function(){this._flagFill=!0},FlagStroke:function(){this._flagStroke=!0},MakeObservable:function(e){H.MakeObservable(e),u.each(Te.Properties.slice(2,8),ge,e),Object.defineProperty(e,"fill",{enumerable:!0,get:function(){return this._fill},set:function(e){(this._fill instanceof ye||this._fill instanceof ve||this._fill instanceof xe||this._fill instanceof we)&&this._fill.unbind(_.Types.change,this._renderer.flagFill),this._fill=e,this._flagFill=!0,(this._fill instanceof ye||this._fill instanceof ve||this._fill instanceof xe||this._fill instanceof we)&&this._fill.bind(_.Types.change,this._renderer.flagFill)}}),Object.defineProperty(e,"stroke",{enumerable:!0,get:function(){return this._stroke},set:function(e){(this._stroke instanceof ye||this._stroke instanceof ve||this._stroke instanceof xe||this._stroke instanceof we)&&this._stroke.unbind(_.Types.change,this._renderer.flagStroke),this._stroke=e,this._flagStroke=!0,(this._stroke instanceof ye||this._stroke instanceof ve||this._stroke instanceof xe||this._stroke instanceof we)&&this._stroke.bind(_.Types.change,this._renderer.flagStroke)}}),Object.defineProperty(e,"length",{get:function(){return this._flagLength&&this._updateLength(),this._length}}),Object.defineProperty(e,"closed",{enumerable:!0,get:function(){return this._closed},set:function(e){this._closed=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"curved",{enumerable:!0,get:function(){return this._curved},set:function(e){this._curved=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"automatic",{enumerable:!0,get:function(){return this._automatic},set:function(e){if(e!==this._automatic){this._automatic=!!e;var t=this._automatic?"ignore":"listen";u.each(this.vertices,(function(e){e[t]()}))}}}),Object.defineProperty(e,"beginning",{enumerable:!0,get:function(){return this._beginning},set:function(e){this._beginning=e,this._flagVertices=!0}}),Object.defineProperty(e,"ending",{enumerable:!0,get:function(){return this._ending},set:function(e){this._ending=e,this._flagVertices=!0}}),Object.defineProperty(e,"vertices",{enumerable:!0,get:function(){return this._collection},set:function(e){var t=this._renderer.bindVertices,i=this._renderer.unbindVertices;this._collection&&this._collection.unbind(_.Types.insert,t).unbind(_.Types.remove,i),this._collection=e instanceof Y?e:new Y(e||[]),this._collection.bind(_.Types.insert,t).bind(_.Types.remove,i),t(this._collection)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask=e,this._flagMask=!0,e.clip||(e.clip=!0)}}),Object.defineProperty(e,"clip",{enumerable:!0,get:function(){return this._clip},set:function(e){this._clip=e,this._flagClip=!0}}),Object.defineProperty(e,"dashes",{enumerable:!0,get:function(){return this._dashes},set:function(e){"number"!=typeof e.offset&&(e.offset=this._dashes.offset||0),this._dashes=e}})}}),u.extend(Te.prototype,H.prototype,{constructor:Te,_flagVertices:!0,_flagLength:!0,_flagFill:!0,_flagStroke:!0,_flagLinewidth:!0,_flagOpacity:!0,_flagVisible:!0,_flagCap:!0,_flagJoin:!0,_flagMiter:!0,_flagMask:!1,_flagClip:!1,_length:0,_fill:"#fff",_stroke:"#000",_linewidth:1,_opacity:1,_visible:!0,_cap:"round",_join:"round",_miter:4,_closed:!0,_curved:!1,_automatic:!0,_beginning:0,_ending:1,_mask:null,_clip:!1,_dashes:[],clone:function(e){for(var t=new Te,i=0;i=b){this._closed?(r=h(T,k),s=h(T-1,k),0===T&&(r=s,s=T)):(r=T,s=Math.min(Math.max(T-1,0),M)),A=this.vertices[r],S=this.vertices[s],b-=F,e=0!==this._lengths[T]?b/this._lengths[T]:0;break}F+=this._lengths[T]}if(null===A||null===S)return null;if(!A)return S;if(!S)return A;x=S.controls&&S.controls.right,v=A.controls&&A.controls.left,l=S.x,g=S.y,c=(x||S).x,p=(x||S).y,f=(v||A).x,m=(v||A).y,d=A.x,y=A.y,x&&S.relative&&(c+=S.x,p+=S.y),v&&A.relative&&(f+=A.x,m+=A.y),a=O(e,l,c,f,d),_=O(e,g,p,m,y);var E=o(l,c,e),P=o(g,p,e),C=o(c,f,e),j=o(p,m,e),L=o(f,d,e),I=o(m,y,e),N=o(E,C,e),B=o(P,j,e),V=o(C,L,e),z=o(j,I,e);return u.isObject(i)?(i.x=a,i.y=_,u.isObject(i.controls)||w.AppendCurveProperties(i),i.controls.left.x=N,i.controls.left.y=B,i.controls.right.x=V,i.controls.right.y=z,("boolean"===(i.relative,!1)||i.relative)&&(i.controls.left.x-=a,i.controls.left.y-=_,i.controls.right.x-=a,i.controls.right.y-=_),i.t=e,i):((n=new w(a,_,N-a,B-_,V-a,z-_,this._curved?t.curve:t.line)).t=e,n)},plot:function(){if(this.curved)return C(this._collection,this.closed),this;for(var e=0;e0&&(n[n.length-1].command=t.line),void(r=a);var h=Ee(a,r,e);n=n.concat(h),u.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line})),o>=i&&(this._closed&&this._automatic?(h=Ee(a,r=a,e),n=n.concat(h),u.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line}))):s&&n.push(new w(a.x,a.y)),n[n.length-1].command=s?t.close:t.line),r=a}}),this),this._automatic=!1,this._curved=!1,this.vertices=n,this},_updateLength:function(e,i){i||this._update();var r=this.vertices.length,s=r-1,n=this.vertices[s],a=0;return void 0===this._lengths&&(this._lengths=[]),u.each(this.vertices,(function(i,r){if(r<=0||i.command===t.move)return n=i,void(this._lengths[r]=0);this._lengths[r]=Fe(i,n,e),a+=this._lengths[r],n=i}),this),this._length=a,this._flagLength=!1,this},_update:function(){if(this._flagVertices){this._automatic&&this.plot(),this._flagLength&&this._updateLength(void 0,!0);var e,i,r,s,n,a=this._collection.length,o=this._closed,h=Math.min(this._beginning,this._ending),l=Math.max(this._beginning,this._ending),c=Re(this,h*this._length),f=Re(this,l*this._length),d=Ae(c),u=Se(f);this._renderer.vertices.length=0;for(var _=0;_u&&!i?((n=this._renderer.collection[_]).copy(this._collection[_]),this.getPointAt(l,n),n.command=this._renderer.collection[_].command,this._renderer.vertices.push(n),i=n,(r=this._collection[_-1])&&r.controls&&(n.controls.right.clear(),this._renderer.collection[_-1].controls.right.clear().lerp(r.controls.right,n.t))):_>=d&&_<=u&&(n=this._renderer.collection[_].copy(this._collection[_]),this._renderer.vertices.push(n),_===u&&Oe(this,l)?(i=n,!o&&i.controls&&i.controls.right.clear()):_===d&&Oe(this,h)&&((e=n).command=t.move,!o&&e.controls&&e.controls.left.clear()));d>0&&!e&&(_=d-1,(n=this._renderer.collection[_]).copy(this._collection[_]),this.getPointAt(h,n),n.command=t.move,this._renderer.vertices.unshift(n),e=n,(s=this._collection[_+1])&&s.controls&&(n.controls.left.clear(),this._renderer.collection[_+1].controls.left.copy(s.controls.left).lerp(y.zero,n.t)))}return H.prototype._update.apply(this,arguments),this},flagReset:function(){return this._flagVertices=this._flagFill=this._flagStroke=this._flagLinewidth=this._flagOpacity=this._flagVisible=this._flagCap=this._flagJoin=this._flagMiter=this._flagClip=!1,H.prototype.flagReset.call(this),this}}),Te.MakeObservable(Te.prototype),u.extend(Pe,{Properties:["width","height"],MakeObservable:function(e){Te.MakeObservable(e),u.each(Pe.Properties,ge,e),Object.defineProperty(e,"origin",{enumerable:!0,get:function(){return this._origin},set:function(e){this._origin&&this._origin.unbind(_.Types.change,this._renderer.flagVertices),this._origin=e,this._origin.bind(_.Types.change,this._renderer.flagVertices),this._renderer.flagVertices()}})}}),u.extend(Pe.prototype,Te.prototype,{constructor:Pe,_flagWidth:0,_flagHeight:0,_width:0,_height:0,_origin:null,_update:function(){if(this._flagVertices||this._flagWidth||this._flagHeight){var e=this._width/2,i=this._height/2;this._closed||4!==this.vertices.length||this.vertices.push(new w),this.vertices[0].set(-e,-i).add(this._origin).command=t.move,this.vertices[1].set(e,-i).add(this._origin).command=t.line,this.vertices[2].set(e,i).add(this._origin).command=t.line,this.vertices[3].set(-e,i).add(this._origin).command=t.line,this.vertices[4]&&(this.vertices[4].set(-e,-i).add(this._origin).command=t.line)}return Te.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=!1,Te.prototype.flagReset.call(this),this},clone:function(e){var t=new Pe(0,0,this.width,this.height);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),u.each(Te.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Te.prototype.toObject.call(this);return e.width=this.width,e.height=this.height,e.origin=this.origin.toObject(),e}}),Pe.MakeObservable(Pe.prototype),u.extend(Ce,{Properties:["texture","columns","rows","frameRate","index"],MakeObservable:function(e){Pe.MakeObservable(e),u.each(Ce.Properties,ge,e)}}),u.extend(Ce.prototype,Pe.prototype,{constructor:Ce,_flagTexture:!1,_flagColumns:!1,_flagRows:!1,_flagFrameRate:!1,flagIndex:!1,_amount:1,_duration:0,_startTime:0,_playing:!1,_firstFrame:0,_lastFrame:0,_loop:!0,_texture:null,_columns:1,_rows:1,_frameRate:0,_index:0,_origin:null,play:function(e,t,i){return this._playing=!0,this._firstFrame=0,this._lastFrame=this.amount-1,this._startTime=u.performance.now(),"number"==typeof e&&(this._firstFrame=e),"number"==typeof t&&(this._lastFrame=t),"function"==typeof i?this._onLastFrame=i:delete this._onLastFrame,this._index!==this._firstFrame&&(this._startTime-=1e3*Math.abs(this._index-this._firstFrame)/this._frameRate),this},pause:function(){return this._playing=!1,this},stop:function(){return this._playing=!1,this._index=0,this},clone:function(e){var t=new Ce(this.texture,this.translation.x,this.translation.y,this.columns,this.rows,this.frameRate);return this.playing&&(t.play(this._firstFrame,this._lastFrame),t._loop=this._loop),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return e.texture=this.texture.toObject(),e.columns=this.columns,e.rows=this.rows,e.frameRate=this.frameRate,e.index=this.index,e._firstFrame=this._firstFrame,e._lastFrame=this._lastFrame,e._loop=this._loop,e},_update:function(){var e,t,i,r,s,n,a,h,l,c=this._texture,f=this._columns,d=this._rows;if((this._flagColumns||this._flagRows)&&(this._amount=this._columns*this._rows),this._flagFrameRate&&(this._duration=1e3*this._amount/this._frameRate),this._flagTexture&&(this.fill=this._texture),this._texture.loaded){e=(a=c.image.width)/f,t=(h=c.image.height)/d,r=this._amount,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this._playing&&this._frameRate>0&&(u.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=u.performance.now()-this._startTime,s=1e3*((l=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),n=o(this._firstFrame,l,i/s),(n=Math.floor(n))!==this._index&&(this._index=n,n>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()));var _=-e*(this._index%f)+(a-e)/2,g=-t*Math.floor(this._index/f)+(h-t)/2;_!==c.offset.x&&(c.offset.x=_),g!==c.offset.y&&(c.offset.y=g)}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagTexture=this._flagColumns=this._flagRows=this._flagFrameRate=!1,Pe.prototype.flagReset.call(this),this}}),Ce.MakeObservable(Ce.prototype);var je=2*Math.PI,Le=Math.PI/2,Ie=Math.cos,Ne=Math.sin;function Be(e,t,i,r){for(var s=r?Math.max(r,2):4,n=[],a=0;a2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*e)),r=this._radius,s=r*i,n=0;n2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*this.vertices.length)),r=this._width/2,s=this._height/2,n=0;n=0&&t.splice(n,1)}return t},it=function(e,t){var i=t.split(/\s/),r=parseFloat(i[0]),s=parseFloat(i[1]),n=parseFloat(i[2]),a=parseFloat(i[3]),o=Math.min(this.width/n,this.height/a);return e.translation.x-=r*o,e.translation.y-=s*o,e.scale=o,e},rt=function(e,t,i){var n,a,o,h,l,c,f,d,_,g,p,m={},v={},x={};if(r.getComputedStyle){var b=r.getComputedStyle(e);for(n=b.length;n--;)void 0!==(h=b[o=b[n]])&&(m[o]=h)}for(n=0;n0?e.gradientTransform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;switch(c=s(a),t._renderer.type){case"linear-gradient":Qe(c,t.left),Qe(c,t.right);break;case"radial-gradient":t.center.x+=c.translateX,t.center.y+=c.translateY,t.focal.x+=c.translateX,t.focal.y+=c.translateY,t.radius*=Math.max(c.scaleX,c.scaleY)}break;case"transform":if(/none/i.test(h))break;if(null===(a=e.transform&&e.transform.baseVal&&e.transform.baseVal.length>0?e.transform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;A.AutoCalculateImportedMatrices?(c=s(a),t.translation.set(c.translateX,c.translateY),t.rotation=Math.PI*(c.rotation/180),t.scale=new y(c.scaleX,c.scaleY),f=parseFloat((m.x+"").replace("px")),d=parseFloat((m.y+"").replace("px")),f&&(t.translation.x=f),d&&(t.translation.y=d)):(a=e.getCTM(),t._matrix.manual=!0,t._matrix.set(a.a,a.b,a.c,a.d,a.e,a.f));break;case"viewBox":it.call(this,t,h);break;case"visible":if(t instanceof K){t._visible=h;break}t.visible=h;break;case"stroke-linecap":if(t instanceof K){t._cap=h;break}t.cap=h;break;case"stroke-linejoin":if(t instanceof K){t._join=h;break}t.join=h;break;case"stroke-miterlimit":if(t instanceof K){t._miter=h;break}t.miter=h;break;case"stroke-width":if(t instanceof K){t._linewidth=parseFloat(h);break}t.linewidth=parseFloat(h);break;case"opacity":case"stroke-opacity":case"fill-opacity":if(t instanceof K){t._opacity=parseFloat(h);break}t.opacity=parseFloat(h);break;case"clip-path":if(/url\(#.*\)/i.test(h)&&(_=h.replace(/url\(#(.*)\)/i,"$1"),at.defs.current&&at.defs.current.contains(_)&&(g=at.defs.current.get(_))&&g.childNodes.length>0))switch(g=g.childNodes[0],p=$e(g.nodeName),t.mask=at[p].call(this,g,{}),t._renderer.type){case"path":t.position.add(t.mask.position),t.mask.position.clear()}break;case"fill":case"stroke":t instanceof K&&(o="_"+o),/url\(#.*\)/i.test(h)?(_=h.replace(/url\(#(.*)\)/i,"$1"),at.defs.current&&at.defs.current.contains(_)?(g=at.defs.current.get(_),p=$e(g.nodeName),g=at[p].call(this,g,{})):g=nt(this).getById(_),t[o]=g):t[o]=/none/i.test(h)?"transparent":h;break;case"id":t.id=h,e.id=h+"-"+A.Identifier+"applied";break;case"class":case"className":t.classList=h.split(" ");break;case"x":case"y":if(t instanceof ye||t instanceof ve||t instanceof xe)break;if(h.match("[a-z%]$")&&!h.endsWith("px")){var w=new ue("only pixel values are supported with the "+o+" attribute.");console.warn(w.name,w.message)}t.translation[o]=parseFloat(h);break;case"font-family":t instanceof qe&&(t.family=h);break;case"font-size":t instanceof qe&&(t.size=h);break;case"font-weight":t instanceof qe&&(t.weight=h);break;case"font-style":t instanceof qe&&(t.style=h);break;case"text-decoration":t instanceof qe&&(t.decoration=h);break;case"line-height":t instanceof qe&&(t.leading=h)}return m},st=function(e,t){for(var i=0,r=e.childNodes.length;i with no href."),console.warn(i.name,i.message),null;var s=r.slice(1);if(!at.defs.current.contains(s))return i=new ue("unable to find element for reference "+r+"."),console.warn(i.name,i.message),null;for(var n=at.defs.current.get(s).cloneNode(!0),a=["x","y","width","height","href","xlink:href"],o=0;o1&&(i=1);break;case"m":case"l":case"t":o.length>2&&(i=2);break;case"s":case"q":o.length>4&&(i=4);break;case"c":o.length>6&&(i=6);break;case"a":o.length>7&&(i=7)}if(i){for(r=0,s=o.length,a=0;r0)switch(h){case"m":n="l";break;case"M":n="L"}f.push(n+o.slice(r,r+i).join(" ")),a++}c=Array.prototype.concat.apply(c,f)}else c.push(e)})),u.each(c,(function(e,i){var r,c,d,_,g,p,m,v,x,b,k=e[0],M=k.toLowerCase();switch(h=e.slice(1).trim().match(Ke),a=k===M,M){case"z":if(i>=f)n=!0;else{r=new w(l.x,l.y,void 0,void 0,void 0,void 0,t.close);for(var A=s.length-1;A>=0;A--){var S=s[A];if(/m/i.test(S.command)){l=S;break}}}break;case"m":case"l":o=void 0,r=new w(parseFloat(h[0]),parseFloat(h[1]),void 0,void 0,void 0,void 0,/m/i.test(M)?t.move:t.line),a&&r.addSelf(l),l=r;break;case"h":case"v":var T=/h/i.test(M)?"x":"y",O=/x/i.test(T)?"y":"x";(r=new w(void 0,void 0,void 0,void 0,void 0,void 0,t.line))[T]=parseFloat(h[0]),r[O]=l[O],a&&(r[T]+=l[T]),l=r;break;case"c":case"s":c=l.x,d=l.y,o||(o=new y),/c/i.test(M)?(_=parseFloat(h[0]),g=parseFloat(h[1]),p=parseFloat(h[2]),m=parseFloat(h[3]),v=parseFloat(h[4]),x=parseFloat(h[5])):(_=(b=L(l,o,a)).x,g=b.y,p=parseFloat(h[0]),m=parseFloat(h[1]),v=parseFloat(h[2]),x=parseFloat(h[3])),a&&(_+=c,g+=d,p+=c,m+=d,v+=c,x+=d),u.isObject(l.controls)||w.AppendCurveProperties(l),l.controls.right.set(_-l.x,g-l.y),r=new w(v,x,p-v,m-x,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"t":case"q":c=l.x,d=l.y,o||(o=new y),/q/i.test(M)?(_=parseFloat(h[0]),g=parseFloat(h[1]),p=parseFloat(h[0]),m=parseFloat(h[1]),v=parseFloat(h[2]),x=parseFloat(h[3])):(_=(b=L(l,o,a)).x,g=b.y,p=b.x,m=b.y,v=parseFloat(h[0]),x=parseFloat(h[1])),a&&(_+=c,g+=d,p+=c,m+=d,v+=c,x+=d),u.isObject(l.controls)||w.AppendCurveProperties(l),l.controls.right.set(.33*(_-l.x),.33*(g-l.y)),r=new w(v,x,p-v,m-x,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"a":c=l.x,d=l.y;var R=parseFloat(h[0]),F=parseFloat(h[1]),E=parseFloat(h[2]),P=parseFloat(h[3]),C=parseFloat(h[4]);v=parseFloat(h[5]),x=parseFloat(h[6]),a&&(v+=c,x+=d);var j=new w(v,x);j.command=t.arc,j.rx=R,j.ry=F,j.xAxisRotation=E,j.largeArcFlag=P,j.sweepFlag=C,r=j,l=j,o=void 0}r&&(Array.isArray(r)?s=s.concat(r):s.push(r))}))}(r=new Te(s,n,void 0,!0).noStroke()).fill="black";var d=r.getBoundingClientRect(!0);return d.centroid={x:d.left+d.width/2,y:d.top+d.height/2},u.each(r.vertices,(function(e){e.subSelf(d.centroid)})),rt.call(this,e,r,i),r.translation.addSelf(d.centroid),r},circle:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new Be(0,0,parseFloat(e.getAttribute("r"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},ellipse:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new De(0,0,parseFloat(e.getAttribute("rx")),parseFloat(e.getAttribute("ry"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},rect:function(e,t){var i=parseFloat(e.getAttribute("rx")),r=parseFloat(e.getAttribute("ry"));if(!u.isNaN(i)||!u.isNaN(r))return at["rounded-rect"](e);var s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new Pe(0,0,s,n).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},"rounded-rect":function(e,t){var i=parseFloat(e.getAttribute("rx"))||0,r=parseFloat(e.getAttribute("ry"))||0,s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new Ye(0,0,s,n,new y(i,r)).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},line:function(e,t){var i=new He(parseFloat(e.getAttribute("x1")),parseFloat(e.getAttribute("y1")),parseFloat(e.getAttribute("x2")),parseFloat(e.getAttribute("y2"))).noFill();return rt.call(this,e,i,t),i},lineargradient:function(e,t){for(var i=parseFloat(e.getAttribute("x1")),r=parseFloat(e.getAttribute("y1")),s=parseFloat(e.getAttribute("x2")),n=parseFloat(e.getAttribute("y2")),a=(s+i)/2,o=(n+r)/2,h=[],l=0;l1?d[1]:void 0),_=null===_?(d=!!g&&g.match(/stop-opacity:\s?([0-9.-]*)/))&&d.length>1?parseFloat(d[1]):1:parseFloat(_),h.push(new me(f,u,_))}var p=new ve(i-a,r-o,s-a,n-o,h);return rt.call(this,e,p,t),p},radialgradient:function(e,t){var i=parseFloat(e.getAttribute("cx"))||0,r=parseFloat(e.getAttribute("cy"))||0,s=parseFloat(e.getAttribute("r")),n=parseFloat(e.getAttribute("fx")),a=parseFloat(e.getAttribute("fy"));u.isNaN(n)&&(n=i),u.isNaN(a)&&(a=r);for(var o=Math.abs(i+n)/2,h=Math.abs(r+a)/2,l=[],c=0;c1?_[1]:void 0),p=null===p?(_=!!m&&m.match(/stop-opacity:\s?([0-9.-]*)/))&&_.length>1?parseFloat(_[1]):1:parseFloat(p),l.push(new me(d,g,p))}var y=new xe(i-o,r-h,s,l,n-o,a-h);return rt.call(this,e,y,t),y},text:function(e,t){var i=function(e){return Je[e]}(e.getAttribute("text-anchor"))||"left",r=function(e){var t=e.getAttribute("dominant-baseline"),i=e.getAttribute("alignment-baseline");return t||i}(e)||"baseline",s=new qe(e.textContent);return rt.call(this,e,s,t),s.alignment=i,s.baseline=r,s},clippath:function(e,t){return at.defs.current&&!at.defs.current.contains(e.id)&&at.defs.current.add(e.id,e),null},image:function(e,t){var i=e.getAttribute("href")||e.getAttribute("xlink:href");if(!i){var r=new ue("encountered with no href.");return console.warn(r.name,r.message),null}var s=parseFloat(e.getAttribute("x"))||0,n=parseFloat(e.getAttribute("y"))||0,a=parseFloat(e.getAttribute("width")),o=parseFloat(e.getAttribute("height")),h=new Ce(i,s,n);return u.isNaN(a)||(h.width=a),u.isNaN(o)||(h.height=o),rt.call(this,e,h,t),h}};function ot(e,t){var i=new XMLHttpRequest;return i.open("GET",e),i.onreadystatechange=function(){4===i.readyState&&200===i.status&&t(i.responseText)},i.send(),i}function ht(e,t,i,r){Te.call(this,[new w,new w,new w,new w],!0),this._renderer.flagTextures=ht.FlagTextures.bind(this),this._renderer.bindTextures=ht.BindTextures.bind(this),this._renderer.unbindTextures=ht.UnbindTextures.bind(this),this.noStroke(),this.noFill(),Array.isArray(e)?this.textures=e.map(ht.GenerateTexture.bind(this)):this.textures=[ht.GenerateTexture(e)],this.origin=new y,this._update(),this.translation.set(t||0,i||0),this.frameRate="number"==typeof r?r:ht.DefaultFrameRate,this.index=0}u.extend(ht,{Properties:["frameRate","index"],DefaultFrameRate:30,FlagTextures:function(){this._flagTextures=!0},BindTextures:function(e){for(var t=e.length;t--;)e[t].bind(_.Types.change,this._renderer.flagTextures);this._renderer.flagTextures()},UnbindTextures:function(e){for(var t=e.length;t--;)e[t].unbind(_.Types.change,this._renderer.flagTextures);this._renderer.flagTextures()},MakeObservable:function(e){Pe.MakeObservable(e),u.each(ht.Properties,ge,e),Object.defineProperty(e,"textures",{enumerable:!0,get:function(){return this._textures},set:function(e){var t=this._renderer.bindTextures,i=this._renderer.unbindTextures;this._textures&&this._textures.unbind(_.Types.insert,t).unbind(_.Types.remove,i),this._textures=new Y((e||[]).slice(0)),this._textures.bind(_.Types.insert,t).bind(_.Types.remove,i),t(this._textures)}})},GenerateTexture:function(e){return e instanceof we?e:"string"==typeof e?new we(e):void 0}}),u.extend(ht.prototype,Pe.prototype,{constructor:ht,_flagTextures:!1,_flagFrameRate:!1,_flagIndex:!1,_amount:1,_duration:0,_index:0,_startTime:0,_playing:!1,_firstFrame:0,_lastFrame:0,_loop:!0,_textures:null,_frameRate:0,_origin:null,play:function(e,t,i){return this._playing=!0,this._firstFrame=0,this._lastFrame=this.amount-1,this._startTime=u.performance.now(),"number"==typeof e&&(this._firstFrame=e),"number"==typeof t&&(this._lastFrame=t),"function"==typeof i?this._onLastFrame=i:delete this._onLastFrame,this._index!==this._firstFrame&&(this._startTime-=1e3*Math.abs(this._index-this._firstFrame)/this._frameRate),this},pause:function(){return this._playing=!1,this},stop:function(){return this._playing=!1,this._index=this._firstFrame,this},clone:function(e){var t=new ht(this.textures,this.translation.x,this.translation.y,this.frameRate);return t._loop=this._loop,this._playing&&t.play(),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return e.textures=this.textures.map((function(e){return e.toObject()})),e.frameRate=this.frameRate,e.index=this.index,e._firstFrame=this._firstFrame,e._lastFrame=this._lastFrame,e._loop=this._loop,e},_update:function(){var e,t,i,r,s,n,a,h,l=this._textures;return this._flagTextures&&(this._amount=l.length),this._flagFrameRate&&(this._duration=1e3*this._amount/this._frameRate),this._playing&&this._frameRate>0?(r=this._amount,u.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=u.performance.now()-this._startTime,s=1e3*((h=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),a=o(this._firstFrame,h,i/s),(a=Math.floor(a))!==this._index&&(this._index=a,(n=l[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this.fill=n,a>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()))):!this._flagIndex&&this.fill instanceof we||((n=l[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t)),this.fill=n),Pe.prototype._update.call(this),this},flagReset:function(){return this._flagTextures=this._flagFrameRate=!1,Pe.prototype.flagReset.call(this),this}}),ht.MakeObservable(ht.prototype);var lt=2*Math.PI,ct=Math.PI/2;function ft(e,t,i,r,s,n,a){for(var o=a||3*A.Resolution,h=[],l=0;l0,l=this.vertices,c=o?l.length/2:l.length,f=0;a?c--:o||(c-=2);for(var d=0,u=c-1;de&&(this.vertices.splice(e-1,r-e),r=e);for(var s=0;s=r?this.vertices.push(new w(a,o)):this.vertices[s].set(a,o),this.vertices[s].command=0===s?t.move:t.line}}return Te.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=this._flagSides=!1,Te.prototype.flagReset.call(this),this},clone:function(e){var t=new gt(0,0,this.radius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),u.each(Te.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Te.prototype.toObject.call(this);return u.each(gt.Properties,(function(t){e[t]=this[t]}),this),e}}),gt.MakeObservable(gt.prototype);var pt=2*Math.PI,mt=Math.cos,yt=Math.sin;function vt(e,t,i,r,s){arguments.length<=3&&(i=(r=i)/2),("number"!=typeof s||s<=0)&&(s=5),Te.call(this),this.closed=!0,this.automatic=!1,"number"==typeof i&&(this.innerRadius=i),"number"==typeof r&&(this.outerRadius=r),"number"==typeof s&&(this.sides=s),this._update(),"number"==typeof e&&(this.translation.x=e),"number"==typeof t&&(this.translation.y=t)}u.extend(vt,{Properties:["innerRadius","outerRadius","sides"],MakeObservable:function(e){Te.MakeObservable(e),u.each(vt.Properties,ge,e)}}),u.extend(vt.prototype,Te.prototype,{constructor:vt,_flagInnerRadius:!1,_flagOuterRadius:!1,_flagSides:!1,_innerRadius:0,_outerRadius:0,_sides:0,_update:function(){if(this._flagVertices||this._flagInnerRadius||this._flagOuterRadius||this._flagSides){var e=2*this._sides,i=e+1,r=this.vertices.length;r>e&&(this.vertices.splice(e-1,r-e),r=e);for(var s=0;s=r?this.vertices.push(new w(o,h)):this.vertices[s].set(o,h),this.vertices[s].command=0===s?t.move:t.line}}return Te.prototype._update.call(this),this},flagReset:function(){return this._flagInnerRadius=this._flagOuterRadius=this._flagSides=!1,Te.prototype.flagReset.call(this),this},clone:function(e){var t=new vt(0,0,this.innerRadius,this.outerRadius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),u.each(Te.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Te.prototype.toObject.call(this);return u.each(vt.Properties,(function(t){e[t]=this[t]}),this),e}}),vt.MakeObservable(vt.prototype);var xt={version:1.1,ns:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",alignments:{left:"start",center:"middle",right:"end"},createElement:function(e,t){var i=e,r=document.createElementNS(xt.ns,i);return"svg"===i&&(t=u.defaults(t||{},{version:xt.version})),t&&Object.keys(t).length>0&&xt.setAttributes(r,t),r},setAttributes:function(e,t){for(var i=Object.keys(t),r=0;r=n&&i&&(A.command===t.curve&&(R=r,m=A.controls&&A.controls.right||A,v=R.controls&&R.controls.left||R,A.relative?(f=c(m.x+A.x),d=c(m.y+A.y)):(f=c(m.x),d=c(m.y)),R.relative?(u=c(v.x+R.x),_=c(v.y+R.y)):(u=c(v.x),_=c(v.y)),l+=" C "+f+" "+d+" "+u+" "+_+" "+(F=c(R.x))+" "+(E=c(R.y))),A.command!==t.close&&(l+=" Z")),a+=l+" "}return a},getClip:function(e,t){var i=e._renderer.clip;return i||(i=e._renderer.clip=xt.createElement("clipPath",{"clip-rule":"nonzero"}),t.defs.appendChild(i)),i},group:{appendChild:function(e){var t=e._renderer.elem;if(t){var i=t.nodeName;!i||/(radial|linear)gradient/i.test(i)||e._clip||this.elem.appendChild(t)}},removeChild:function(e){var t=e._renderer.elem;t&&t.parentNode==this.elem&&(t.nodeName&&(e._clip||this.elem.removeChild(t)))},orderChild:function(e){this.elem.appendChild(e._renderer.elem)},renderChild:function(e){xt[e._renderer.type].render.call(e,this)},render:function(e){if(!this._visible&&!this._flagVisible||0===this._opacity&&!this._flagOpacity)return this;this._update(),this._renderer.elem||(this._renderer.elem=xt.createElement("g",{id:this.id}),e.appendChild(this._renderer.elem));var t=this._matrix.manual||this._flagMatrix,i={domElement:e,elem:this._renderer.elem};t&&this._renderer.elem.setAttribute("transform","matrix("+this._matrix.toString()+")");for(var r=0;r0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?xt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=xt.createElement("path",t),e.appendChild(this._renderer.elem)),this._flagClip){var r=xt.getClip(this,e),s=this._renderer.elem;this._clip?(s.removeAttribute("id"),r.setAttribute("id",this.id),r.appendChild(s)):(r.removeAttribute("id"),s.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(s))}return this._flagMask&&(this._mask?(xt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this.flagReset()}},text:{render:function(e){this._update();var t={};if((this._matrix.manual||this._flagMatrix)&&(t.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(t.id=this._id),this._flagFamily&&(t["font-family"]=this._family),this._flagSize&&(t["font-size"]=this._size),this._flagLeading&&(t["line-height"]=this._leading),this._flagAlignment&&(t["text-anchor"]=xt.alignments[this._alignment]||this._alignment),this._flagBaseline&&(t["alignment-baseline"]=t["dominant-baseline"]=this._baseline),this._flagStyle&&(t["font-style"]=this._style),this._flagWeight&&(t["font-weight"]=this._weight),this._flagDecoration&&(t["text-decoration"]=this._decoration),this._fill&&this._fill._renderer&&(this._fill._update(),xt[this._fill._renderer.type].render.call(this._fill,e,!0)),this._flagFill&&(t.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill),this._stroke&&this._stroke._renderer&&(this._stroke._update(),xt[this._stroke._renderer.type].render.call(this._stroke,e,!0)),this._flagStroke&&(t.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke),this._flagLinewidth&&(t["stroke-width"]=this._linewidth),this._flagOpacity&&(t.opacity=this._opacity),this._flagClassName&&(t.class=this.classList.join(" ")),this._flagVisible&&(t.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?xt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=xt.createElement("text",t),e.defs.appendChild(this._renderer.elem)),this._flagClip){var i=xt.getClip(this,e),r=this._renderer.elem;this._clip?(r.removeAttribute("id"),i.setAttribute("id",this.id),i.appendChild(r)):(i.removeAttribute("id"),r.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(r))}return this._flagMask&&(this._mask?(xt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this._flagValue&&(this._renderer.elem.textContent=this._value),this.flagReset()}},"linear-gradient":{render:function(e,t){t||this._update();var i={};if(this._flagId&&(i.id=this._id),this._flagEndPoints&&(i.x1=this.left._x,i.y1=this.left._y,i.x2=this.right._x,i.y2=this.right._y),this._flagSpread&&(i.spreadMethod=this._spread),this._renderer.elem?xt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.gradientUnits="userSpaceOnUse",this._renderer.elem=xt.createElement("linearGradient",i),e.defs.appendChild(this._renderer.elem)),this._flagStops){var r=this._renderer.elem.childNodes.length!==this.stops.length;if(r)for(;this._renderer.elem.lastChild;)this._renderer.elem.removeChild(this._renderer.elem.lastChild);for(var s=0;s0&&(i.x*=-1),i.y>0&&(i.y*=-1)),(this._flagScale||this._flagLoaded||this._flagRepeat)&&(i.width=0,i.height=0,s)){switch(r.width=i.width=s.width,r.height=i.height=s.height,this._repeat){case"no-repeat":i.width+=1,i.height+=1}this._scale instanceof y?(i.width*=this._scale.x,i.height*=this._scale.y):(i.width*=this._scale,i.height*=this._scale)}return(this._flagScale||this._flagLoaded)&&(this._renderer.image?xt.setAttributes(this._renderer.image,r):this._renderer.image=xt.createElement("image",r)),this._renderer.elem?0!==Object.keys(i).length&&xt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.patternUnits="userSpaceOnUse",this._renderer.elem=xt.createElement("pattern",i),e.defs.appendChild(this._renderer.elem)),this._renderer.elem&&this._renderer.image&&!this._renderer.appended&&(this._renderer.elem.appendChild(this._renderer.image),this._renderer.appended=!0),this.flagReset()}}};function bt(e){this.domElement=e.domElement||xt.createElement("svg"),this.scene=new K,this.scene.parent=this,this.defs=xt.createElement("defs"),this.domElement.appendChild(this.defs),this.domElement.defs=this.defs,this.domElement.style.overflow="hidden"}u.extend(bt,{Utils:xt}),u.extend(bt.prototype,_,{constructor:bt,setSize:function(e,t){return this.width=e,this.height=t,xt.setAttributes(this.domElement,{width:e,height:t}),this.trigger(_.Types.resize,e,t)},render:function(){return xt.group.render.call(this.scene,this.domElement),this}});var wt=D.Multiply,kt=[1,0,0,0,1,0,0,0,1],Mt=new l(9),At=he.Utils,St={isHidden:/(undefined|none|transparent)/i,canvas:r.document?r.document.createElement("canvas"):{getContext:function(){}},alignments:{left:"start",middle:"center",right:"end"},matrix:new D,group:{removeChild:function(e,t){if(e.children)for(var i=0;i0&&(b.lineDashOffset=E.offset||0,b.setLineDash(E)),b.save(),b.scale(w.x,w.y),b.translate(I,N),b.beginPath();for(var B=0;B=C&&F&&(n=j,u=V.controls&&V.controls.right||y.zero,_=n.controls&&n.controls.left||y.zero,V._relative?(l=u.x+V.x,c=u.y+V.y):(l=u.x,c=u.y),n._relative?(a=_.x+n.x,o=_.y+n.y):(a=_.x,o=_.y),g=n.x,p=n.y,b.bezierCurveTo(l,c,a,o,g,p));break;case t.line:b.lineTo(g,p);break;case t.move:j=V,b.moveTo(g,p)}}F&&b.closePath(),St.isHidden.test(A)||((m=A._renderer&&A._renderer.offset)&&(b.save(),b.translate(-A._renderer.offset.x,-A._renderer.offset.y),b.scale(A._renderer.scale.x,A._renderer.scale.y)),b.fill(),m&&b.restore()),St.isHidden.test(k)||((m=k._renderer&&k._renderer.offset)&&(b.save(),b.translate(-k._renderer.offset.x,-k._renderer.offset.y),b.scale(k._renderer.scale.x,k._renderer.scale.y),b.lineWidth=M/k._renderer.scale.x),b.stroke(),m&&b.restore()),b.restore()},getBoundingClientRect:function(e,t,i){var r,s,n=1/0,a=-1/0,o=1/0,h=-1/0;e.forEach((function(e){var t,i,r,s,l,c,f=e.x,d=e.y,u=e.controls;o=Math.min(d,o),n=Math.min(f,n),a=Math.max(f,a),h=Math.max(d,h),e.controls&&(l=u.left,c=u.right,l&&c&&(t=e._relative?l.x+f:l.x,i=e._relative?l.y+d:l.y,r=e._relative?c.x+f:c.x,s=e._relative?c.y+d:c.y,t&&i&&r&&s&&(o=Math.min(i,s,o),n=Math.min(t,r,n),a=Math.max(t,r,a),h=Math.max(i,s,h))))})),"number"==typeof t&&(o-=t,n-=t,a+=t,h+=t),r=a-n,s=h-o,i.top=o,i.left=n,i.right=a,i.bottom=h,i.width=r,i.height=s,i.centroid||(i.centroid={}),i.centroid.x=-n,i.centroid.y=-o},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=r._matrix.manual||r._flagMatrix,n=this._matrix.manual||this._flagMatrix,a=this._renderer.parent!==r,o=this._flagVertices||this._flagFill||this._fill instanceof ve&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof xe&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof we&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof ve&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof xe&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof we&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagCap||this._flagJoin||this._flagMiter||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((s||n||a)&&(this._renderer.matrix||(this._renderer.matrix=new l(9)),this._matrix.toTransformArray(!0,Mt),wt(Mt,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof y||(this._renderer.scale=new y),this._scale instanceof y?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),a&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),St[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),o?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,St.path.getBoundingClientRect(this._renderer.vertices,this._linewidth,this._renderer.rect),St.updateTexture.call(St,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),!this._clip||i){e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var h=this._renderer.rect;return e.uniformMatrix3fv(t.matrix,!1,this._renderer.matrix),e.uniform4f(t.rect,h.left,h.top,h.right,h.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}}},text:{updateCanvas:function(e){var t=this.canvas,i=this.ctx,r=e._renderer.scale,s=e._stroke,n=e._linewidth*r,a=e._fill,o=e._renderer.opacity||e._opacity,h=e.dashes,l=e._decoration;t.width=Math.max(Math.ceil(e._renderer.rect.width*r.x),1),t.height=Math.max(Math.ceil(e._renderer.rect.height*r.y),1);var c,f,d,u,_,g,p,m,y,v,x,b=e._renderer.rect.centroid,w=b.x,k=b.y,M=a._renderer&&a._renderer.offset&&s._renderer&&s._renderer.offset;if(i.clearRect(0,0,t.width,t.height),M||(i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" ")),i.textAlign="center",i.textBaseline="middle",a&&("string"==typeof a?i.fillStyle=a:(St[a._renderer.type].render.call(a,i,e),i.fillStyle=a._renderer.effect)),s&&("string"==typeof s?i.strokeStyle=s:(St[s._renderer.type].render.call(s,i,e),i.strokeStyle=s._renderer.effect),n&&(i.lineWidth=n)),"number"==typeof o&&(i.globalAlpha=o),h&&h.length>0&&(i.lineDashOffset=h.offset||0,i.setLineDash(h)),i.save(),i.scale(r.x,r.y),i.translate(w,k),St.isHidden.test(a)||(a._renderer&&a._renderer.offset?(g=a._renderer.scale.x,p=a._renderer.scale.y,i.save(),i.translate(-a._renderer.offset.x,-a._renderer.offset.y),i.scale(g,p),c=e._size/a._renderer.scale.y,f=e._leading/a._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=a._renderer.offset.x/a._renderer.scale.x,u=a._renderer.offset.y/a._renderer.scale.y,i.fillText(e.value,d,u),i.restore()):i.fillText(e.value,0,0)),St.isHidden.test(s)||(s._renderer&&s._renderer.offset?(g=s._renderer.scale.x,p=s._renderer.scale.y,i.save(),i.translate(-s._renderer.offset.x,-s._renderer.offset.y),i.scale(g,p),c=e._size/s._renderer.scale.y,f=e._leading/s._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=s._renderer.offset.x/s._renderer.scale.x,u=s._renderer.offset.y/s._renderer.scale.y,_=n/s._renderer.scale.x,i.lineWidth=_,i.strokeText(e.value,d,u),i.restore()):i.strokeText(e.value,0,0)),/(underline|strikethrough)/i.test(l)){var A=i.measureText(e.value);switch(l){case"underline":y=A.actualBoundingBoxAscent,x=A.actualBoundingBoxAscent;break;case"strikethrough":y=0,x=0}m=-A.width/2,v=A.width/2,i.lineWidth=Math.max(Math.floor(e._size/15),1),i.strokeStyle=i.fillStyle,i.beginPath(),i.moveTo(m,y),i.lineTo(v,x),i.stroke()}i.restore()},getBoundingClientRect:function(e,t){var i=St.ctx;i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" "),i.textAlign="center",i.textBaseline=e._baseline;var r=1.25*i.measureText(e._value).width,s=1.25*Math.max(e._size,e._leading);this._linewidth&&!St.isHidden.test(this._stroke)&&(r+=2*this._linewidth,s+=2*this._linewidth);var n=r/2,a=s/2;switch(St.alignments[e._alignment]||e._alignment){case St.alignments.left:t.left=0,t.right=r;break;case St.alignments.right:t.left=-r,t.right=0;break;default:t.left=-n,t.right=n}switch(e._baseline){case"bottom":t.top=-s,t.bottom=0;break;case"top":t.top=0,t.bottom=s;break;default:t.top=-a,t.bottom=a}t.width=r,t.height=s,t.centroid||(t.centroid={}),t.centroid.x=n,t.centroid.y=a},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=r._matrix.manual||r._flagMatrix,n=this._matrix.manual||this._flagMatrix,a=this._renderer.parent!==r,o=this._flagVertices||this._flagFill||this._fill instanceof ve&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof xe&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof we&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof ve&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof xe&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof we&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this._flagValue||this._flagFamily||this._flagSize||this._flagLeading||this._flagAlignment||this._flagBaseline||this._flagStyle||this._flagWeight||this._flagDecoration||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((s||n||a)&&(this._renderer.matrix||(this._renderer.matrix=new l(9)),this._matrix.toTransformArray(!0,Mt),wt(Mt,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof y||(this._renderer.scale=new y),this._scale instanceof y?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),a&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),St[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),o?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,St.text.getBoundingClientRect(this,this._renderer.rect),St.updateTexture.call(St,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),!this._clip||i){e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var h=this._renderer.rect;return e.uniformMatrix3fv(t.matrix,!1,this._renderer.matrix),e.uniform4f(t.rect,h.left,h.top,h.right,h.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}}},"linear-gradient":{render:function(e,t){if(e.canvas.getContext("2d")){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var i=0;i