@joint/core 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -5
- package/dist/geometry.js +1 -1
- package/dist/geometry.min.js +1 -1
- package/dist/joint.d.ts +23 -13
- package/dist/joint.js +543 -198
- package/dist/joint.min.js +2 -2
- package/dist/joint.nowrap.js +543 -198
- package/dist/joint.nowrap.min.js +2 -2
- package/dist/vectorizer.js +5 -1
- package/dist/vectorizer.min.js +2 -2
- package/dist/version.mjs +1 -1
- package/package.json +2 -2
- package/src/V/index.mjs +4 -0
- package/src/dia/Paper.mjs +2 -0
- package/src/dia/attributes/text.mjs +8 -4
- package/src/routers/rightAngle.mjs +486 -153
- package/types/joint.d.ts +22 -12
package/dist/vectorizer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! JointJS v4.0.
|
|
1
|
+
/*! JointJS v4.0.2 (2024-04-09) - JavaScript diagramming library
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
@@ -8782,6 +8782,10 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
8782
8782
|
var ry2 = ry * ry;
|
|
8783
8783
|
|
|
8784
8784
|
var k = ((large_arc_flag == sweep_flag) ? -1 : 1) * sqrt(abs(((rx2 * ry2) - (rx2 * y * y) - (ry2 * x * x)) / ((rx2 * y * y) + (ry2 * x * x))));
|
|
8785
|
+
if (!Number.isFinite(k)) {
|
|
8786
|
+
// Arc is a single point
|
|
8787
|
+
return [x1, y1, x2, y2, x2, y2];
|
|
8788
|
+
}
|
|
8785
8789
|
|
|
8786
8790
|
var cx = ((k * rx * y) / ry) + ((x1 + x2) / 2);
|
|
8787
8791
|
var cy = ((k * -ry * x) / rx) + ((y1 + y2) / 2);
|
package/dist/vectorizer.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! JointJS v4.0.
|
|
1
|
+
/*! JointJS v4.0.2 (2024-04-09) - JavaScript diagramming library
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
5
5
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
6
6
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
7
7
|
*/
|
|
8
|
-
if(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).V=n()}(this,function(){"use strict";var e=Math.round,r=Math.floor,i=Math.PI,h=function(t){return t%360+(t<0?360:0)},s=function(t,n){return n*e(t/n)},c=function(t){return 180*t/i%360},l=function(t,n){return(t=(n=n||!1)?t:t%360)*i/180},o=function(t,n){if(void 0===n)n=void 0===t?1:t,t=0;else if(n<t){var e=t;t=n,n=e}return r(Math.random()*(n-t+1)+t)},f=Math.cos,d=Math.sin,g=Math.atan2,n=function(t,n){var e=l(t.y),r=l(n.y),i=t.x,s=n.x,o=l(s-i),a=d(o)*f(r),h=f(e)*d(r)-d(e)*f(r)*f(o),u=c(g(a,h))-22.5;return u<0&&(u+=360),["NE","E","SE","S","SW","W","NW","N"][u=parseInt(u/45)]},a=function(t,n){var e=t.x,r=t.y;return(e-=n.x)*e+(r-=n.y)*r},u=function(t,n){return Math.sqrt(a(t,n))},v={Point:1,Line:2,Ellipse:3,Rect:4,Polyline:5,Polygon:6,Curve:7,Path:8},p=Math.abs,m=Math.cos,y=Math.sin,x=Math.sqrt,w=Math.min,b=Math.max,S=Math.atan2,P=Math.round,A=Math.pow,T=Math.PI,L=function(t,n){if(!(this instanceof L))return new L(t,n);if("string"==typeof t){var e=t.split(-1===t.indexOf("@")?" ":"@");t=parseFloat(e[0]),n=parseFloat(e[1])}else Object(t)===t&&(n=t.y,t=t.x);this.x=void 0===t?0:t,this.y=void 0===n?0:n};L.fromPolar=function(t,n,e){e=new L(e);var r=p(t*m(n)),i=p(t*y(n)),s=h(c(n));return s<90?i=-i:s<180?(r=-r,i=-i):s<270&&(r=-r),new L(e.x+r,e.y+i)},L.random=function(t,n,e,r){return new L(o(t,n),o(e,r))},L.prototype={type:v.Point,chooseClosest:function(t){var n=t.length;if(1===n)return new L(t[0]);for(var e=null,r=1/0,i=0;i<n;i++){var s=new L(t[i]),o=this.squaredDistance(s);o<r&&(e=s,r=o)}return e},adhereToRect:function(t){return t.containsPoint(this)||(this.x=w(b(this.x,t.x),t.x+t.width),this.y=w(b(this.y,t.y),t.y+t.height)),this},angleBetween:function(t,n){var e=this.equals(t)||this.equals(n)?NaN:this.theta(n)-this.theta(t);return e<0&&(e+=360),e},bearing:function(t){return n(this,t)},changeInAngle:function(t,n,e){return this.clone().offset(-t,-n).theta(e)-this.theta(e)},clone:function(){return new L(this)},cross:function(t,n){return t&&n?(n.x-this.x)*(t.y-this.y)-(n.y-this.y)*(t.x-this.x):NaN},difference:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),new L(this.x-(t||0),this.y-(n||0))},distance:function(t){return u(this,t)},dot:function(t){return t?this.x*t.x+this.y*t.y:NaN},equals:function(t){return!!t&&this.x===t.x&&this.y===t.y},lerp:function(t,n){var e=this.x,r=this.y;return new L((1-n)*e+n*t.x,(1-n)*r+n*t.y)},magnitude:function(){return x(this.x*this.x+this.y*this.y)||.01},manhattanDistance:function(t){return p(t.x-this.x)+p(t.y-this.y)},move:function(t,n){var e=l(new L(t).theta(this));return this.offset(m(e)*n,-y(e)*n)},normalize:function(t){var n=(t||1)/this.magnitude();return this.scale(n,n)},offset:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),this.x+=t||0,this.y+=n||0,this},reflection:function(t){return new L(t).move(this,this.distance(t))},rotate:function(t,n){if(0===n)return this;t=t||new L(0,0),n=l(h(-n));var e=m(n),r=y(n),i=e*(this.x-t.x)-r*(this.y-t.y)+t.x,s=r*(this.x-t.x)+e*(this.y-t.y)+t.y;return this.x=i,this.y=s,this},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=A(10,t)}return this.x=P(this.x*n)/n,this.y=P(this.y*n)/n,this},scale:function(t,n,e){return e=e&&new L(e)||new L(0,0),this.x=e.x+t*(this.x-e.x),this.y=e.y+n*(this.y-e.y),this},snapToGrid:function(t,n){return this.x=s(this.x,t),this.y=s(this.y,n||t),this},squaredDistance:function(t){return a(this,t)},theta:function(t){var n=-((t=new L(t)).y-this.y),e=t.x-this.x,r=S(n,e);return r<0&&(r=2*T+r),180*r/T},toJSON:function(){return{x:this.x,y:this.y}},toPolar:function(t){t=t&&new L(t)||new L(0,0);var n=this.x,e=this.y;return this.x=x((n-t.x)*(n-t.x)+(e-t.y)*(e-t.y)),this.y=l(t.theta(new L(n,e))),this},toString:function(){return this.x+"@"+this.y},serialize:function(){return this.x+","+this.y},update:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),this.x=t||0,this.y=n||0,this},vectorAngle:function(t){return new L(0,0).angleBetween(this,t)}},L.prototype.translate=L.prototype.offset;var t=L,E=Math.max,C=Math.min,N=function(t,n){return this instanceof N?t instanceof N?new N(t.start,t.end):(this.start=new L(t),void(this.end=new L(n))):new N(t,n)};N.prototype={type:v.Line,angle:function(){var t=new L(this.start.x+1,this.start.y);return this.start.angleBetween(this.end,t)},bbox:function(){var t=C(this.start.x,this.end.x),n=C(this.start.y,this.end.y),e=E(this.start.x,this.end.x),r=E(this.start.y,this.end.y);return new B(t,n,e-t,r-n)},bearing:function(){return n(this.start,this.end)},clone:function(){return new N(this.start,this.end)},closestPoint:function(t){return this.pointAt(this.closestPointNormalizedLength(t))},closestPointLength:function(t){return this.closestPointNormalizedLength(t)*this.length()},closestPointNormalizedLength:function(t){var n=this.vector().dot(new N(this.start,t).vector()),e=C(1,E(0,n/this.squaredLength()));return e!=e?0:e},closestPointTangent:function(t){return this.tangentAt(this.closestPointNormalizedLength(t))},containsPoint:function(t){var n=this.start,e=this.end;if(0!==n.cross(t,e))return!1;var r=this.length();return!(new N(n,t).length()>r)&&!(new N(t,e).length()>r)},divideAt:function(t){var n=this.pointAt(t);return[new N(this.start,n),new N(n,this.end)]},divideAtLength:function(t){var n=this.pointAtLength(t);return[new N(this.start,n),new N(n,this.end)]},equals:function(t){return!!t&&this.start.x===t.start.x&&this.start.y===t.start.y&&this.end.x===t.end.x&&this.end.y===t.end.y},intersect:function(t,n){if(t&&t.intersectionWithLine){var e=t.intersectionWithLine(this,n);return e&&t instanceof N&&(e=e[0]),e}return null},intersectionWithLine:function(t){var n=new L(this.end.x-this.start.x,this.end.y-this.start.y),e=new L(t.end.x-t.start.x,t.end.y-t.start.y),r=n.x*e.y-n.y*e.x,i=new L(t.start.x-this.start.x,t.start.y-this.start.y),s=i.x*e.y-i.y*e.x,o=i.x*n.y-i.y*n.x;if(0===r||s*r<0||o*r<0)return null;if(0<r){if(r<s||r<o)return null}else if(s<r||o<r)return null;return[new L(this.start.x+s*n.x/r,this.start.y+s*n.y/r)]},isDifferentiable:function(){return!this.start.equals(this.end)},length:function(){return u(this.start,this.end)},midpoint:function(){return new L((this.start.x+this.end.x)/2,(this.start.y+this.end.y)/2)},parallel:function(t){var n=this.clone();if(!this.isDifferentiable())return n;var e=n.start,r=n.end,i=e.clone().rotate(r,270),s=r.clone().rotate(e,90);return e.move(s,t),r.move(i,t),n},pointAt:function(t){var n=this.start,e=this.end;return t<=0?n.clone():1<=t?e.clone():n.lerp(e,t)},pointAtLength:function(t){var n=this.start,e=this.end,r=!0;t<0&&(r=!1,t=-t);var i=this.length();return i<=t?r?e.clone():n.clone():this.pointAt((r?t:i-t)/i)},pointOffset:function(t){t=new L(t);var n=this.start,e=this.end;return((e.x-n.x)*(t.y-n.y)-(e.y-n.y)*(t.x-n.x))/this.length()},rotate:function(t,n){return this.start.rotate(t,n),this.end.rotate(t,n),this},round:function(t){return this.start.round(t),this.end.round(t),this},scale:function(t,n,e){return this.start.scale(t,n,e),this.end.scale(t,n,e),this},setLength:function(t){var n=this.length();if(!n)return this;var e=t/n;return this.scale(e,e,this.start)},squaredLength:function(){return a(this.start,this.end)},tangentAt:function(t){if(!this.isDifferentiable())return null;var n=this.start,e=this.end,r=this.pointAt(t),i=new N(n,e);return i.translate(r.x-n.x,r.y-n.y),i},tangentAtLength:function(t){if(!this.isDifferentiable())return null;var n=this.start,e=this.end,r=this.pointAtLength(t),i=new N(n,e);return i.translate(r.x-n.x,r.y-n.y),i},toString:function(){return this.start.toString()+" "+this.end.toString()},serialize:function(){return this.start.serialize()+" "+this.end.serialize()},translate:function(t,n){return this.start.translate(t,n),this.end.translate(t,n),this},vector:function(){return new L(this.end.x-this.start.x,this.end.y-this.start.y)}},N.prototype.intersection=N.prototype.intersect;var I=N,M=Math.sqrt,R=Math.round,O=Math.pow,D=function(t,n,e){return this instanceof D?t instanceof D?new D(new L(t.x,t.y),t.a,t.b):(t=new L(t),this.x=t.x,this.y=t.y,this.a=n,void(this.b=e)):new D(t,n,e)};D.fromRect=function(t){return t=new B(t),new D(t.center(),t.width/2,t.height/2)},D.prototype={type:v.Ellipse,bbox:function(){return new B(this.x-this.a,this.y-this.b,2*this.a,2*this.b)},center:function(){return new L(this.x,this.y)},clone:function(){return new D(this)},containsPoint:function(t){return this.normalizedDistance(t)<=1},equals:function(t){return!!t&&t.x===this.x&&t.y===this.y&&t.a===this.a&&t.b===this.b},inflate:function(t,n){return void 0===t&&(t=0),void 0===n&&(n=t),this.a+=2*t,this.b+=2*n,this},intersectionWithLine:function(t){var n=[],e=t.start,r=t.end,i=this.a,s=this.b,o=t.vector(),a=e.difference(new L(this)),h=new L(o.x/(i*i),o.y/(s*s)),u=new L(a.x/(i*i),a.y/(s*s)),c=o.dot(h),l=o.dot(u),f=l*l-c*(a.dot(u)-1);if(f<0)return null;if(0<f){var d=M(f),g=(-l-d)/c,v=(-l+d)/c;if((g<0||1<g)&&(v<0||1<v))return null;0<=g&&g<=1&&n.push(e.lerp(r,g)),0<=v&&v<=1&&n.push(e.lerp(r,v))}else{var p=-l/c;if(!(0<=p&&p<=1))return null;n.push(e.lerp(r,p))}return n},intersectionWithLineFromCenterToPoint:function(t,n){t=new L(t),n&&t.rotate(new L(this.x,this.y),n);var e,r=t.x-this.x,i=t.y-this.y;if(0===r)return e=this.bbox().pointNearestToPoint(t),n?e.rotate(new L(this.x,this.y),-n):e;var s=i/r,o=s*s,a=this.a*this.a,h=this.b*this.b,u=M(1/(1/a+o/h)),c=s*(u=r<0?-u:u);return e=new L(this.x+u,this.y+c),n?e.rotate(new L(this.x,this.y),-n):e},normalizedDistance:function(t){var n=t.x,e=t.y,r=this.a,i=this.b,s=this.x,o=this.y;return(n-s)*(n-s)/(r*r)+(e-o)*(e-o)/(i*i)},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=O(10,t)}return this.x=R(this.x*n)/n,this.y=R(this.y*n)/n,this.a=R(this.a*n)/n,this.b=R(this.b*n)/n,this},tangentTheta:function(t){var n,e,r=t.x,i=t.y,s=this.a,o=this.b,a=this.bbox().center(),h=a.x,u=a.y,c=r>a.x+s/2,l=r<a.x-s/2;return c||l?e=s*s/(r-h)-s*s*(i-u)*((n=r>a.x?i-30:i+30)-u)/(o*o*(r-h))+h:n=o*o/(i-u)-o*o*(r-h)*((e=i>a.y?r+30:r-30)-h)/(s*s*(i-u))+u,new L(e,n).theta(t)},toString:function(){return new L(this.x,this.y).toString()+" "+this.a+" "+this.b}};var F=D,k=Math.abs,q=Math.cos,V=Math.sin,z=Math.min,j=Math.max,G=Math.round,W=Math.pow,B=function(t,n,e,r){if(!(this instanceof B))return new B(t,n,e,r);Object(t)===t&&(n=t.y,e=t.width,r=t.height,t=t.x),this.x=void 0===t?0:t,this.y=void 0===n?0:n,this.width=void 0===e?0:e,this.height=void 0===r?0:r};B.fromEllipse=function(t){return t=new D(t),new B(t.x-t.a,t.y-t.b,2*t.a,2*t.b)},B.fromPointUnion=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(0===t.length)return null;var e,r,i,s,o=new L;e=r=1/0,i=s=-1/0;for(var a=0;a<t.length;a++){o.update(t[a]);var h=o.x,u=o.y;h<e&&(e=h),i<h&&(i=h),u<r&&(r=u),s<u&&(s=u)}return new B(e,r,i-e,s-r)},B.fromRectUnion=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(0===t.length)return null;var e,r,i,s,o=new B;e=r=1/0,i=s=-1/0;for(var a=0;a<t.length;a++){o.update(t[a]);var h=o.x,u=o.y,c=h+o.width,l=u+o.height;h<e&&(e=h),i<c&&(i=c),u<r&&(r=u),s<l&&(s=l)}return new B(e,r,i-e,s-r)},B.prototype={type:v.Rect,bbox:function(t){return this.clone().rotateAroundCenter(t)},rotateAroundCenter:function(t){if(!t)return this;var n=this.width,e=this.height,r=l(t),i=k(V(r)),s=k(q(r)),o=n*s+e*i,a=n*i+e*s;return this.x+=(n-o)/2,this.y+=(e-a)/2,this.width=o,this.height=a,this},bottomLeft:function(){return new L(this.x,this.y+this.height)},bottomLine:function(){return new N(this.bottomLeft(),this.bottomRight())},bottomMiddle:function(){return new L(this.x+this.width/2,this.y+this.height)},center:function(){return new L(this.x+this.width/2,this.y+this.height/2)},clone:function(){return new B(this)},containsPoint:function(t){return t instanceof L||(t=new L(t)),t.x>=this.x&&t.x<=this.x+this.width&&t.y>=this.y&&t.y<=this.y+this.height},containsRect:function(t){var n=new B(this).normalize(),e=new B(t).normalize(),r=n.width,i=n.height,s=e.width,o=e.height;if(!(r&&i&&s&&o))return!1;var a=n.x,h=n.y,u=e.x,c=e.y;return s+=u,r+=a,o+=c,i+=h,a<=u&&s<=r&&h<=c&&o<=i},corner:function(){return new L(this.x+this.width,this.y+this.height)},equals:function(t){var n=new B(this).normalize(),e=new B(t).normalize();return n.x===e.x&&n.y===e.y&&n.width===e.width&&n.height===e.height},inflate:function(t,n){return void 0===t&&(t=0),void 0===n&&(n=t),this.x-=t,this.y-=n,this.width+=2*t,this.height+=2*n,this},intersect:function(t){var n=this.origin(),e=this.corner(),r=t.origin(),i=t.corner();if(i.x<=n.x||i.y<=n.y||r.x>=e.x||r.y>=e.y)return null;var s=j(n.x,r.x),o=j(n.y,r.y);return new B(s,o,z(e.x,i.x)-s,z(e.y,i.y)-o)},intersectionWithLine:function(t){var n,e,r=[this.topLine(),this.rightLine(),this.bottomLine(),this.leftLine()],i=[],s=[],o=r.length;for(e=0;e<o;e++)null!==(n=t.intersect(r[e]))&&s.indexOf(n.toString())<0&&(i.push(n),s.push(n.toString()));return 0<i.length?i:null},intersectionWithLineFromCenterToPoint:function(t,n){t=new L(t);var e,r=new L(this.x+this.width/2,this.y+this.height/2);n&&t.rotate(r,n);for(var i=[this.topLine(),this.rightLine(),this.bottomLine(),this.leftLine()],s=new N(r,t),o=i.length-1;0<=o;--o){var a=i[o].intersection(s);if(null!==a){e=a;break}}return e&&n&&e.rotate(r,-n),e},leftLine:function(){return new N(this.topLeft(),this.bottomLeft())},leftMiddle:function(){return new L(this.x,this.y+this.height/2)},maxRectScaleToFit:function(t,n){var e,r,i,s,o,a,h,u;t=new B(t),n||(n=t.center());var c=n.x,l=n.y;e=r=i=s=o=a=h=u=1/0;var f=t.topLeft();f.x<c&&(e=(this.x-c)/(f.x-c)),f.y<l&&(o=(this.y-l)/(f.y-l));var d=t.bottomRight();d.x>c&&(r=(this.x+this.width-c)/(d.x-c)),d.y>l&&(a=(this.y+this.height-l)/(d.y-l));var g=t.topRight();g.x>c&&(i=(this.x+this.width-c)/(g.x-c)),g.y<l&&(h=(this.y-l)/(g.y-l));var v=t.bottomLeft();return v.x<c&&(s=(this.x-c)/(v.x-c)),v.y>l&&(u=(this.y+this.height-l)/(v.y-l)),{sx:z(e,r,i,s),sy:z(o,a,h,u)}},maxRectUniformScaleToFit:function(t,n){var e=this.maxRectScaleToFit(t,n);return z(e.sx,e.sy)},moveAndExpand:function(t){return this.x+=t.x||0,this.y+=t.y||0,this.width+=t.width||0,this.height+=t.height||0,this},normalize:function(){var t=this.x,n=this.y,e=this.width,r=this.height;return this.width<0&&(t=this.x+this.width,e=-this.width),this.height<0&&(n=this.y+this.height,r=-this.height),this.x=t,this.y=n,this.width=e,this.height=r,this},offset:function(t,n){return L.prototype.offset.call(this,t,n)},origin:function(){return new L(this.x,this.y)},pointNearestToPoint:function(t){if(t=new L(t),this.containsPoint(t))switch(this.sideNearestToPoint(t)){case"right":return new L(this.x+this.width,t.y);case"left":return new L(this.x,t.y);case"bottom":return new L(t.x,this.y+this.height);case"top":return new L(t.x,this.y)}return t.adhereToRect(this)},rightLine:function(){return new N(this.topRight(),this.bottomRight())},rightMiddle:function(){return new L(this.x+this.width,this.y+this.height/2)},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=W(10,t)}return this.x=G(this.x*n)/n,this.y=G(this.y*n)/n,this.width=G(this.width*n)/n,this.height=G(this.height*n)/n,this},scale:function(t,n,e){return e=this.origin().scale(t,n,e),this.x=e.x,this.y=e.y,this.width*=t,this.height*=n,this},sideNearestToPoint:function(t){var n=(t=new L(t)).x-this.x,e=this.x+this.width-t.x,r=t.y-this.y,i=n,s="left";return e<i&&(i=e,s="right"),r<i&&(i=r,s="top"),this.y+this.height-t.y<i&&(s="bottom"),s},snapToGrid:function(t,n){var e=this.origin().snapToGrid(t,n),r=this.corner().snapToGrid(t,n);return this.x=e.x,this.y=e.y,this.width=r.x-e.x,this.height=r.y-e.y,this},toJSON:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},topLine:function(){return new N(this.topLeft(),this.topRight())},topMiddle:function(){return new L(this.x+this.width/2,this.y)},topRight:function(){return new L(this.x+this.width,this.y)},toString:function(){return this.origin().toString()+" "+this.corner().toString()},union:function(t){return B.fromRectUnion(this,t)},update:function(t,n,e,r){return Object(t)===t&&(n=t.y,e=t.width,r=t.height,t=t.x),this.x=t||0,this.y=n||0,this.width=e||0,this.height=r||0,this}},B.prototype.bottomRight=B.prototype.corner,B.prototype.topLeft=B.prototype.origin,B.prototype.translate=B.prototype.offset;var U=B;function H(t){var n=t.trim();if(""===n)return[];for(var e=[],r=n.split(/\b\s*,\s*|,\s*|\s+/),i=r.length,s=0;s<i;s+=2)e.push({x:+r[s],y:+r[s+1]});return e}function Z(t){var n=t.length;if(0===n)return[];for(var e=[],r=0;r<n;r++){var i=t[r].clone();e.push(i)}return e}function Y(t){var n,e,r,i=Math.abs,s=t.length;if(0===s)return[];for(n=0;n<s;n++)void 0===r?r=t[n]:t[n].y<r.y?r=t[n]:t[n].y===r.y&&t[n].x>r.x&&(r=t[n]);var o=[];for(n=0;n<s;n++){var a=r.theta(t[n]);0===a&&(a=360);var h=[t[n],n,a];o.push(h)}if(o.sort(function(t,n){var e=t[2]-n[2];return 0===e&&(e=n[1]-t[1]),e}),2<o.length){var u=o[o.length-1];o.unshift(u)}for(var c,l,f,d,g,v,p,m={},y=[];0!==o.length;)if(l=(c=o.pop())[0],!m.hasOwnProperty(c[0]+"@@"+c[1]))for(var x=!1;!x;)if(y.length<2)y.push(c),x=!0;else{d=(f=y.pop())[0];var w=(v=(g=y.pop())[0]).cross(d,l);if(w<0)y.push(g),y.push(f),y.push(c),x=!0;else if(0===w){var b=d.angleBetween(v,l);i(b-180)<1e-10?(m[f[0]+"@@"+f[1]]=d,y.push(g)):d.equals(l)||v.equals(d)?(m[f[0]+"@@"+f[1]]=d,y.push(g)):i((b+1)%360-1)<1e-10&&(y.push(g),o.push(f))}else m[f[0]+"@@"+f[1]]=d,y.push(g)}2<y.length&&y.pop();var S=-1;for(e=y.length,n=0;n<e;n++){var P=y[n][1];(void 0===p||P<p)&&(p=P,S=n)}var A=[];if(0<S){var T=y.slice(S),L=y.slice(0,S);A=T.concat(L)}else A=y;var E=[];for(e=A.length,n=0;n<e;n++)E.push(A[n][0]);return E}var X=function(t){return this instanceof X?"string"==typeof t?new X.parse(t):void(this.points=Array.isArray(t)?t.map(L):[]):new X(t)};X.parse=function(t){return new X(H(t))},X.fromRect=function(t){return new X([t.topLeft(),t.topRight(),t.bottomRight(),t.bottomLeft(),t.topLeft()])},X.prototype={type:v.Polyline,bbox:function(){var t=1/0,n=-1/0,e=1/0,r=-1/0,i=this.points,s=i.length;if(0===s)return null;for(var o=0;o<s;o++){var a=i[o],h=a.x,u=a.y;h<t&&(t=h),n<h&&(n=h),u<e&&(e=u),r<u&&(r=u)}return new B(t,e,n-t,r-e)},clone:function(){return new X(Z(this.points))},closestPoint:function(t){var n=this.closestPointLength(t);return this.pointAtLength(n)},closestPointLength:function(t){var n,e=this.lengthPoints(),r=e.length;if(0===r)return 0;if(1===r)return 0;for(var i=1/0,s=0,o=r-1,a=0;a<o;a++){var h=new N(e[a],e[a+1]),u=h.length(),c=h.closestPointNormalizedLength(t),l=h.pointAt(c).squaredDistance(t);l<i&&(i=l,n=s+c*u),s+=u}return n},closestPointNormalizedLength:function(t){var n=this.closestPointLength(t);if(0===n)return 0;var e=this.length();return 0===e?0:n/e},closestPointTangent:function(t){var n=this.closestPointLength(t);return this.tangentAtLength(n)},containsPoint:function(t){var n=this.points,e=n.length;if(0===e)return!1;for(var r=t.x,i=t.y,s=e-1,o=0,a=0,h=new N,u=new N,c=new L;o<e;o++){var l=n[s],f=n[o];if(t.equals(l))return!0;if(h.start=l,h.end=f,h.containsPoint(t))return!0;if(i<=l.y&&i>f.y||i>l.y&&i<=f.y){var d=l.x-r>f.x-r?l.x-r:f.x-r;0<=d&&(c.x=r+d,c.y=i,u.start=t,u.end=c,h.intersect(u)&&a++)}s=o}return a%2==1},close:function(){var t=this.start,n=this.end,e=this.points;return t&&n&&!t.equals(n)&&e.push(t.clone()),this},lengthPoints:function(){return this.points},convexHull:function(){return new X(Y(this.points))},equals:function(t){if(!t)return!1;var n=this.points,e=t.points,r=n.length;if(e.length!==r)return!1;for(var i=0;i<r;i++){var s=n[i],o=t.points[i];if(!s.equals(o))return!1}return!0},intersectionWithLine:function(t){for(var n=new N(t),e=[],r=this.lengthPoints(),i=new N,s=0,o=r.length-1;s<o;s++){i.start=r[s],i.end=r[s+1];var a=n.intersectionWithLine(i);a&&e.push(a[0])}return 0<e.length?e:null},isDifferentiable:function(){var t=this.points,n=t.length;if(0===n)return!1;for(var e=new N,r=n-1,i=0;i<r;i++)if(e.start=t[i],e.end=t[i+1],e.isDifferentiable())return!0;return!1},length:function(){var t=this.lengthPoints(),n=t.length;if(0===n)return 0;for(var e=0,r=n-1,i=0;i<r;i++)e+=t[i].distance(t[i+1]);return e},pointAt:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return n[0].clone();if(t<=0)return n[0].clone();if(1<=t)return n[e-1].clone();var r=this.length()*t;return this.pointAtLength(r)},pointAtLength:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return n[0].clone();var r=!0;t<0&&(r=!1,t=-t);for(var i=0,s=e-1,o=0;o<s;o++){var a=r?o:s-1-o,h=n[a],u=n[a+1],c=new N(h,u),l=h.distance(u);if(t<=i+l)return c.pointAtLength((r?1:-1)*(t-i));i+=l}return(r?n[e-1]:n[0]).clone()},round:function(t){for(var n=this.points,e=n.length,r=0;r<e;r++)n[r].round(t);return this},scale:function(t,n,e){for(var r=this.points,i=r.length,s=0;s<i;s++)r[s].scale(t,n,e);return this},simplify:function(t){void 0===t&&(t={});var n=this.points;if(n.length<3)return this;for(var e=t.threshold||1e-10,r=0;n[r+2];){var i=r+1,s=r+2,o=n[r],a=n[i],h=n[s];new N(o,h).closestPoint(a).distance(a)<=e?n.splice(i,1):r+=1}return this},tangentAt:function(t){var n=this.lengthPoints().length;if(0===n)return null;if(1===n)return null;t<0&&(t=0),1<t&&(t=1);var e=this.length()*t;return this.tangentAtLength(e)},tangentAtLength:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return null;var r,i=!0;t<0&&(i=!1,t=-t);for(var s=0,o=e-1,a=0;a<o;a++){var h=i?a:o-1-a,u=n[h],c=n[h+1],l=new N(u,c),f=u.distance(c);if(l.isDifferentiable()){if(t<=s+f)return l.tangentAtLength((i?1:-1)*(t-s));r=l}s+=f}if(r){var d=i?1:0;return r.tangentAt(d)}return null},toString:function(){return this.points+""},translate:function(t,n){for(var e=this.points,r=e.length,i=0;i<r;i++)e[i].translate(t,n);return this},serialize:function(){var t=this.points,n=t.length;if(0===n)return"";for(var e="",r=0;r<n;r++){var i=t[r];e+=i.x+","+i.y+" "}return e.trim()}},Object.defineProperty(X.prototype,"start",{configurable:!0,enumerable:!0,get:function(){return 0===this.points.length?null:this.points[0]}}),Object.defineProperty(X.prototype,"end",{configurable:!0,enumerable:!0,get:function(){var t=this.points.length;return 0===t?null:this.points[t-1]}});var J=Math.abs,K=Math.sqrt,Q=Math.min,$=Math.max,_=Math.pow,tt=function(t,n,e,r){return this instanceof tt?t instanceof tt?new tt(t.start,t.controlPoint1,t.controlPoint2,t.end):(this.start=new L(t),this.controlPoint1=new L(n),this.controlPoint2=new L(e),void(this.end=new L(r))):new tt(t,n,e,r)};function nt(t){var n,e,r=arguments,i=[];for(e=arguments.length,n=1;n<e;n++)i.push(r[n]);if(!t)throw new Error("Missing a parent object.");var s=Object.create(t);for(e=i.length,n=0;n<e;n++){var o,a,h=i[n];for(a in h)h.hasOwnProperty(a)&&(delete s[a],o=Object.getOwnPropertyDescriptor(h,a),Object.defineProperty(s,a,o))}return s}tt.throughPoints=function(){function h(t){var n=t.length,e=[],r=[],i=2;e[0]=t[0]/i;for(var s=1;s<n;s++)r[s]=1/i,i=(s<n-1?4:3.5)-r[s],e[s]=(t[s]-e[s-1])/i;for(s=1;s<n;s++)e[n-s-1]-=r[n-s]*e[n-s];return e}return function(t){if(!t||Array.isArray(t)&&t.length<2)throw new Error("At least 2 points are required");for(var n=function(t){var n,e=[],r=[],i=t.length-1;if(1==i)return e[0]=new L((2*t[0].x+t[1].x)/3,(2*t[0].y+t[1].y)/3),r[0]=new L(2*e[0].x-t[0].x,2*e[0].y-t[0].y),[e,r];var s=[];for(n=1;n<i-1;n++)s[n]=4*t[n].x+2*t[n+1].x;s[0]=t[0].x+2*t[1].x,s[i-1]=(8*t[i-1].x+t[i].x)/2;var o=h(s);for(n=1;n<i-1;++n)s[n]=4*t[n].y+2*t[n+1].y;s[0]=t[0].y+2*t[1].y,s[i-1]=(8*t[i-1].y+t[i].y)/2;var a=h(s);for(n=0;n<i;n++)e.push(new L(o[n],a[n])),n<i-1?r.push(new L(2*t[n+1].x-o[n+1],2*t[n+1].y-a[n+1])):r.push(new L((t[i].x+o[i-1])/2,(t[i].y+a[i-1])/2));return[e,r]}(t),e=[],r=n[0].length,i=0;i<r;i++){var s=new L(n[0][i].x,n[0][i].y),o=new L(n[1][i].x,n[1][i].y);e.push(new tt(t[i],s,o,t[i+1]))}return e}}(),tt.prototype={type:v.Curve,bbox:function(){for(var t,n,e,r,i,s,o,a,h=this.start,u=this.controlPoint1,c=this.controlPoint2,l=this.end,f=h.x,d=h.y,g=u.x,v=u.y,p=c.x,m=c.y,y=l.x,x=l.y,w=new Array,b=new Array,S=[new Array,new Array],P=0;P<2;++P)if(e=0===P?(n=6*f-12*g+6*p,t=-3*f+9*g-9*p+3*y,3*g-3*f):(n=6*d-12*v+6*m,t=-3*d+9*v-9*m+3*x,3*v-3*d),J(t)<1e-12){if(J(n)<1e-12)continue;0<(r=-e/n)&&r<1&&b.push(r)}else a=K(o=n*n-4*e*t),o<0||(0<(i=(-n+a)/(2*t))&&i<1&&b.push(i),0<(s=(-n-a)/(2*t))&&s<1&&b.push(s));for(var A,T,L,E=b.length,C=E;E--;)T=(A=1-(r=b[E]))*A*A*f+3*A*A*r*g+3*A*r*r*p+r*r*r*y,S[0][E]=T,L=A*A*A*d+3*A*A*r*v+3*A*r*r*m+r*r*r*x,S[1][E]=L,w[E]={X:T,Y:L};b[C]=0,b[C+1]=1,w[C]={X:f,Y:d},w[C+1]={X:y,Y:x},S[0][C]=f,S[1][C]=d,S[0][C+1]=y,S[1][C+1]=x,b.length=C+2,S[0].length=C+2,S[1].length=C+2,w.length=C+2;var N=Q.apply(null,S[0]),I=Q.apply(null,S[1]),M=$.apply(null,S[0]),R=$.apply(null,S[1]);return new B(N,I,M-N,R-I)},clone:function(){return new tt(this.start,this.controlPoint1,this.controlPoint2,this.end)},closestPoint:function(t,n){return this.pointAtT(this.closestPointT(t,n))},closestPointLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions};return this.lengthAtT(this.closestPointT(t,r),r)},closestPointNormalizedLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions},i=this.closestPointLength(t,r);if(!i)return 0;var s=this.length(r);return 0===s?0:i/s},closestPointT:function(t,n){for(var e,r,i,s,o,a,h,u=void 0===(n=n||{}).precision?this.PRECISION:n.precision,c=void 0===n.subdivisions?this.getSubdivisions({precision:u}):n.subdivisions,l=c.length,f=l?1/l:0,d=0;d<l;d++){var g=c[d],v=g.start.distance(t),p=g.end.distance(t),m=v+p;(!h||m<h)&&(r=d*f,i=(d+1)*f,s=v,o=p,a=(e=g).start.distance(g.end),h=m)}for(var y=_(10,-u);;){var x=s?J(s-o)/s:0,w=o?J(s-o)/o:0;if(x<y||w<y||(!s||s<a*y||(!o||o<a*y)))return s<=o?r:i;var b=e.divide(.5);f/=2;var S=b[0].start.distance(t),P=b[0].end.distance(t),A=S+P,T=b[1].start.distance(t),L=b[1].end.distance(t);o=A<=T+L?(e=b[0],i-=f,s=S,P):(e=b[1],r+=f,s=T,L)}},closestPointTangent:function(t,n){return this.tangentAtT(this.closestPointT(t,n))},containsPoint:function(t,n){return this.toPolyline(n).containsPoint(t)},divideAt:function(t,n){if(t<=0)return this.divideAtT(0);if(1<=t)return this.divideAtT(1);var e=this.tAt(t,n);return this.divideAtT(e)},divideAtLength:function(t,n){var e=this.tAtLength(t,n);return this.divideAtT(e)},divideAtT:function(t){var n=this.start,e=this.controlPoint1,r=this.controlPoint2,i=this.end;if(t<=0)return[new tt(n,n,n,n),new tt(n,e,r,i)];if(1<=t)return[new tt(n,e,r,i),new tt(i,i,i,i)];var s=this.getSkeletonPoints(t),o=s.startControlPoint1,a=s.startControlPoint2,h=s.divider,u=s.dividerControlPoint1,c=s.dividerControlPoint2;return[new tt(n,o,a,h),new tt(h,u,c,i)]},endpointDistance:function(){return this.start.distance(this.end)},equals:function(t){return!!t&&this.start.x===t.start.x&&this.start.y===t.start.y&&this.controlPoint1.x===t.controlPoint1.x&&this.controlPoint1.y===t.controlPoint1.y&&this.controlPoint2.x===t.controlPoint2.x&&this.controlPoint2.y===t.controlPoint2.y&&this.end.x===t.end.x&&this.end.y===t.end.y},getSkeletonPoints:function(t){var n=this.start,e=this.controlPoint1,r=this.controlPoint2,i=this.end;if(t<=0)return{startControlPoint1:n.clone(),startControlPoint2:n.clone(),divider:n.clone(),dividerControlPoint1:e.clone(),dividerControlPoint2:r.clone()};if(1<=t)return{startControlPoint1:e.clone(),startControlPoint2:r.clone(),divider:i.clone(),dividerControlPoint1:i.clone(),dividerControlPoint2:i.clone()};var s=new N(n,e).pointAt(t),o=new N(e,r).pointAt(t),a=new N(r,i).pointAt(t),h=new N(s,o).pointAt(t),u=new N(o,a).pointAt(t);return{startControlPoint1:s,startControlPoint2:h,divider:new N(h,u).pointAt(t),dividerControlPoint1:u,dividerControlPoint2:a}},getSubdivisions:function(t){var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=this.start,r=this.controlPoint1,i=this.controlPoint2,s=this.end,o=[new tt(e,r,i,s)];if(0===n)return o;if(!this.isDifferentiable())return o;var a=this.endpointDistance(),h=_(10,-n),u=2;0===r.cross(e,s)&&0===i.cross(e,s)&&(u=2*n);for(var c=0;;){c+=1;for(var l=[],f=o.length,d=0;d<f;d++){var g=o[d].divide(.5);l.push(g[0],g[1])}for(var v=0,p=l.length,m=0;m<p;m++){v+=l[m].endpointDistance()}if(u<=c)if((0!==v?(v-a)/v:0)<h)return l;o=l,a=v}},isDifferentiable:function(){var t=this.start,n=this.controlPoint1,e=this.controlPoint2,r=this.end;return!(t.equals(n)&&n.equals(e)&&e.equals(r))},length:function(t){for(var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=void 0===t.subdivisions?this.getSubdivisions({precision:n}):t.subdivisions,r=0,i=e.length,s=0;s<i;s++){r+=e[s].endpointDistance()}return r},lengthAtT:function(t,n){if(t<=0)return 0;var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision;return this.divide(t)[0].length({precision:e})},pointAt:function(t,n){if(t<=0)return this.start.clone();if(1<=t)return this.end.clone();var e=this.tAt(t,n);return this.pointAtT(e)},pointAtLength:function(t,n){var e=this.tAtLength(t,n);return this.pointAtT(e)},pointAtT:function(t){return t<=0?this.start.clone():1<=t?this.end.clone():this.getSkeletonPoints(t).divider},PRECISION:3,round:function(t){return this.start.round(t),this.controlPoint1.round(t),this.controlPoint2.round(t),this.end.round(t),this},scale:function(t,n,e){return this.start.scale(t,n,e),this.controlPoint1.scale(t,n,e),this.controlPoint2.scale(t,n,e),this.end.scale(t,n,e),this},tangentAt:function(t,n){if(!this.isDifferentiable())return null;t<0?t=0:1<t&&(t=1);var e=this.tAt(t,n);return this.tangentAtT(e)},tangentAtLength:function(t,n){if(!this.isDifferentiable())return null;var e=this.tAtLength(t,n);return this.tangentAtT(e)},tangentAtT:function(t){if(!this.isDifferentiable())return null;t<0?t=0:1<t&&(t=1);var n=this.getSkeletonPoints(t),e=n.startControlPoint2,r=n.dividerControlPoint1,i=n.divider,s=new N(e,r);return s.translate(i.x-e.x,i.y-e.y),s},tAt:function(t,n){if(t<=0)return 0;if(1<=t)return 1;var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions},i=this.length(r)*t;return this.tAtLength(i,r)},tAtLength:function(t,n){var e=!0;t<0&&(e=!1,t=-t);for(var r,i,s,o,a,h=void 0===(n=n||{}).precision?this.PRECISION:n.precision,u=void 0===n.subdivisions?this.getSubdivisions({precision:h}):n.subdivisions,c={precision:h,subdivisions:u},l=0,f=u.length,d=1/f,g=0;g<f;g++){var v=e?g:f-1-g,p=u[g],m=p.endpointDistance();if(t<=l+m){r=p,i=v*d,s=(v+1)*d,o=e?t-l:m+l-t,a=e?m+l-t:t-l;break}l+=m}if(!r)return e?1:0;for(var y=this.length(c),x=_(10,-h);;){var w,b;if((0!==y?o/y:0)<x)return i;if((0!==y?a/y:0)<x)return s;var S=r.divide(.5);d/=2;var P=S[0].endpointDistance(),A=S[1].endpointDistance();b=o<=P?(r=S[0],s-=d,P-(w=o)):(r=S[1],i+=d,A-(w=o-P)),o=w,a=b}},toPoints:function(t){for(var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=void 0===t.subdivisions?this.getSubdivisions({precision:n}):t.subdivisions,r=[e[0].start.clone()],i=e.length,s=0;s<i;s++){var o=e[s];r.push(o.end.clone())}return r},toPolyline:function(t){return new X(this.toPoints(t))},toString:function(){return this.start+" "+this.controlPoint1+" "+this.controlPoint2+" "+this.end},translate:function(t,n){return this.start.translate(t,n),this.controlPoint1.translate(t,n),this.controlPoint2.translate(t,n),this.end.translate(t,n),this}},tt.prototype.divide=tt.prototype.divideAtT;var et=function(t){if(!(this instanceof et))return new et(t);if("string"==typeof t)return new et.parse(t);var n,e;if(this.segments=[],t)if(Array.isArray(t)&&0!==t.length)if(e=(t=t.reduce(function(t,n){return t.concat(n)},[])).length,t[0].isSegment)for(n=0;n<e;n++){var r=t[n];this.appendSegment(r)}else{var i=null;for(n=0;n<e;n++){var s=t[n];if(!(s instanceof N||s instanceof tt))throw new Error("Cannot construct a path segment from the provided object.");0===n&&this.appendSegment(et.createSegment("M",s.start)),i&&!i.end.equals(s.start)&&this.appendSegment(et.createSegment("M",s.start)),s instanceof N?this.appendSegment(et.createSegment("L",s.end)):s instanceof tt&&this.appendSegment(et.createSegment("C",s.controlPoint1,s.controlPoint2,s.end)),i=s}}else if(t.isSegment)this.appendSegment(t);else if(t instanceof N)this.appendSegment(et.createSegment("M",t.start)),this.appendSegment(et.createSegment("L",t.end));else if(t instanceof tt)this.appendSegment(et.createSegment("M",t.start)),this.appendSegment(et.createSegment("C",t.controlPoint1,t.controlPoint2,t.end));else{if(!(t instanceof X))throw new Error("Cannot construct a path from the provided object.");if(!t.points||0===t.points.length)return;for(e=t.points.length,n=0;n<e;n++){var o=t.points[n];0===n?this.appendSegment(et.createSegment("M",o)):this.appendSegment(et.createSegment("L",o))}}else;};function rt(t,n){return n.unshift(null),new(Function.prototype.bind.apply(t,n))}et.parse=function(t){if(!t)return new et;for(var n=new et,e=t.match(/(?:[a-zA-Z] *)(?:(?:-?\d+(?:\.\d+)?(?:e[-+]?\d+)? *,? *)|(?:-?\.\d+ *,? *))+|(?:[a-zA-Z] *)(?! |\d|-|\.)/g),r=e.length,i=0;i<r;i++){var s=e[i].match(/(?:[a-zA-Z])|(?:(?:-?\d+(?:\.\d+)?(?:e[-+]?\d+)?))|(?:(?:-?\.\d+))/g),o=et.createSegment.apply(this,s);n.appendSegment(o)}return n},et.createSegment=function(t){var n=arguments;if(!t)throw new Error("Type must be provided.");var e=et.segmentTypes[t];if(!e)throw new Error(t+" is not a recognized path segment type.");for(var r=[],i=arguments.length,s=1;s<i;s++)r.push(n[s]);return rt(e,r)},et.prototype={type:v.Path,appendSegment:function(t){var n,e=this.segments,r=e.length,i=0!==r?e[r-1]:null;if(Array.isArray(t)){if(!(t=t.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");for(var s=t.length,o=0;o<s;o++){var a=t[o];n=this.prepareSegment(a,i,null),e.push(n),i=n}}else{if(!t||!t.isSegment)throw new Error("Segment required.");n=this.prepareSegment(t,i,null),e.push(n)}},bbox:function(){var t,n=this.segments,e=n.length;if(0===e)return null;for(var r=0;r<e;r++){var i=n[r];if(i.isVisible){var s=i.bbox();t=t?t.union(s):s}}if(t)return t;var o=n[e-1];return new B(o.end.x,o.end.y,0,0)},clone:function(){for(var t=this.segments,n=t.length,e=new et,r=0;r<n;r++){var i=t[r].clone();e.appendSegment(i)}return e},closestPoint:function(t,n){var e=this.closestPointT(t,n);return e?this.pointAtT(e):null},closestPointLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.closestPointT(t,r);return i?this.lengthAtT(i,r):0},closestPointNormalizedLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.closestPointLength(t,r);if(0===i)return 0;var s=this.length(r);return 0===s?0:i/s},closestPointT:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;for(var i,s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=1/0,h=0;h<r;h++){var u=e[h],c=o[h];if(u.isVisible){var l=u.closestPointT(t,{precision:s,subdivisions:c}),f=u.pointAtT(l),d=new N(f,t).squaredLength();d<a&&(i={segmentIndex:h,value:l},a=d)}}return i||{segmentIndex:r-1,value:1}},closestPointTangent:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;for(var i,s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=1/0,h=0;h<r;h++){var u=e[h],c=o[h];if(u.isDifferentiable()){var l=u.closestPointT(t,{precision:s,subdivisions:c}),f=u.pointAtT(l),d=new N(f,t).squaredLength();d<a&&(i=u.tangentAtT(l),a=d)}}return i||null},containsPoint:function(t,n){var e=this.toPolylines(n);if(!e)return!1;for(var r=e.length,i=0,s=0;s<r;s++){e[s].containsPoint(t)&&i++}return i%2==1},divideAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.divideAtLength(i,r)},divideAtLength:function(t,n){var e=this.segments.length;if(0===e)return null;var r=!0;t<0&&(r=!1,t=-t);var i,s,o,a,h,u,c,l=void 0===(n=n||{}).precision?this.PRECISION:n.precision,f=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:l}):n.segmentSubdivisions,d=0;for(i=0;i<e;i++){var g=r?i:e-1-i;s=this.getSegment(g);var v=f[g],p=s.length({precision:l,subdivisions:v});if(s.isDifferentiable()&&(h=s,u=g,t<=d+p)){a=g,o=s.divideAtLength((r?1:-1)*(t-d),{precision:l,subdivisions:v});break}d+=p}if(!h)return null;o||(a=u,c=r?1:0,o=h.divideAtT(c));var m=this.clone();m.replaceSegment(a,o);var y=a,x=a+1,w=a+2;o[0].isDifferentiable()||(m.removeSegment(y),x-=1,w-=1);var b=m.getSegment(x).start;m.insertSegment(x,et.createSegment("M",b)),w+=1,o[1].isDifferentiable()||(m.removeSegment(w-1),w-=1);var S=w-y-1;for(i=w;i<m.segments.length;i++){var P=this.getSegment(i-S);if("Z"===(s=m.getSegment(i)).type&&!P.subpathStartSegment.end.equals(s.subpathStartSegment.end)){var A=et.createSegment("L",P.end);m.replaceSegment(i,A)}}return[new et(m.segments.slice(0,x)),new et(m.segments.slice(x))]},equals:function(t){if(!t)return!1;var n=this.segments,e=t.segments,r=n.length;if(e.length!==r)return!1;for(var i=0;i<r;i++){var s=n[i],o=e[i];if(s.type!==o.type||!s.equals(o))return!1}return!0},getSegment:function(t){var n=this.segments,e=n.length;if(0===e)throw new Error("Path has no segments.");if(t<0&&(t=e+t),e<=t||t<0)throw new Error("Index out of range.");return n[t]},getSegmentSubdivisions:function(t){for(var n=this.segments,e=n.length,r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=[],s=0;s<e;s++){var o=n[s].getSubdivisions({precision:r});i.push(o)}return i},getSubpaths:function(){for(var t=this.clone().validate().segments,n=t.length,e=[],r=0;r<n;r++){var i=t[r];i.isSubpathStart?e.push(new et(i)):e[e.length-1].appendSegment(i)}return e},insertSegment:function(t,n){var e,r=this.segments,i=r.length;if(t<0&&(t=i+t+1),i<t||t<0)throw new Error("Index out of range.");var s=null,o=null;if(0!==i&&(o=1<=t?(s=r[t-1]).nextSegment:r[0]),Array.isArray(n)){if(!(n=n.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");for(var a=n.length,h=0;h<a;h++){var u=n[h];e=this.prepareSegment(u,s,o),r.splice(t+h,0,e),s=e}}else{if(!n||!n.isSegment)throw new Error("Segment required.");e=this.prepareSegment(n,s,o),r.splice(t,0,e)}},intersectionWithLine:function(t,n){var e=null,r=this.toPolylines(n);if(!r)return null;for(var i=0,s=r.length;i<s;i++){var o=r[i],a=t.intersect(o);a&&(e||(e=[]),Array.isArray(a)?Array.prototype.push.apply(e,a):e.push(a))}return e},isDifferentiable:function(){for(var t=this.segments,n=t.length,e=0;e<n;e++){if(t[e].isDifferentiable())return!0}return!1},isValid:function(){var t=this.segments;return 0===t.length||"M"===t[0].type},length:function(t){var n=this.segments,e=n.length;if(0===e)return 0;for(var r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=void 0===t.segmentSubdivisions?this.getSegmentSubdivisions({precision:r}):t.segmentSubdivisions,s=0,o=0;o<e;o++){var a=n[o],h=i[o];s+=a.length({subdivisions:h})}return s},lengthAtT:function(t,n){var e=this.segments,r=e.length;if(0===r)return 0;var i=t.segmentIndex;if(i<0)return 0;var s=t.value;r<=i?(i=r-1,s=1):s<0?s=0:1<s&&(s=1);for(var o,a=void 0===(n=n||{}).precision?this.PRECISION:n.precision,h=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:a}):n.segmentSubdivisions,u=0,c=0;c<i;c++){var l=e[c];o=h[c],u+=l.length({precisison:a,subdivisions:o})}return l=e[i],o=h[i],u+=l.lengthAtT(s,{precisison:a,subdivisions:o})},pointAt:function(t,n){if(0===this.segments.length)return null;if(t<=0)return this.start.clone();if(1<=t)return this.end.clone();var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.pointAtLength(i,r)},pointAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;if(0===t)return this.start.clone();var i=!0;t<0&&(i=!1,t=-t);for(var s,o=void 0===(n=n||{}).precision?this.PRECISION:n.precision,a=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:o}):n.segmentSubdivisions,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=a[c],d=l.length({precision:o,subdivisions:f});if(l.isVisible){if(t<=h+d)return l.pointAtLength((i?1:-1)*(t-h),{precision:o,subdivisions:f});s=l}h+=d}return s?i?s.end:s.start:e[r-1].end.clone()},pointAtT:function(t){var n=this.segments,e=n.length;if(0===e)return null;var r=t.segmentIndex;if(r<0)return n[0].pointAtT(0);if(e<=r)return n[e-1].pointAtT(1);var i=t.value;return i<0?i=0:1<i&&(i=1),n[r].pointAtT(i)},PRECISION:3,prepareSegment:function(t,n,e){t.previousSegment=n,t.nextSegment=e,n&&(n.nextSegment=t),e&&(e.previousSegment=t);var r=t;return t.isSubpathStart&&(t.subpathStartSegment=t,r=e),r&&this.updateSubpathStartSegment(r),t},removeSegment:function(t){var n=this.segments,e=n.length;if(0===e)throw new Error("Path has no segments.");if(t<0&&(t=e+t),e<=t||t<0)throw new Error("Index out of range.");var r=n.splice(t,1)[0],i=r.previousSegment,s=r.nextSegment;i&&(i.nextSegment=s),s&&(s.previousSegment=i),r.isSubpathStart&&s&&this.updateSubpathStartSegment(s)},replaceSegment:function(t,n){var e,r=this.segments,i=r.length;if(0===i)throw new Error("Path has no segments.");if(t<0&&(t=i+t),i<=t||t<0)throw new Error("Index out of range.");var s=r[t],o=s.previousSegment,a=s.nextSegment,h=s.isSubpathStart;if(Array.isArray(n)){if(!(n=n.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");r.splice(t,1);for(var u=n.length,c=0;c<u;c++){var l=n[c];e=this.prepareSegment(l,o,a),r.splice(t+c,0,e),o=e,h&&e.isSubpathStart&&(h=!1)}}else{if(!n||!n.isSegment)throw new Error("Segment required.");e=this.prepareSegment(n,o,a),r.splice(t,1,e),h&&e.isSubpathStart&&(h=!1)}h&&a&&this.updateSubpathStartSegment(a)},round:function(t){for(var n=this.segments,e=n.length,r=0;r<e;r++){n[r].round(t)}return this},scale:function(t,n,e){for(var r=this.segments,i=r.length,s=0;s<i;s++){r[s].scale(t,n,e)}return this},segmentAt:function(t,n){var e=this.segmentIndexAt(t,n);return e?this.getSegment(e):null},segmentAtLength:function(t,n){var e=this.segmentIndexAtLength(t,n);return e?this.getSegment(e):null},segmentIndexAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.segmentIndexAtLength(i,r)},segmentIndexAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;var i=!0;t<0&&(i=!1,t=-t);for(var s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=null,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=o[c],d=l.length({precision:s,subdivisions:f});if(l.isVisible){if(t<=h+d)return c;a=c}h+=d}return a},serialize:function(){if(!this.isValid())throw new Error("Invalid path segments.");return this.toString()},tangentAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.tangentAtLength(i,r)},tangentAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;var i=!0;t<0&&(i=!1,t=-t);for(var s,o=void 0===(n=n||{}).precision?this.PRECISION:n.precision,a=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:o}):n.segmentSubdivisions,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=a[c],d=l.length({precision:o,subdivisions:f});if(l.isDifferentiable()){if(t<=h+d)return l.tangentAtLength((i?1:-1)*(t-h),{precision:o,subdivisions:f});s=l}h+=d}if(s){var g=i?1:0;return s.tangentAtT(g)}return null},tangentAtT:function(t){var n=this.segments,e=n.length;if(0===e)return null;var r=t.segmentIndex;if(r<0)return n[0].tangentAtT(0);if(e<=r)return n[e-1].tangentAtT(1);var i=t.value;return i<0?i=0:1<i&&(i=1),n[r].tangentAtT(i)},toPoints:function(t){var n=this.segments,e=n.length;if(0===e)return null;for(var r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=void 0===t.segmentSubdivisions?this.getSegmentSubdivisions({precision:r}):t.segmentSubdivisions,s=[],o=[],a=0;a<e;a++){var h=n[a];if(h.isVisible){var u=i[a];if(0<u.length){var c=u.map(function(t){return t.start});Array.prototype.push.apply(o,c)}else o.push(h.start)}else 0<o.length&&(o.push(n[a-1].end),s.push(o),o=[])}return 0<o.length&&(o.push(this.end),s.push(o)),s},toPolylines:function(t){var n=[],e=this.toPoints(t);if(!e)return null;for(var r=0,i=e.length;r<i;r++)n.push(new X(e[r]));return n},toString:function(){for(var t=this.segments,n=t.length,e="",r=0;r<n;r++){e+=t[r].serialize()+" "}return e.trim()},translate:function(t,n){for(var e=this.segments,r=e.length,i=0;i<r;i++){e[i].translate(t,n)}return this},updateSubpathStartSegment:function(t){for(var n=t.previousSegment;t&&!t.isSubpathStart;)t.subpathStartSegment=n?n.subpathStartSegment:null,t=(n=t).nextSegment},validate:function(){return this.isValid()||this.insertSegment(0,et.createSegment("M",0,0)),this}},Object.defineProperty(et.prototype,"start",{configurable:!0,enumerable:!0,get:function(){var t=this.segments,n=t.length;if(0===n)return null;for(var e=0;e<n;e++){var r=t[e];if(r.isVisible)return r.start}return t[n-1].end}}),Object.defineProperty(et.prototype,"end",{configurable:!0,enumerable:!0,get:function(){var t=this.segments,n=t.length;if(0===n)return null;for(var e=n-1;0<=e;e--){var r=t[e];if(r.isVisible)return r.end}return t[n-1].end}});var it={bbox:function(){throw new Error("Declaration missing for virtual function.")},clone:function(){throw new Error("Declaration missing for virtual function.")},closestPoint:function(){throw new Error("Declaration missing for virtual function.")},closestPointLength:function(){throw new Error("Declaration missing for virtual function.")},closestPointNormalizedLength:function(){throw new Error("Declaration missing for virtual function.")},closestPointT:function(t){if(this.closestPointNormalizedLength)return this.closestPointNormalizedLength(t);throw new Error("Neither closestPointT() nor closestPointNormalizedLength() function is implemented.")},closestPointTangent:function(){throw new Error("Declaration missing for virtual function.")},divideAt:function(){throw new Error("Declaration missing for virtual function.")},divideAtLength:function(){throw new Error("Declaration missing for virtual function.")},divideAtT:function(t){if(this.divideAt)return this.divideAt(t);throw new Error("Neither divideAtT() nor divideAt() function is implemented.")},equals:function(){throw new Error("Declaration missing for virtual function.")},getSubdivisions:function(){throw new Error("Declaration missing for virtual function.")},isDifferentiable:function(){throw new Error("Declaration missing for virtual function.")},isSegment:!0,isSubpathStart:!1,isVisible:!0,length:function(){throw new Error("Declaration missing for virtual function.")},lengthAtT:function(t){if(t<=0)return 0;var n=this.length();return 1<=t?n:n*t},nextSegment:null,pointAt:function(){throw new Error("Declaration missing for virtual function.")},pointAtLength:function(){throw new Error("Declaration missing for virtual function.")},pointAtT:function(t){if(this.pointAt)return this.pointAt(t);throw new Error("Neither pointAtT() nor pointAt() function is implemented.")},previousSegment:null,round:function(){throw new Error("Declaration missing for virtual function.")},subpathStartSegment:null,scale:function(){throw new Error("Declaration missing for virtual function.")},serialize:function(){throw new Error("Declaration missing for virtual function.")},tangentAt:function(){throw new Error("Declaration missing for virtual function.")},tangentAtLength:function(){throw new Error("Declaration missing for virtual function.")},tangentAtT:function(t){if(this.tangentAt)return this.tangentAt(t);throw new Error("Neither tangentAtT() nor tangentAt() function is implemented.")},toString:function(){throw new Error("Declaration missing for virtual function.")},translate:function(){throw new Error("Declaration missing for virtual function.")}};Object.defineProperty(it,"end",{configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(it,"start",{configurable:!0,enumerable:!0,get:function(){if(!this.previousSegment)throw new Error("Missing previous segment. (This segment cannot be the first segment of a path; OR segment has not yet been added to a path.)");return this.previousSegment.end}}),Object.defineProperty(it,"type",{configurable:!0,enumerable:!0,get:function(){throw new Error("Bad segment declaration. No type specified.")}});var st=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof st))return rt(st,r);if(0===i)throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates (none provided).");if(r[0]instanceof N){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates ("+i+" lines provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(2===i)return this.end=new L(+r[0],+r[1]),this;if(i<2)throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=2)o=r.slice(s,s+2),t.push(rt(st,o));return t}if(1===i)return this.end=new L(r[0]),this;for(t=[],s=0;s<i;s+=1)n=r[s],t.push(new st(n));return t},ot={clone:function(){return new st(this.end)},divideAt:function(t){var n=new N(this.start,this.end).divideAt(t);return[new st(n[0]),new st(n[1])]},divideAtLength:function(t){var n=new N(this.start,this.end).divideAtLength(t);return[new st(n[0]),new st(n[1])]},getSubdivisions:function(){return[]},isDifferentiable:function(){return!!this.previousSegment&&!this.start.equals(this.end)},round:function(t){return this.end.round(t),this},scale:function(t,n,e){return this.end.scale(t,n,e),this},serialize:function(){var t=this.end;return this.type+" "+t.x+" "+t.y},toString:function(){return this.type+" "+this.start+" "+this.end},translate:function(t,n){return this.end.translate(t,n),this}};Object.defineProperty(ot,"type",{configurable:!0,enumerable:!0,value:"L"}),st.prototype=nt(it,N.prototype,ot);var at=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof at))return rt(at,r);if(0===i)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates (none provided).");if(r[0]instanceof tt){if(1===i)return this.controlPoint1=r[0].controlPoint1.clone(),this.controlPoint2=r[0].controlPoint2.clone(),this.end=r[0].end.clone(),this;throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" curves provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(6===i)return this.controlPoint1=new L(+r[0],+r[1]),this.controlPoint2=new L(+r[2],+r[3]),this.end=new L(+r[4],+r[5]),this;if(i<6)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=6)o=r.slice(s,s+6),t.push(rt(at,o));return t}if(3===i)return this.controlPoint1=new L(r[0]),this.controlPoint2=new L(r[1]),this.end=new L(r[2]),this;if(i<3)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" points provided).");for(t=[],s=0;s<i;s+=3)n=r.slice(s,s+3),t.push(rt(at,n));return t},ht={clone:function(){return new at(this.controlPoint1,this.controlPoint2,this.end)},divideAt:function(t,n){var e=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAt(t,n);return[new at(e[0]),new at(e[1])]},divideAtLength:function(t,n){var e=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAtLength(t,n);return[new at(e[0]),new at(e[1])]},divideAtT:function(t){var n=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAtT(t);return[new at(n[0]),new at(n[1])]},isDifferentiable:function(){if(!this.previousSegment)return!1;var t=this.start,n=this.controlPoint1,e=this.controlPoint2,r=this.end;return!(t.equals(n)&&n.equals(e)&&e.equals(r))},round:function(t){return this.controlPoint1.round(t),this.controlPoint2.round(t),this.end.round(t),this},scale:function(t,n,e){return this.controlPoint1.scale(t,n,e),this.controlPoint2.scale(t,n,e),this.end.scale(t,n,e),this},serialize:function(){var t=this.controlPoint1,n=this.controlPoint2,e=this.end;return this.type+" "+t.x+" "+t.y+" "+n.x+" "+n.y+" "+e.x+" "+e.y},toString:function(){return this.type+" "+this.start+" "+this.controlPoint1+" "+this.controlPoint2+" "+this.end},translate:function(t,n){return this.controlPoint1.translate(t,n),this.controlPoint2.translate(t,n),this.end.translate(t,n),this}};Object.defineProperty(ht,"type",{configurable:!0,enumerable:!0,value:"C"}),at.prototype=nt(it,tt.prototype,ht);var ut=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof ut))return rt(ut,r);if(0===i)throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates (none provided).");if(r[0]instanceof N){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" lines provided).")}if(r[0]instanceof tt){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" curves provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(2===i)return this.end=new L(+r[0],+r[1]),this;if(i<2)throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=2)o=r.slice(s,s+2),0===s?t.push(rt(ut,o)):t.push(rt(st,o));return t}if(1===i)return this.end=new L(r[0]),this;for(t=[],s=0;s<i;s+=1)n=r[s],0===s?t.push(new ut(n)):t.push(new st(n));return t},ct={bbox:function(){return null},clone:function(){return new ut(this.end)},closestPoint:function(){return this.end.clone()},closestPointNormalizedLength:function(){return 0},closestPointLength:function(){return 0},closestPointT:function(){return 1},closestPointTangent:function(){return null},divideAt:function(){return[this.clone(),this.clone()]},divideAtLength:function(){return[this.clone(),this.clone()]},equals:function(t){return this.end.equals(t.end)},getSubdivisions:function(){return[]},isDifferentiable:function(){return!1},isSubpathStart:!0,isVisible:!1,length:function(){return 0},lengthAtT:function(){return 0},pointAt:function(){return this.end.clone()},pointAtLength:function(){return this.end.clone()},pointAtT:function(){return this.end.clone()},round:function(t){return this.end.round(t),this},scale:function(t,n,e){return this.end.scale(t,n,e),this},serialize:function(){var t=this.end;return this.type+" "+t.x+" "+t.y},tangentAt:function(){return null},tangentAtLength:function(){return null},tangentAtT:function(){return null},toString:function(){return this.type+" "+this.end},translate:function(t,n){return this.end.translate(t,n),this}};Object.defineProperty(ct,"start",{configurable:!0,enumerable:!0,get:function(){throw new Error("Illegal access. Moveto segments should not need a start property.")}}),Object.defineProperty(ct,"type",{configurable:!0,enumerable:!0,value:"M"}),ut.prototype=nt(it,ct);var lt=function(){for(var t=arguments,n=[],e=arguments.length,r=0;r<e;r++)n.push(t[r]);if(!(this instanceof lt))return rt(lt,n);if(0<e)throw new Error("Closepath constructor expects no arguments.");return this},ft={clone:function(){return new lt},divideAt:function(t){var n=new N(this.start,this.end).divideAt(t);return[n[1].isDifferentiable()?new st(n[0]):this.clone(),new st(n[1])]},divideAtLength:function(t){var n=new N(this.start,this.end).divideAtLength(t);return[n[1].isDifferentiable()?new st(n[0]):this.clone(),new st(n[1])]},getSubdivisions:function(){return[]},isDifferentiable:function(){return!(!this.previousSegment||!this.subpathStartSegment)&&!this.start.equals(this.end)},round:function(){return this},scale:function(){return this},serialize:function(){return this.type},toString:function(){return this.type+" "+this.start+" "+this.end},translate:function(){return this}};Object.defineProperty(ft,"end",{configurable:!0,enumerable:!0,get:function(){if(!this.subpathStartSegment)throw new Error("Missing subpath start segment. (This segment needs a subpath start segment (e.g. Moveto); OR segment has not yet been added to a path.)");return this.subpathStartSegment.end}}),Object.defineProperty(ft,"type",{configurable:!0,enumerable:!0,value:"Z"}),lt.prototype=nt(it,N.prototype,ft);var dt=et.segmentTypes={L:st,C:at,M:ut,Z:lt,z:lt};et.regexSupportedData=new RegExp("^[\\s\\d"+Object.keys(dt).join("")+",.]*$"),et.isDataSupported=function(t){return"string"==typeof t&&this.regexSupportedData.test(t)};var gt={curveThroughPoints:function(t){return console.warn("deprecated"),new et(tt.throughPoints(t)).serialize()},getCurveControlPoints:function(t){console.warn("deprecated");var n,e=[],r=[],i=t.length-1;if(1==i)return e[0]=new L((2*t[0].x+t[1].x)/3,(2*t[0].y+t[1].y)/3),r[0]=new L(2*e[0].x-t[0].x,2*e[0].y-t[0].y),[e,r];var s=[];for(n=1;n<i-1;n++)s[n]=4*t[n].x+2*t[n+1].x;s[0]=t[0].x+2*t[1].x,s[i-1]=(8*t[i-1].x+t[i].x)/2;var o=this.getFirstControlPoints(s);for(n=1;n<i-1;++n)s[n]=4*t[n].y+2*t[n+1].y;s[0]=t[0].y+2*t[1].y,s[i-1]=(8*t[i-1].y+t[i].y)/2;var a=this.getFirstControlPoints(s);for(n=0;n<i;n++)e.push(new L(o[n],a[n])),n<i-1?r.push(new L(2*t[n+1].x-o[n+1],2*t[n+1].y-a[n+1])):r.push(new L((t[i].x+o[i-1])/2,(t[i].y+a[i-1])/2));return[e,r]},getCurveDivider:function(t,n,e,r){console.warn("deprecated");var i=new tt(t,n,e,r);return function(t){var n=i.divide(t);return[{p0:n[0].start,p1:n[0].controlPoint1,p2:n[0].controlPoint2,p3:n[0].end},{p0:n[1].start,p1:n[1].controlPoint1,p2:n[1].controlPoint2,p3:n[1].end}]}},getFirstControlPoints:function(t){console.warn("deprecated");var n=t.length,e=[],r=[],i=2;e[0]=t[0]/i;for(var s=1;s<n;s++)r[s]=1/i,i=(s<n-1?4:3.5)-r[s],e[s]=(t[s]-e[s-1])/i;for(s=1;s<n;s++)e[n-s-1]-=r[n-s]*e[n-s];return e},getInversionSolver:function(t,n,e,r){console.warn("deprecated");var i=new tt(t,n,e,r);return function(t){return i.closestPointT(t)}}},vt=function(t){return this instanceof vt?"string"==typeof t?new vt.parse(t):void(this.points=Array.isArray(t)?t.map(L):[]):new vt(t)};function pt(t,n){var e=t.start.x,r=t.start.y,i=t.end.x,s=t.end.y,o=n.start.x,a=n.start.y,h=i-e,u=s-r,c=n.end.x-o,l=n.end.y-a,f=e-o,d=r-a,g=h*l-c*u,v=(h*d-u*f)/g,p=(c*d-l*f)/g;return 0<=v&&v<=1&&0<=p&&p<=1}function mt(t,n){var e=t.a,r=t.b,i=t.x,s=t.y,o=n.start.x-i,a=n.end.x-i,h=n.start.y-s,u=e*e,c=r*r,l=a-o,f=n.end.y-s-h,d=l*l/u+f*f/c,g=2*o*l/u+2*h*f/c,v=g*g-4*d*(o*o/u+h*h/c-1);if(0===v){var p=-g/2/d;return 0<=p&&p<=1}if(0<v){var m=Math.sqrt(v),y=(-g+m)/2/d,x=(-g-m)/2/d;return 0<=y&&y<=1||0<=x&&x<=1}return!1}function yt(t,n){return function(t,n,e,r){var i=Math.cos,s=Math.sin,o=s(n),a=i(n),h=s(r),u=i(r),c=o*o,l=a*a,f=o*a,d=h*h,g=u*u,v=h*u,p=t.a*t.a,m=t.b*t.b,y=e.a*e.a,x=e.b*e.b,w=p*c+m*l,b=y*d+x*g,S=p*l+m*c,P=y*g+x*d,A=2*(m-p)*f,T=2*(x-y)*v,L=-2*w*t.x-A*t.y,E=-2*b*e.x-T*e.y,C=-A*t.x-2*S*t.y,N=-T*e.x-2*P*e.y,I=w*t.x*t.x+S*t.y*t.y+A*t.x*t.y-p*m,M=b*e.x*e.x+P*e.y*e.y+T*e.x*e.y-y*x;T/=2,E/=2,N/=2;var R=Ut([[w,A/=2,L/=2],[A,S,C/=2],[L,C,I]]),O=Ut([[b,T,E],[T,P,N],[E,N,M]]),D=.33333333*(Ut([[b,A,L],[T,S,C],[E,C,I]])+Ut([[w,T,L],[A,P,C],[L,N,I]])+Ut([[w,A,E],[A,S,N],[L,C,M]])),F=.33333333*(Ut([[w,T,E],[A,P,N],[L,N,M]])+Ut([[b,A,E],[T,S,N],[E,C,M]])+Ut([[b,T,L],[T,P,C],[E,N,I]])),k=Bt([[R,D],[D,F]]),q=Bt([[R,F],[D,O]]),V=Bt([[D,F],[F,O]]);if(0<Bt([[2*k,q],[q,2*V]])&&(0<F||0<D))return!1;return!0}(t,0,n,0)}function xt(t,n){var e=n.start,r=n.end,i=t.x,s=t.y,o=t.width,a=t.height;return!(e.x>i+o&&r.x>i+o||e.x<i&&r.x<i||e.y>s+a&&r.y>s+a||e.y<s&&r.y<s)&&(!(!t.containsPoint(n.start)&&!t.containsPoint(n.end))||(pt(t.topLine(),n)||pt(t.rightLine(),n)||pt(t.bottomLine(),n)||pt(t.leftLine(),n)))}function wt(t,n){return!!bt(t,B.fromEllipse(n))&&Et(vt.fromRect(t),n)}function bt(t,n){return t.x<n.x+n.width&&t.x+t.width>n.x&&t.y<n.y+n.height&&t.y+t.height>n.y}function St(t,n){return qt(t,n,{interior:!1})}function Pt(t,n){return Vt(t,n,{interior:!1})}function At(t,n){return zt(t,n,{interior:!1})}function Tt(t,n){return Gt(t,n,{interior:!1})}function Lt(t,n){return qt(t,n,{interior:!0})}function Et(t,n){return Vt(t,n,{interior:!0})}function Ct(t,n){return zt(t,n,{interior:!0})}function Nt(t,n){return Gt(t,n,{interior:!0})}function It(t,n){return Wt(t,n,{interior:!0})}function Mt(t,e,r){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Lt(n,e):St(n,e)})}function Rt(t,e,r){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Et(n,e):Pt(n,e)})}function Ot(t,n,e){return Ft(t,vt.fromRect(n),e)}function Dt(t,n,e){return jt(t,n,e,{interior:!1})}function Ft(t,n,e){return jt(t,n,e,{interior:!0})}function kt(t,e,r,i){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Ft(e,n,i):Dt(e,n,i)})}function qt(t,n,e){void 0===e&&(e={});var r,i=e.interior;if(void 0===i&&(i=!1),i){if(t.containsPoint(n.start))return!0;var s=t.start,o=t.end,a=t.points;r=o.equals(s)?a:a.concat([s])}else r=t.points;for(var h=r.length,u=new N,c=0;c<h-1;c++)if(u.start=r[c],u.end=r[c+1],pt(n,u))return!0;return!1}function Vt(t,n,e){void 0===e&&(e={});var r,i=t.start,s=t.end,o=t.points;if(n.containsPoint(i))return!0;var a=e.interior;if(void 0===a&&(a=!1),a){if(t.containsPoint(n.center()))return!0;r=s.equals(i)?o:o.concat([i])}else r=o;for(var h=r.length,u=new N,c=0;c<h-1;c++)if(u.start=r[c],u.end=r[c+1],mt(n,u))return!0;return!1}function zt(t,n,e){return Wt(t,vt.fromRect(n),e)}function jt(t,e,r,i){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Wt(e,n,i):Gt(e,n,i)})}function Gt(t,n,e){void 0===e&&(e={});var r,i=e.interior;if(void 0===i&&(i=!1),i){var s=n.start;if(t.containsPoint(s))return!0;r=t.clone().close()}else r=t;for(var o=n.points,a=o.length,h=new N,u=0;u<a-1;u++)if(h.start=o[u],h.end=o[u+1],St(r,h))return!0;return!1}function Wt(t,n,e){return n.containsPoint(t.start)||Gt(t,n.clone().close(),e)}function Bt(t){return t[0][0]*t[1][1]-t[0][1]*t[1][0]}function Ut(t){return t[0][0]*t[1][1]*t[2][2]-t[0][0]*t[1][2]*t[2][1]-t[0][1]*t[1][0]*t[2][2]+t[0][1]*t[1][2]*t[2][0]+t[0][2]*t[1][0]*t[2][1]-t[0][2]*t[1][1]*t[2][0]}vt.parse=function(t){return new vt(H(t))},vt.fromRect=function(t){return new vt([t.topLeft(),t.topRight(),t.bottomRight(),t.bottomLeft()])},vt.prototype=nt(X.prototype,{type:v.Polygon,clone:function(){return new vt(Z(this.points))},convexHull:function(){return new vt(Y(this.points))},lengthPoints:function(){var t=this.start,n=this.end,e=this.points;return e.length<=1||t.equals(n)?e:e.concat([t.clone()])}});var Ht={intersection:{exists:function t(n,e,r,i){switch(n.type){case v.Line:switch(e.type){case v.Line:return pt(n,e)}break;case v.Ellipse:switch(e.type){case v.Line:return mt(n,e);case v.Ellipse:return yt(n,e)}break;case v.Rect:switch(e.type){case v.Line:return xt(n,e);case v.Ellipse:return wt(n,e);case v.Rect:return bt(n,e)}break;case v.Polyline:switch(e.type){case v.Line:return St(n,e);case v.Ellipse:return Pt(n,e);case v.Rect:return At(n,e);case v.Polyline:return Tt(n,e)}break;case v.Polygon:switch(e.type){case v.Line:return Lt(n,e);case v.Ellipse:return Et(n,e);case v.Rect:return Ct(n,e);case v.Polyline:return Nt(n,e);case v.Polygon:return It(n,e)}break;case v.Path:switch(e.type){case v.Line:return Mt(n,e,r);case v.Ellipse:return Rt(n,e,r);case v.Rect:return Ot(n,e,r);case v.Polyline:return Dt(n,e,r);case v.Polygon:return Ft(n,e,r);case v.Path:return kt(n,e,r,i)}}switch(e.type){case v.Ellipse:case v.Rect:case v.Polyline:case v.Polygon:case v.Path:return t(e,n,i,r);default:throw Error("The intersection for "+n+" and "+e+" could not be found.")}},lineWithLine:pt,ellipseWithLine:mt,ellipseWithEllipse:yt,rectWithLine:xt,rectWithEllipse:wt,rectWithRect:bt,polylineWithLine:St,polylineWithEllipse:Pt,polylineWithRect:At,polylineWithPolyline:Tt,polygonWithLine:Lt,polygonWithEllipse:Et,polygonWithRect:Ct,polygonWithPolyline:Nt,polygonWithPolygon:It,pathWithLine:Mt,pathWithEllipse:Rt,pathWithRect:Ot,pathWithPolyline:Dt,pathWithPolygon:Ft,pathWithPath:kt},scale:{linear:function(t,n,e){var r=t[1]-t[0],i=n[1]-n[0];return(e-t[0])/r*i+n[0]||0}},normalizeAngle:h,snapToGrid:s,toDeg:c,toRad:l,random:o,bezier:gt,Curve:tt,Ellipse:D,ellipse:F,Line:N,line:I,Path:et,Point:L,point:t,Polyline:X,Polygon:vt,Rect:B,rect:U,types:v};return function(){if(!("object"==typeof window&&!!window.SVGAngle))return function(){throw new Error("SVG is required to use Vectorizer.")};var F={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xml:"http://www.w3.org/XML/1998/namespace",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.org/1999/xhtml"},t=Math,v=t.PI,s=t.atan2,o=t.sqrt,l=t.min,f=t.max,p=t.cos,m=t.sin,k=function(t,n,e){if(!(this instanceof k))return k.apply(Object.create(k.prototype),arguments);if(t){if(k.isV(t)&&(t=t.node),n=n||{},k.isString(t)){if("svg"===(t=t.trim()).toLowerCase())t=k.createSvgDocument();else if("<"===t[0]){var r=k.createSvgDocument(t);if(1<r.childNodes.length){var i,s,o=[];for(i=0,s=r.childNodes.length;i<s;i++){var a=r.childNodes[i];o.push(new k(document.importNode(a,!0)))}return o}t=document.importNode(r.firstChild,!0)}else t=document.createElementNS(F.svg,t);k.ensureId(t)}return this.node=t,this.setAttributes(n),e&&this.append(e),this}},n=k.prototype;function q(t,n,e){e||(e={});for(var r=e.includeAnnotationIndices,i=e.eol,s=e.lineHeight,o=e.baseSize,a=0,h={},u=n.length-1,c=0;c<=u;c++){var l=n[c],f=null;if(k.isObject(l)){var d=l.attrs,g=k("tspan",d),v=g.node,p=l.t;i&&c===u&&(p+=i),v.textContent=p;var m=d.class;m&&g.addClass(m),r&&g.attr("annotations",l.annotations),f=parseFloat(d["font-size"]),isFinite(f)||(f=o),f&&a<f&&(a=f)}else i&&c===u&&(l+=i),v=document.createTextNode(l||" "),o&&a<o&&(a=o);t.appendChild(v)}return a&&(h.maxFontSize=a),s?h.lineHeight=s:a&&(h.lineHeight=1.2*a),h}Object.defineProperty(n,"id",{enumerable:!0,get:function(){return this.node.id},set:function(t){this.node.id=t}}),n.getTransformToElement=function(t){var n=this.node;if(k.isSVGGraphicsElement(t)&&k.isSVGGraphicsElement(n)){var e=k.toNode(t).getScreenCTM(),r=n.getScreenCTM();if(e&&r)return e.inverse().multiply(r)}return k.createSVGMatrix()},n.transform=function(t,n){var e=this.node;if(k.isUndefined(t))return k.transformStringToMatrix(this.attr("transform"));if(n&&n.absolute)return this.attr("transform",k.matrixToTransformString(t));var r=k.createSVGTransform(t);return e.transform.baseVal.appendItem(r),this},n.translate=function(t,n,e){e=e||{},n=n||0;var r=this.attr("transform")||"",i=k.parseTransformString(r);if(r=i.value,k.isUndefined(t))return i.translate;r=r.replace(/translate\([^)]*\)/g,"").trim();var s="translate("+(e.absolute?t:i.translate.tx+t)+","+(e.absolute?n:i.translate.ty+n)+")";return this.attr("transform",(s+" "+r).trim()),this},n.rotate=function(t,n,e,r){r=r||{};var i=this.attr("transform")||"",s=k.parseTransformString(i);if(i=s.value,k.isUndefined(t))return s.rotate;i=i.replace(/rotate\([^)]*\)/g,"").trim(),t%=360;var o="rotate("+(r.absolute?t:s.rotate.angle+t)+(void 0!==n&&void 0!==e?","+n+","+e:"")+")";return this.attr("transform",(i+" "+o).trim()),this},n.scale=function(t,n){n=k.isUndefined(n)?t:n;var e=this.attr("transform")||"",r=k.parseTransformString(e);if(e=r.value,k.isUndefined(t))return r.scale;e=e.replace(/scale\([^)]*\)/g,"").trim();var i="scale("+t+","+n+")";return this.attr("transform",(e+" "+i).trim()),this},n.bbox=function(t,n){var e,r=this.node,i=r.ownerSVGElement;if(!i)return new B(0,0,0,0);try{e=r.getBBox()}catch(t){e={x:r.clientLeft,y:r.clientTop,width:r.clientWidth,height:r.clientHeight}}if(t)return new B(e);var s=this.getTransformToElement(n||i);return k.transformRect(e,s)},n.getBBox=function(t){var n,e={},r=this.node;if(!r.ownerSVGElement||!k.isSVGGraphicsElement(r))return new B(0,0,0,0);if(t&&(t.target&&(e.target=k.toNode(t.target)),t.recursive&&(e.recursive=t.recursive)),e.recursive){var i=this.children(),s=i.length;if(0===s)return this.getBBox({target:e.target,recursive:!1});e.target||(e.target=this);for(var o=0;o<s;o++){var a,h=i[o];a=0===h.children().length?h.getBBox({target:e.target,recursive:!1}):h.getBBox({target:e.target,recursive:!0}),n=n?n.union(a):a}return n}try{n=r.getBBox()}catch(t){n={x:r.clientLeft,y:r.clientTop,width:r.clientWidth,height:r.clientHeight}}if(e.target){var u=this.getTransformToElement(e.target);return k.transformRect(n,u)}return new B(n)};var V=/em$/;function z(t,n){var e=parseFloat(t);return V.test(t)?e*n:e}n.text=function(t,n){if(t&&"string"!=typeof t)throw new Error("Vectorizer: text() expects the first argument to be a string.");t=k.sanitizeText(t),n||(n={});var e=n.displayEmpty,r=n.eol,i=n.textPath,s=n.textVerticalAnchor,o="middle"===s||"bottom"===s||"top"===s,a=n.x;void 0===a&&(a=this.attr("x")||0);var h=n.includeAnnotationIndices,u=n.annotations;u&&!k.isArray(u)&&(u=[u]);var c=n.lineHeight,l="auto"===c,f=l?"1.5em":c||"1em";this.empty(),this.attr({"xml:space":"preserve",display:t||e?null:"none"});var d=parseFloat(this.attr("font-size"));d||(d=16,(o||u)&&this.attr("font-size",d));var g,v=document;g=i?("string"==typeof i&&(i={d:i}),function(t,n){t||(t={});var e=k("textPath"),r=t.d;if(r&&void 0===t["xlink:href"]){var i=k("path").attr("d",r).appendTo(n.defs());e.attr("xlink:href","#"+i.id)}return k.isObject(t)&&e.attr(t),e.node}(i,this)):v.createDocumentFragment();for(var p,m=0,y=t.split("\n"),x=[],w=0,b=y.length-1;w<=b;w++){var S,P=f,A="v-line",T=v.createElementNS(F.svg,"tspan"),L=y[w];if(L)if(u){var E=k.annotateString(L,u,{offset:-m,includeAnnotationIndices:h}),C=(S=q(T,E,{includeAnnotationIndices:h,eol:w!==b&&r,lineHeight:l?null:f,baseSize:d})).lineHeight;C&&l&&0!==w&&(P=C),0===w&&(p=.8*S.maxFontSize)}else r&&w!==b&&(L+=r),T.textContent=L;else{T.textContent="-",A+=" v-empty-line";var N=T.style;if(N.fillOpacity=0,N.strokeOpacity=0,u){S={};for(var I=d,M=(E=k.findAnnotationsAtIndex(u,m)).length;0<M;M--){var R=E[M-1].attrs;if(R&&"font-size"in R){var O=parseFloat(R["font-size"]);if(isFinite(O)){I=O;break}}}l&&(0<w?P=1.2*I:p=.8*I),T.setAttribute("font-size",I),S.maxFontSize=I}}S&&x.push(S),0<w&&T.setAttribute("dy",P),(0<w||i)&&T.setAttribute("x",a),T.className.baseVal=A,g.appendChild(T),m+=L.length+1}if(o)if(u)P=function(t,n,e,r){if(!Array.isArray(n))return 0;var i=n.length;if(!i)return 0;for(var s=n[0],o=z(s.maxFontSize,e)||e,a=0,h=z(r,e),u=1;u<i;u++)a+=z((s=n[u]).lineHeight,e)||h;var c,l=z(s.maxFontSize,e)||e;switch(t){case"middle":c=o/2-.15*l-a/2;break;case"bottom":c=-.25*l-a;break;default:case"top":c=.8*o}return c}(s,x,d,f);else if("top"===s)P="0.8em";else{var D;switch(0<b?(D=parseFloat(f)||1,D*=b,V.test(f)||(D/=d)):D=0,s){case"middle":P=.3-D/2+"em";break;case"bottom":P=-D-.3+"em"}}else 0===s?P="0em":s?P=s:(P=0,null===this.attr("y")&&this.attr("y",p||"0.8em"));return g.firstChild.setAttribute("dy",P),this.append(g),this},n.removeAttr=function(t){var n=a[t],e=k.qualifyAttr(n),r=e.ns,i=e.local,s=this.node;return r?s.hasAttributeNS(r,i)&&s.removeAttributeNS(r,i):s.hasAttribute(n)&&s.removeAttribute(n),this},n.attr=function(t,n){if(k.isUndefined(t)){for(var e=this.node.attributes,r={},i=0;i<e.length;i++)r[e[i].name]=e[i].value;return r}if(k.isString(t)&&k.isUndefined(n))return this.node.getAttribute(a[t]);if("object"==typeof t)for(var s in t)t.hasOwnProperty(s)&&this.setAttribute(s,t[s]);else this.setAttribute(t,n);return this},n.normalizePath=function(){return"PATH"===this.tagName()&&this.attr("d",k.normalizePathData(this.attr("d"))),this},n.remove=function(){return this.node.parentNode&&this.node.parentNode.removeChild(this.node),this},n.empty=function(){for(;this.node.firstChild;)this.node.removeChild(this.node.firstChild);return this},n.setAttributes=function(t){for(var n in t)t.hasOwnProperty(n)&&this.setAttribute(n,t[n]);return this},n.append=function(t){k.isArray(t)||(t=[t]);for(var n=0,e=t.length;n<e;n++)this.node.appendChild(k.toNode(t[n]));return this},n.prepend=function(t){var n=this.node.firstChild;return n?k(n).before(t):this.append(t)},n.before=function(t){var n=this.node,e=n.parentNode;if(e){k.isArray(t)||(t=[t]);for(var r=0,i=t.length;r<i;r++)e.insertBefore(k.toNode(t[r]),n)}return this},n.appendTo=function(t){return k.toNode(t).appendChild(this.node),this},n.svg=function(){return this.node instanceof window.SVGSVGElement?this:k(this.node.ownerSVGElement)},n.tagName=function(){return this.node.tagName.toUpperCase()},n.defs=function(){var t=this.svg()||this,n=t.node.getElementsByTagName("defs")[0];return n?k(n):k("defs").appendTo(t)},n.clone=function(){var t=k(this.node.cloneNode(!0));return t.node.id=k.uniqueId(),t},n.findOne=function(t){var n=this.node.querySelector(t);return n?k(n):void 0},n.find=function(t){var n=[],e=this.node.querySelectorAll(t);if(e)for(var r=0;r<e.length;r++)n.push(k(e[r]));return n},n.children=function(){for(var t=this.node.childNodes,n=[],e=0;e<t.length;e++){1===t[e].nodeType&&n.push(k(t[e]))}return n},n.parent=function(){return k(this.node.parentNode)||null},n.index=function(){for(var t=0,n=this.node.previousSibling;n;)1===n.nodeType&&t++,n=n.previousSibling;return t},n.findParentByClass=function(t,n){for(var e=this.node.ownerSVGElement,r=this.node.parentNode;r&&r!==n&&r!==e;){var i=k(r);if(i.hasClass(t))return i;r=r.parentNode}return null},n.contains=function(t){var n=this.node,e=k.toNode(t),r=e&&e.parentNode;return n===r||!!(r&&1===r.nodeType&&16&n.compareDocumentPosition(r))},n.toLocalPoint=function(t,n){var e=this.svg().node,r=e.createSVGPoint();r.x=t,r.y=n;try{var i=r.matrixTransform(e.getScreenCTM().inverse()),s=this.getTransformToElement(e).inverse()}catch(t){return r}return i.matrixTransform(s)},n.translateCenterToPoint=function(t){var n=this.getBBox({target:this.svg()}).center();return this.translate(t.x-n.x,t.y-n.y),this},n.translateAndAutoOrient=function(t,n,e){t=new L(t),n=new L(n),e||(e=this.svg());var r=this.scale();this.attr("transform","");var i=this.getBBox({target:e}).scale(r.sx,r.sy),s=k.createSVGTransform();s.setTranslate(-i.x-i.width/2,-i.y-i.height/2);var o=k.createSVGTransform(),a=t.angleBetween(n,t.clone().offset(1,0));a&&o.setRotate(a,0,0);var h=k.createSVGTransform(),u=t.clone().move(n,i.width/2);h.setTranslate(2*t.x-u.x,2*t.y-u.y);var c=this.getTransformToElement(e),l=k.createSVGTransform();return l.setMatrix(h.matrix.multiply(o.matrix.multiply(s.matrix.multiply(c.scale(r.sx,r.sy))))),this.attr("transform",k.matrixToTransformString(l.matrix)),this},n.animateAlongPath=function(t,n){n=k.toNode(n);var e=k.ensureId(n),r=k("animateMotion",t),i=k("mpath",{"xlink:href":"#"+e});r.append(i),this.append(r);try{r.node.beginElement()}catch(t){if("fake"===document.documentElement.getAttribute("smiling")){var s=r.node;s.animators=[];var o=s.getAttribute("id");o&&(id2anim[o]=s);for(var a=getTargets(s),h=0,u=a.length;h<u;h++){var c=a[h],l=new Animator(s,c,h);animators.push(l),(s.animators[h]=l).register()}}}return this};var e=/[^\x20\t\r\n\f]+/g;function i(t){return k.isString(t)&&t.trim().match(e)||[]}n.hasClass=function(t){return!!k.isString(t)&&this.node.classList.contains(t.trim())},n.addClass=function(t){var n;return(n=this.node.classList).add.apply(n,i(t)),this},n.removeClass=function(t){var n;return(n=this.node.classList).remove.apply(n,i(t)),this},n.toggleClass=function(t,n){for(var e=i(t),r=0;r<e.length;r++)this.node.classList.toggle(e[r],n);return this},n.sample=function(t){t=t||1;for(var n,e=this.node,r=e.getTotalLength(),i=[],s=0;s<r;)n=e.getPointAtLength(s),i.push({x:n.x,y:n.y,distance:s}),s+=t;return i},n.convertToPath=function(){var t=k("path");t.attr(this.attr());var n=this.convertToPathData();return n&&t.attr("d",n),t},n.convertToPathData=function(){var t=this.tagName();switch(t){case"PATH":return this.attr("d");case"LINE":return k.convertLineToPathData(this.node);case"POLYGON":return k.convertPolygonToPathData(this.node);case"POLYLINE":return k.convertPolylineToPathData(this.node);case"ELLIPSE":return k.convertEllipseToPathData(this.node);case"CIRCLE":return k.convertCircleToPathData(this.node);case"RECT":return k.convertRectToPathData(this.node)}throw new Error(t+" cannot be converted to PATH.")},k.prototype.toGeometryShape=function(){var t,n,e,r,i,s,o,a,h,u,c,l,f,d,g;switch(this.tagName()){case"RECT":return t=parseFloat(this.attr("x"))||0,n=parseFloat(this.attr("y"))||0,e=parseFloat(this.attr("width"))||0,r=parseFloat(this.attr("height"))||0,new B(t,n,e,r);case"CIRCLE":return i=parseFloat(this.attr("cx"))||0,s=parseFloat(this.attr("cy"))||0,o=parseFloat(this.attr("r"))||0,new D({x:i,y:s},o,o);case"ELLIPSE":return i=parseFloat(this.attr("cx"))||0,s=parseFloat(this.attr("cy"))||0,a=parseFloat(this.attr("rx"))||0,h=parseFloat(this.attr("ry"))||0,new D({x:i,y:s},a,h);case"POLYLINE":return u=k.getPointsFromSvgNode(this),new X(u);case"POLYGON":return 1<(u=k.getPointsFromSvgNode(this)).length&&u.push(u[0]),new X(u);case"PATH":return c=this.attr("d"),et.isDataSupported(c)||(c=k.normalizePathData(c)),new et(c);case"LINE":return l=parseFloat(this.attr("x1"))||0,d=parseFloat(this.attr("y1"))||0,f=parseFloat(this.attr("x2"))||0,g=parseFloat(this.attr("y2"))||0,new N({x:l,y:d},{x:f,y:g})}return this.getBBox()},n.findIntersection=function(t,n){var e=this.svg().node;n=n||e;var r=this.getBBox({target:n}),i=r.center();if(r.intersectionWithLineFromCenterToPoint(t)){var s,o=this.tagName();if("RECT"===o){var a=new B(parseFloat(this.attr("x")||0),parseFloat(this.attr("y")||0),parseFloat(this.attr("width")),parseFloat(this.attr("height"))),h=this.getTransformToElement(n),u=k.decomposeMatrix(h),c=e.createSVGTransform();c.setRotate(-u.rotation,i.x,i.y);var l=k.transformRect(a,c.matrix.multiply(h));s=new B(l).intersectionWithLineFromCenterToPoint(t,u.rotation)}else if("PATH"===o||"POLYGON"===o||"POLYLINE"===o||"CIRCLE"===o||"ELLIPSE"===o){var f,d,g,v,p,m=("PATH"===o?this:this.convertToPath()).sample(),y=1/0,x=[];for(f=0;f<m.length;f++)d=m[f],g=(g=k.createSVGPoint(d.x,d.y)).matrixTransform(this.getTransformToElement(n)),(p=(d=new L(g)).distance(i)+(v=1.1*d.distance(t)))<y?(y=p,x=[{sample:d,refDistance:v}]):p<y+1&&x.push({sample:d,refDistance:v});x.sort(function(t,n){return t.refDistance-n.refDistance}),x[0]&&(s=x[0].sample)}return s}},n.setAttribute=function(t,n){var e=this.node;if(null===n)return this.removeAttr(t),this;var r=a[t],i=k.qualifyAttr(r).ns;return i?e.setAttributeNS(i,r,n):"id"===r?e.id=n:e.setAttribute(r,n),this},k.createSvgDocument=function(t){if(t){var n='<svg xmlns="'+F.svg+'" xmlns:xlink="'+F.xlink+'" version="1.1">'+t+"</svg>";return k.parseXML(n,{async:!1}).documentElement}var e=document.createElementNS(F.svg,"svg");return e.setAttributeNS(F.xmlns,"xmlns:xlink",F.xlink),e.setAttribute("version","1.1"),e},k.createSVGStyle=function(t){return k("style",{type:"text/css"},[k.createCDATASection(t)]).node},k.createCDATASection=function(t){return void 0===t&&(t=""),document.implementation.createDocument(null,"xml",null).createCDATASection(t)},k.idCounter=0,k.uniqueId=function(){return"v-"+ ++k.idCounter},k.toNode=function(t){return k.isV(t)?t.node:t.nodeName&&t||t[0]},k.ensureId=function(t){return(t=k.toNode(t)).id||(t.id=k.uniqueId())},k.sanitizeText=function(t){return(t||"").replace(/ /g,"\xa0")},k.isUndefined=function(t){return void 0===t},k.isString=function(t){return"string"==typeof t},k.isObject=function(t){return t&&"object"==typeof t},k.isArray=Array.isArray,k.parseXML=function(t,n){var e;n=n||{};try{var r=new DOMParser;k.isUndefined(n.async)||(r.async=n.async),e=r.parseFromString(t,"text/xml")}catch(t){e=void 0}if(!e||e.getElementsByTagName("parsererror").length)throw new Error("Invalid XML: "+t);return e};var r=Object.create(null);["baseFrequency","baseProfile","clipPathUnits","contentScriptType","contentStyleType","diffuseConstant","edgeMode","externalResourcesRequired","filterRes","filterUnits","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].forEach(function(t){return r[t]=t}),r.xlinkShow="xlink:show",r.xlinkRole="xlink:role",r.xlinkActuate="xlink:actuate",r.xlinkHref="xlink:href",r.xlinkType="xlink:type",r.xlinkTitle="xlink:title",r.xmlBase="xml:base",r.xmlLang="xml:lang",r.xmlSpace="xml:space";var a=new Proxy(r,{get:function(t,n){return k.supportCamelCaseAttributes?n in t?t[n]:t[n]=n.replace(/[A-Z]/g,"-$&").toLowerCase():n}});Object.defineProperty(k,"attributeNames",{enumerable:!0,value:a,writable:!1}),Object.defineProperty(k,"supportCamelCaseAttributes",{enumerable:!0,value:!0,writable:!0}),k.qualifyAttr=function(t){if(-1===t.indexOf(":"))return{ns:null,local:t};var n=t.split(":");return{ns:F[n[0]],local:n[1]}},k.transformSeparatorRegex=/[ ,]+/,k.transformRegex=/\b\w+\([^()]+\)/g,k.transformFunctionRegex=/\b(\w+)\(([^()]+)\)/,k.transformTranslateRegex=/\btranslate\(([^()]+)\)/,k.transformRotateRegex=/\brotate\(([^()]+)\)/,k.transformScaleRegex=/\bscale\(([^()]+)\)/,k.transformStringToMatrix=function(t){var n=k.createSVGMatrix(),e=t&&t.match(k.transformRegex);if(!e)return n;for(var r=e.length,i=0;i<r;i++){var s=e[i].match(k.transformFunctionRegex);if(s){var o=void 0,a=void 0,h=void 0,u=void 0,c=void 0,l=k.createSVGMatrix(),f=s[1].toLowerCase(),d=s[2].split(k.transformSeparatorRegex);switch(f){case"scale":o=parseFloat(d[0]),a=void 0===d[1]?o:parseFloat(d[1]),l=l.scaleNonUniform(o,a);break;case"translate":h=parseFloat(d[0]),u=parseFloat(d[1]),l=l.translate(h,u);break;case"rotate":c=parseFloat(d[0]),h=parseFloat(d[1])||0,u=parseFloat(d[2])||0,l=0!==h||0!==u?l.translate(h,u).rotate(c).translate(-h,-u):l.rotate(c);break;case"skewx":c=parseFloat(d[0]),l=l.skewX(c);break;case"skewy":c=parseFloat(d[0]),l=l.skewY(c);break;case"matrix":l.a=parseFloat(d[0]),l.b=parseFloat(d[1]),l.c=parseFloat(d[2]),l.d=parseFloat(d[3]),l.e=parseFloat(d[4]),l.f=parseFloat(d[5]);break;default:continue}n=n.multiply(l)}}return n},k.matrixToTransformString=function(t){return t||(t=!0),"matrix("+(void 0!==t.a?t.a:1)+","+(void 0!==t.b?t.b:0)+","+(void 0!==t.c?t.c:0)+","+(void 0!==t.d?t.d:1)+","+(void 0!==t.e?t.e:0)+","+(void 0!==t.f?t.f:0)+")"},k.parseTransformString=function(t){var n,e,r;if(t){var i=k.transformSeparatorRegex;if(0<=t.trim().indexOf("matrix")){var s=k.transformStringToMatrix(t),o=k.decomposeMatrix(s);n=[o.translateX,o.translateY],r=[o.scaleX,o.scaleY],e=[o.rotation];var a=[];0===n[0]&&0===n[1]||a.push("translate("+n+")"),1===r[0]&&1===r[1]||a.push("scale("+r+")"),0!==e[0]&&a.push("rotate("+e+")"),t=a.join(" ")}else{var h=t.match(k.transformTranslateRegex);h&&(n=h[1].split(i));var u=t.match(k.transformRotateRegex);u&&(e=u[1].split(i));var c=t.match(k.transformScaleRegex);c&&(r=c[1].split(i))}}var l=r&&r[0]?parseFloat(r[0]):1;return{value:t,translate:{tx:n&&n[0]?parseInt(n[0],10):0,ty:n&&n[1]?parseInt(n[1],10):0},rotate:{angle:e&&e[0]?parseInt(e[0],10):0,cx:e&&e[1]?parseInt(e[1],10):void 0,cy:e&&e[2]?parseInt(e[2],10):void 0},scale:{sx:l,sy:r&&r[1]?parseFloat(r[1]):l}}},k.deltaTransformPoint=function(t,n){return{x:n.x*t.a+n.y*t.c+0,y:n.x*t.b+n.y*t.d+0}},k.decomposeMatrix=function(t){var n=k.deltaTransformPoint(t,{x:0,y:1}),e=k.deltaTransformPoint(t,{x:1,y:0}),r=180/v*s(n.y,n.x)-90,i=180/v*s(e.y,e.x);return{translateX:t.e,translateY:t.f,scaleX:o(t.a*t.a+t.b*t.b),scaleY:o(t.c*t.c+t.d*t.d),skewX:r,skewY:i,rotation:r}},k.matrixToScale=function(t){var n,e,r,i;return t?(n=k.isUndefined(t.a)?1:t.a,i=k.isUndefined(t.d)?1:t.d,e=t.b,r=t.c):n=i=1,{sx:e?o(n*n+e*e):n,sy:r?o(r*r+i*i):i}},k.matrixToRotate=function(t){var n={x:0,y:1};return t&&(n=k.deltaTransformPoint(t,n)),{angle:h(c(s(n.y,n.x))-90)}},k.matrixToTranslate=function(t){return{tx:t&&t.e||0,ty:t&&t.f||0}},k.isV=function(t){return t instanceof k},k.isVElement=k.isV,k.isSVGGraphicsElement=function(t){return!!t&&((t=k.toNode(t))instanceof SVGElement&&"function"==typeof t.getScreenCTM)};var d=k("svg").node;return k.createSVGMatrix=function(t){var n=d.createSVGMatrix();for(var e in t)n[e]=t[e];return n},k.createSVGTransform=function(t){return k.isUndefined(t)?d.createSVGTransform():(t instanceof SVGMatrix||(t=k.createSVGMatrix(t)),d.createSVGTransformFromMatrix(t))},k.createSVGPoint=function(t,n){var e=d.createSVGPoint();return e.x=t,e.y=n,e},k.transformRect=function(t,n){var e=d.createSVGPoint();e.x=t.x,e.y=t.y;var r=e.matrixTransform(n);e.x=t.x+t.width,e.y=t.y;var i=e.matrixTransform(n);e.x=t.x+t.width,e.y=t.y+t.height;var s=e.matrixTransform(n);e.x=t.x,e.y=t.y+t.height;var o=e.matrixTransform(n),a=l(r.x,i.x,s.x,o.x),h=f(r.x,i.x,s.x,o.x),u=l(r.y,i.y,s.y,o.y),c=f(r.y,i.y,s.y,o.y);return new B(a,u,h-a,c-u)},k.transformPoint=function(t,n){return new L(k.createSVGPoint(t.x,t.y).matrixTransform(n))},k.transformLine=function(t,n){return new N(k.transformPoint(t.start,n),k.transformPoint(t.end,n))},k.transformPolyline=function(t,n){var e=t instanceof X?t.points:t;k.isArray(e)||(e=[]);for(var r=[],i=0,s=e.length;i<s;i++)r[i]=k.transformPoint(e[i],n);return new X(r)},k.styleToObject=function(t){for(var n={},e=t.split(";"),r=0;r<e.length;r++){var i=e[r].split("=");n[i[0].trim()]=i[1].trim()}return n},k.createSlicePathData=function(t,n,e,r){var i=2*v-1e-6,s=t,o=n,a=e,h=r,u=(h<a&&(u=a,a=h,h=u),h-a),c=u<v?"0":"1",l=p(a),f=m(a),d=p(h),g=m(h);return i<=u?s?"M0,"+o+"A"+o+","+o+" 0 1,1 0,"+-o+"A"+o+","+o+" 0 1,1 0,"+o+"M0,"+s+"A"+s+","+s+" 0 1,0 0,"+-s+"A"+s+","+s+" 0 1,0 0,"+s+"Z":"M0,"+o+"A"+o+","+o+" 0 1,1 0,"+-o+"A"+o+","+o+" 0 1,1 0,"+o+"Z":s?"M"+o*l+","+o*f+"A"+o+","+o+" 0 "+c+",1 "+o*d+","+o*g+"L"+s*d+","+s*g+"A"+s+","+s+" 0 "+c+",0 "+s*l+","+s*f+"Z":"M"+o*l+","+o*f+"A"+o+","+o+" 0 "+c+",1 "+o*d+","+o*g+"L0,0Z"},k.mergeAttrs=function(t,n){for(var e in n)"class"===e?t[e]=t[e]?t[e]+" "+n[e]:n[e]:"style"===e?k.isObject(t[e])&&k.isObject(n[e])?t[e]=k.mergeAttrs(t[e],n[e]):k.isObject(t[e])?t[e]=k.mergeAttrs(t[e],k.styleToObject(n[e])):k.isObject(n[e])?t[e]=k.mergeAttrs(k.styleToObject(t[e]),n[e]):t[e]=k.mergeAttrs(k.styleToObject(t[e]),k.styleToObject(n[e])):t[e]=n[e];return t},k.annotateString=function(t,n,e){n=n||[];for(var r,i,s,o=(e=e||{}).offset||0,a=[],h=[],u=0;u<t.length;u++){i=h[u]=t[u];for(var c=0;c<n.length;c++){var l=n[c],f=l.start+o,d=l.end+o;f<=u&&u<d&&(k.isObject(i)?i.attrs=k.mergeAttrs(k.mergeAttrs({},i.attrs),l.attrs):i=h[u]={t:t[u],attrs:l.attrs},e.includeAnnotationIndices&&(i.annotations||(i.annotations=[])).push(c))}(s=h[u-1])?k.isObject(i)&&k.isObject(s)?JSON.stringify(i.attrs)===JSON.stringify(s.attrs)?r.t+=i.t:(a.push(r),r=i):r=k.isObject(i)?(a.push(r),i):k.isObject(s)?(a.push(r),i):(r||"")+i:r=i}return r&&a.push(r),a},k.findAnnotationsAtIndex=function(t,n){var e=[];return t&&t.forEach(function(t){t.start<n&&n<=t.end&&e.push(t)}),e},k.findAnnotationsBetweenIndexes=function(t,n,e){var r=[];return t&&t.forEach(function(t){(n>=t.start&&n<t.end||e>t.start&&e<=t.end||t.start>=n&&t.end<e)&&r.push(t)}),r},k.shiftAnnotations=function(t,n,e){return t&&t.forEach(function(t){t.start<n&&t.end>=n?t.end+=e:t.start>=n&&(t.start+=e,t.end+=e)}),t},k.convertLineToPathData=function(t){return["M",(t=k(t)).attr("x1"),t.attr("y1"),"L",t.attr("x2"),t.attr("y2")].join(" ")},k.convertPolygonToPathData=function(t){var n=k.getPointsFromSvgNode(t);return 0===n.length?null:k.svgPointsToPath(n)+" Z"},k.convertPolylineToPathData=function(t){var n=k.getPointsFromSvgNode(t);return 0===n.length?null:k.svgPointsToPath(n)},k.svgPointsToPath=function(t){for(var n=0,e=t.length;n<e;n++)t[n]=t[n].x+" "+t[n].y;return"M "+t.join(" L")},k.getPointsFromSvgNode=function(t){var n=[],e=(t=k.toNode(t)).points;if(e)for(var r=0,i=e.numberOfItems;r<i;r++)n.push(e.getItem(r));return n},k.KAPPA=.551784,k.convertCircleToPathData=function(t){t=k(t);var n=parseFloat(t.attr("cx"))||0,e=parseFloat(t.attr("cy"))||0,r=parseFloat(t.attr("r")),i=r*k.KAPPA;return["M",n,e-r,"C",n+i,e-r,n+r,e-i,n+r,e,"C",n+r,e+i,n+i,e+r,n,e+r,"C",n-i,e+r,n-r,e+i,n-r,e,"C",n-r,e-i,n-i,e-r,n,e-r,"Z"].join(" ")},k.convertEllipseToPathData=function(t){t=k(t);var n=parseFloat(t.attr("cx"))||0,e=parseFloat(t.attr("cy"))||0,r=parseFloat(t.attr("rx")),i=parseFloat(t.attr("ry"))||r,s=r*k.KAPPA,o=i*k.KAPPA;return["M",n,e-i,"C",n+s,e-i,n+r,e-o,n+r,e,"C",n+r,e+o,n+s,e+i,n,e+i,"C",n-s,e+i,n-r,e+o,n-r,e,"C",n-r,e-o,n-s,e-i,n,e-i,"Z"].join(" ")},k.convertRectToPathData=function(t){return t=k(t),k.rectToPath({x:parseFloat(t.attr("x"))||0,y:parseFloat(t.attr("y"))||0,width:parseFloat(t.attr("width"))||0,height:parseFloat(t.attr("height"))||0,rx:parseFloat(t.attr("rx"))||0,ry:parseFloat(t.attr("ry"))||0})},k.rectToPath=function(t){var n=t.x,e=t.y,r=t.width,i=t.height,s=l(t.rx||t["top-rx"]||0,r/2),o=l(t.rx||t["bottom-rx"]||0,r/2),a=l(t.ry||t["top-ry"]||0,i/2),h=l(t.ry||t["bottom-ry"]||0,i/2);return(s||o||a||h?["M",n,e+a,"v",i-a-h,"a",o,h,0,0,0,o,h,"h",r-2*o,"a",o,h,0,0,0,o,-h,"v",-(i-h-a),"a",s,a,0,0,0,-s,-a,"h",-(r-2*s),"a",s,a,0,0,0,-s,a,"Z"]:["M",n,e,"H",n+r,"V",e+i,"H",n,"V",e,"Z"]).join(" ")},k.normalizePathData=function(){var t="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029",v=new RegExp("([a-z])["+t+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+t+"]*,?["+t+"]*)+)","ig"),p=new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+t+"]*,?["+t+"]*","ig"),n=Math,B=n.PI,U=n.sin,H=n.cos,Z=n.tan,Y=n.asin,X=n.sqrt,J=n.abs;function f(t,n,e,r,i,s){return[1/3*t+2/3*e,1/3*n+2/3*r,1/3*i+2/3*e,1/3*s+2/3*r,i,s]}function K(t,n,e){return{x:t*H(e)-n*U(e),y:t*U(e)+n*H(e)}}function d(t){if(Array.isArray(t)&&Array.isArray(t&&t[0])||(t=function(t){if(!t)return null;var s={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},o=[];return String(t).replace(v,function(t,n,e){var r=[],i=n.toLowerCase();for(e.replace(p,function(t,n){n&&r.push(+n)}),"m"===i&&2<r.length&&(o.push([n].concat(r.splice(0,2))),i="l",n="m"===n?"l":"L");r.length>=s[i]&&(o.push([n].concat(r.splice(0,s[i]))),s[i]););}),o}(t)),!t||!t.length)return[["M",0,0]];for(var n,e=[],r=0,i=0,s=0,o=0,a=t.length,h=0;h<a;h++){var u=[];e.push(u);var c,l,f=t[h];if((n=f[0])!=n.toUpperCase())switch(u[0]=n.toUpperCase(),u[0]){case"A":u[1]=f[1],u[2]=f[2],u[3]=f[3],u[4]=f[4],u[5]=f[5],u[6]=+f[6]+r,u[7]=+f[7]+i;break;case"V":u[1]=+f[1]+i;break;case"H":u[1]=+f[1]+r;break;case"M":for(s=+f[1]+r,o=+f[2]+i,c=f.length,l=1;l<c;l++)u[l]=+f[l]+(l%2?r:i);break;default:for(c=f.length,l=1;l<c;l++)u[l]=+f[l]+(l%2?r:i)}else for(var d=f.length,g=0;g<d;g++)u[g]=f[g];switch(u[0]){case"Z":r=+s,i=+o;break;case"H":r=u[1];break;case"V":i=u[1];break;case"M":s=u[u.length-2],o=u[u.length-1],r=u[u.length-2],i=u[u.length-1];break;default:r=u[u.length-2],i=u[u.length-1]}}return e}function e(t){var r=d(t),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};function e(t,n,e){var r,i;if(!t)return["C",n.x,n.y,n.x,n.y,n.x,n.y];switch(t[0]in{T:1,Q:1}||(n.qx=null,n.qy=null),t[0]){case"M":n.X=t[1],n.Y=t[2];break;case"A":t=0===parseFloat(t[1])||0===parseFloat(t[2])?["L",t[6],t[7]]:["C"].concat(function t(n,e,r,i,s,o,a,h,u,c){var l,f=120*B/180,d=B/180*(+s||0),g=[];if(c)P=c[0],A=c[1],b=c[2],S=c[3];else{n=(l=K(n,e,-d)).x,e=l.y;var v=(n-(h=(l=K(h,u,-d)).x))/2,p=(e-(u=l.y))/2,m=v*v/(r*r)+p*p/(i*i);1<m&&(r*=m=X(m),i*=m);var y=r*r,x=i*i,w=(o==a?-1:1)*X(J((y*x-y*p*p-x*v*v)/(y*p*p+x*v*v))),b=w*r*p/i+(n+h)/2,S=w*-i*v/r+(e+u)/2,P=Y(((e-S)/i).toFixed(9)),A=Y(((u-S)/i).toFixed(9));(P=n<b?B-P:P)<0&&(P=2*B+P),(A=h<b?B-A:A)<0&&(A=2*B+A),a&&A<P&&(P-=2*B),!a&&P<A&&(A-=2*B)}var T=A-P;if(J(T)>f){var L=A,E=h,C=u;g=t(h=b+r*H(A=P+f*(a&&P<A?1:-1)),u=S+i*U(A),r,i,s,0,a,E,C,[A,L,b,S])}T=A-P;var N=H(P),I=U(P),M=H(A),R=U(A),O=Z(T/4),D=4/3*(r*O),F=4/3*(i*O),k=[n,e],q=[n+D*I,e-F*N],V=[h+D*R,u-F*M],z=[h,u];if(q[0]=2*k[0]-q[0],q[1]=2*k[1]-q[1],c)return[q,V,z].concat(g);for(var j=[],G=(g=[q,V,z].concat(g).join().split(",")).length,W=0;W<G;W++)j[W]=W%2?K(g[W-1],g[W],d).y:K(g[W],g[W+1],d).x;return j}.apply(0,[n.x,n.y].concat(t.slice(1))));break;case"S":i="C"===e||"S"===e?(r=2*n.x-n.bx,2*n.y-n.by):(r=n.x,n.y),t=["C",r,i].concat(t.slice(1));break;case"T":"Q"===e||"T"===e?(n.qx=2*n.x-n.qx,n.qy=2*n.y-n.qy):(n.qx=n.x,n.qy=n.y),t=["C"].concat(f(n.x,n.y,n.qx,n.qy,t[1],t[2]));break;case"Q":n.qx=t[1],n.qy=t[2],t=["C"].concat(f(n.x,n.y,t[1],t[2],t[3],t[4]));break;case"H":t=["L"].concat(t[1],n.y);break;case"V":t=["L"].concat(n.x,t[1])}return t}function i(t,n){if(7<t[n].length){t[n].shift();for(var e=t[n];e.length;)s[n]="A",t.splice(n++,0,["C"].concat(e.splice(0,6)));t.splice(n,1),h=r.length}}for(var s=[],o="",a="",h=r.length,u=0;u<h;u++){r[u]&&(o=r[u][0]),"C"!==o&&(s[u]=o,0<u&&(a=s[u-1])),r[u]=e(r[u],n,a),"A"!==s[u]&&"C"===o&&(s[u]="C"),i(r,u);var c=r[u],l=c.length;n.x=c[l-2],n.y=c[l-1],n.bx=parseFloat(c[l-4])||n.x,n.by=parseFloat(c[l-3])||n.y}return r[0][0]&&"M"===r[0][0]||r.unshift(["M",0,0]),r}return function(t){return e(t).join(",").split(",").join(" ")}}(),k.namespace=F,k.g=Ht,k}()}),"undefined"!=typeof V)var g=V.g,Vectorizer=V;
|
|
8
|
+
if(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).V=n()}(this,function(){"use strict";var e=Math.round,r=Math.floor,i=Math.PI,h=function(t){return t%360+(t<0?360:0)},s=function(t,n){return n*e(t/n)},c=function(t){return 180*t/i%360},l=function(t,n){return(t=(n=n||!1)?t:t%360)*i/180},o=function(t,n){if(void 0===n)n=void 0===t?1:t,t=0;else if(n<t){var e=t;t=n,n=e}return r(Math.random()*(n-t+1)+t)},f=Math.cos,d=Math.sin,g=Math.atan2,n=function(t,n){var e=l(t.y),r=l(n.y),i=t.x,s=n.x,o=l(s-i),a=d(o)*f(r),h=f(e)*d(r)-d(e)*f(r)*f(o),u=c(g(a,h))-22.5;return u<0&&(u+=360),["NE","E","SE","S","SW","W","NW","N"][u=parseInt(u/45)]},a=function(t,n){var e=t.x,r=t.y;return(e-=n.x)*e+(r-=n.y)*r},u=function(t,n){return Math.sqrt(a(t,n))},v={Point:1,Line:2,Ellipse:3,Rect:4,Polyline:5,Polygon:6,Curve:7,Path:8},p=Math.abs,m=Math.cos,y=Math.sin,x=Math.sqrt,w=Math.min,b=Math.max,S=Math.atan2,P=Math.round,A=Math.pow,T=Math.PI,L=function(t,n){if(!(this instanceof L))return new L(t,n);if("string"==typeof t){var e=t.split(-1===t.indexOf("@")?" ":"@");t=parseFloat(e[0]),n=parseFloat(e[1])}else Object(t)===t&&(n=t.y,t=t.x);this.x=void 0===t?0:t,this.y=void 0===n?0:n};L.fromPolar=function(t,n,e){e=new L(e);var r=p(t*m(n)),i=p(t*y(n)),s=h(c(n));return s<90?i=-i:s<180?(r=-r,i=-i):s<270&&(r=-r),new L(e.x+r,e.y+i)},L.random=function(t,n,e,r){return new L(o(t,n),o(e,r))},L.prototype={type:v.Point,chooseClosest:function(t){var n=t.length;if(1===n)return new L(t[0]);for(var e=null,r=1/0,i=0;i<n;i++){var s=new L(t[i]),o=this.squaredDistance(s);o<r&&(e=s,r=o)}return e},adhereToRect:function(t){return t.containsPoint(this)||(this.x=w(b(this.x,t.x),t.x+t.width),this.y=w(b(this.y,t.y),t.y+t.height)),this},angleBetween:function(t,n){var e=this.equals(t)||this.equals(n)?NaN:this.theta(n)-this.theta(t);return e<0&&(e+=360),e},bearing:function(t){return n(this,t)},changeInAngle:function(t,n,e){return this.clone().offset(-t,-n).theta(e)-this.theta(e)},clone:function(){return new L(this)},cross:function(t,n){return t&&n?(n.x-this.x)*(t.y-this.y)-(n.y-this.y)*(t.x-this.x):NaN},difference:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),new L(this.x-(t||0),this.y-(n||0))},distance:function(t){return u(this,t)},dot:function(t){return t?this.x*t.x+this.y*t.y:NaN},equals:function(t){return!!t&&this.x===t.x&&this.y===t.y},lerp:function(t,n){var e=this.x,r=this.y;return new L((1-n)*e+n*t.x,(1-n)*r+n*t.y)},magnitude:function(){return x(this.x*this.x+this.y*this.y)||.01},manhattanDistance:function(t){return p(t.x-this.x)+p(t.y-this.y)},move:function(t,n){var e=l(new L(t).theta(this));return this.offset(m(e)*n,-y(e)*n)},normalize:function(t){var n=(t||1)/this.magnitude();return this.scale(n,n)},offset:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),this.x+=t||0,this.y+=n||0,this},reflection:function(t){return new L(t).move(this,this.distance(t))},rotate:function(t,n){if(0===n)return this;t=t||new L(0,0),n=l(h(-n));var e=m(n),r=y(n),i=e*(this.x-t.x)-r*(this.y-t.y)+t.x,s=r*(this.x-t.x)+e*(this.y-t.y)+t.y;return this.x=i,this.y=s,this},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=A(10,t)}return this.x=P(this.x*n)/n,this.y=P(this.y*n)/n,this},scale:function(t,n,e){return e=e&&new L(e)||new L(0,0),this.x=e.x+t*(this.x-e.x),this.y=e.y+n*(this.y-e.y),this},snapToGrid:function(t,n){return this.x=s(this.x,t),this.y=s(this.y,n||t),this},squaredDistance:function(t){return a(this,t)},theta:function(t){var n=-((t=new L(t)).y-this.y),e=t.x-this.x,r=S(n,e);return r<0&&(r=2*T+r),180*r/T},toJSON:function(){return{x:this.x,y:this.y}},toPolar:function(t){t=t&&new L(t)||new L(0,0);var n=this.x,e=this.y;return this.x=x((n-t.x)*(n-t.x)+(e-t.y)*(e-t.y)),this.y=l(t.theta(new L(n,e))),this},toString:function(){return this.x+"@"+this.y},serialize:function(){return this.x+","+this.y},update:function(t,n){return Object(t)===t&&(n=t.y,t=t.x),this.x=t||0,this.y=n||0,this},vectorAngle:function(t){return new L(0,0).angleBetween(this,t)}},L.prototype.translate=L.prototype.offset;var t=L,E=Math.max,C=Math.min,N=function(t,n){return this instanceof N?t instanceof N?new N(t.start,t.end):(this.start=new L(t),void(this.end=new L(n))):new N(t,n)};N.prototype={type:v.Line,angle:function(){var t=new L(this.start.x+1,this.start.y);return this.start.angleBetween(this.end,t)},bbox:function(){var t=C(this.start.x,this.end.x),n=C(this.start.y,this.end.y),e=E(this.start.x,this.end.x),r=E(this.start.y,this.end.y);return new B(t,n,e-t,r-n)},bearing:function(){return n(this.start,this.end)},clone:function(){return new N(this.start,this.end)},closestPoint:function(t){return this.pointAt(this.closestPointNormalizedLength(t))},closestPointLength:function(t){return this.closestPointNormalizedLength(t)*this.length()},closestPointNormalizedLength:function(t){var n=this.vector().dot(new N(this.start,t).vector()),e=C(1,E(0,n/this.squaredLength()));return e!=e?0:e},closestPointTangent:function(t){return this.tangentAt(this.closestPointNormalizedLength(t))},containsPoint:function(t){var n=this.start,e=this.end;if(0!==n.cross(t,e))return!1;var r=this.length();return!(new N(n,t).length()>r)&&!(new N(t,e).length()>r)},divideAt:function(t){var n=this.pointAt(t);return[new N(this.start,n),new N(n,this.end)]},divideAtLength:function(t){var n=this.pointAtLength(t);return[new N(this.start,n),new N(n,this.end)]},equals:function(t){return!!t&&this.start.x===t.start.x&&this.start.y===t.start.y&&this.end.x===t.end.x&&this.end.y===t.end.y},intersect:function(t,n){if(t&&t.intersectionWithLine){var e=t.intersectionWithLine(this,n);return e&&t instanceof N&&(e=e[0]),e}return null},intersectionWithLine:function(t){var n=new L(this.end.x-this.start.x,this.end.y-this.start.y),e=new L(t.end.x-t.start.x,t.end.y-t.start.y),r=n.x*e.y-n.y*e.x,i=new L(t.start.x-this.start.x,t.start.y-this.start.y),s=i.x*e.y-i.y*e.x,o=i.x*n.y-i.y*n.x;if(0===r||s*r<0||o*r<0)return null;if(0<r){if(r<s||r<o)return null}else if(s<r||o<r)return null;return[new L(this.start.x+s*n.x/r,this.start.y+s*n.y/r)]},isDifferentiable:function(){return!this.start.equals(this.end)},length:function(){return u(this.start,this.end)},midpoint:function(){return new L((this.start.x+this.end.x)/2,(this.start.y+this.end.y)/2)},parallel:function(t){var n=this.clone();if(!this.isDifferentiable())return n;var e=n.start,r=n.end,i=e.clone().rotate(r,270),s=r.clone().rotate(e,90);return e.move(s,t),r.move(i,t),n},pointAt:function(t){var n=this.start,e=this.end;return t<=0?n.clone():1<=t?e.clone():n.lerp(e,t)},pointAtLength:function(t){var n=this.start,e=this.end,r=!0;t<0&&(r=!1,t=-t);var i=this.length();return i<=t?r?e.clone():n.clone():this.pointAt((r?t:i-t)/i)},pointOffset:function(t){t=new L(t);var n=this.start,e=this.end;return((e.x-n.x)*(t.y-n.y)-(e.y-n.y)*(t.x-n.x))/this.length()},rotate:function(t,n){return this.start.rotate(t,n),this.end.rotate(t,n),this},round:function(t){return this.start.round(t),this.end.round(t),this},scale:function(t,n,e){return this.start.scale(t,n,e),this.end.scale(t,n,e),this},setLength:function(t){var n=this.length();if(!n)return this;var e=t/n;return this.scale(e,e,this.start)},squaredLength:function(){return a(this.start,this.end)},tangentAt:function(t){if(!this.isDifferentiable())return null;var n=this.start,e=this.end,r=this.pointAt(t),i=new N(n,e);return i.translate(r.x-n.x,r.y-n.y),i},tangentAtLength:function(t){if(!this.isDifferentiable())return null;var n=this.start,e=this.end,r=this.pointAtLength(t),i=new N(n,e);return i.translate(r.x-n.x,r.y-n.y),i},toString:function(){return this.start.toString()+" "+this.end.toString()},serialize:function(){return this.start.serialize()+" "+this.end.serialize()},translate:function(t,n){return this.start.translate(t,n),this.end.translate(t,n),this},vector:function(){return new L(this.end.x-this.start.x,this.end.y-this.start.y)}},N.prototype.intersection=N.prototype.intersect;var I=N,M=Math.sqrt,R=Math.round,O=Math.pow,D=function(t,n,e){return this instanceof D?t instanceof D?new D(new L(t.x,t.y),t.a,t.b):(t=new L(t),this.x=t.x,this.y=t.y,this.a=n,void(this.b=e)):new D(t,n,e)};D.fromRect=function(t){return t=new B(t),new D(t.center(),t.width/2,t.height/2)},D.prototype={type:v.Ellipse,bbox:function(){return new B(this.x-this.a,this.y-this.b,2*this.a,2*this.b)},center:function(){return new L(this.x,this.y)},clone:function(){return new D(this)},containsPoint:function(t){return this.normalizedDistance(t)<=1},equals:function(t){return!!t&&t.x===this.x&&t.y===this.y&&t.a===this.a&&t.b===this.b},inflate:function(t,n){return void 0===t&&(t=0),void 0===n&&(n=t),this.a+=2*t,this.b+=2*n,this},intersectionWithLine:function(t){var n=[],e=t.start,r=t.end,i=this.a,s=this.b,o=t.vector(),a=e.difference(new L(this)),h=new L(o.x/(i*i),o.y/(s*s)),u=new L(a.x/(i*i),a.y/(s*s)),c=o.dot(h),l=o.dot(u),f=l*l-c*(a.dot(u)-1);if(f<0)return null;if(0<f){var d=M(f),g=(-l-d)/c,v=(-l+d)/c;if((g<0||1<g)&&(v<0||1<v))return null;0<=g&&g<=1&&n.push(e.lerp(r,g)),0<=v&&v<=1&&n.push(e.lerp(r,v))}else{var p=-l/c;if(!(0<=p&&p<=1))return null;n.push(e.lerp(r,p))}return n},intersectionWithLineFromCenterToPoint:function(t,n){t=new L(t),n&&t.rotate(new L(this.x,this.y),n);var e,r=t.x-this.x,i=t.y-this.y;if(0===r)return e=this.bbox().pointNearestToPoint(t),n?e.rotate(new L(this.x,this.y),-n):e;var s=i/r,o=s*s,a=this.a*this.a,h=this.b*this.b,u=M(1/(1/a+o/h)),c=s*(u=r<0?-u:u);return e=new L(this.x+u,this.y+c),n?e.rotate(new L(this.x,this.y),-n):e},normalizedDistance:function(t){var n=t.x,e=t.y,r=this.a,i=this.b,s=this.x,o=this.y;return(n-s)*(n-s)/(r*r)+(e-o)*(e-o)/(i*i)},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=O(10,t)}return this.x=R(this.x*n)/n,this.y=R(this.y*n)/n,this.a=R(this.a*n)/n,this.b=R(this.b*n)/n,this},tangentTheta:function(t){var n,e,r=t.x,i=t.y,s=this.a,o=this.b,a=this.bbox().center(),h=a.x,u=a.y,c=r>a.x+s/2,l=r<a.x-s/2;return c||l?e=s*s/(r-h)-s*s*(i-u)*((n=r>a.x?i-30:i+30)-u)/(o*o*(r-h))+h:n=o*o/(i-u)-o*o*(r-h)*((e=i>a.y?r+30:r-30)-h)/(s*s*(i-u))+u,new L(e,n).theta(t)},toString:function(){return new L(this.x,this.y).toString()+" "+this.a+" "+this.b}};var F=D,k=Math.abs,q=Math.cos,V=Math.sin,z=Math.min,j=Math.max,G=Math.round,W=Math.pow,B=function(t,n,e,r){if(!(this instanceof B))return new B(t,n,e,r);Object(t)===t&&(n=t.y,e=t.width,r=t.height,t=t.x),this.x=void 0===t?0:t,this.y=void 0===n?0:n,this.width=void 0===e?0:e,this.height=void 0===r?0:r};B.fromEllipse=function(t){return t=new D(t),new B(t.x-t.a,t.y-t.b,2*t.a,2*t.b)},B.fromPointUnion=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(0===t.length)return null;var e,r,i,s,o=new L;e=r=1/0,i=s=-1/0;for(var a=0;a<t.length;a++){o.update(t[a]);var h=o.x,u=o.y;h<e&&(e=h),i<h&&(i=h),u<r&&(r=u),s<u&&(s=u)}return new B(e,r,i-e,s-r)},B.fromRectUnion=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];if(0===t.length)return null;var e,r,i,s,o=new B;e=r=1/0,i=s=-1/0;for(var a=0;a<t.length;a++){o.update(t[a]);var h=o.x,u=o.y,c=h+o.width,l=u+o.height;h<e&&(e=h),i<c&&(i=c),u<r&&(r=u),s<l&&(s=l)}return new B(e,r,i-e,s-r)},B.prototype={type:v.Rect,bbox:function(t){return this.clone().rotateAroundCenter(t)},rotateAroundCenter:function(t){if(!t)return this;var n=this.width,e=this.height,r=l(t),i=k(V(r)),s=k(q(r)),o=n*s+e*i,a=n*i+e*s;return this.x+=(n-o)/2,this.y+=(e-a)/2,this.width=o,this.height=a,this},bottomLeft:function(){return new L(this.x,this.y+this.height)},bottomLine:function(){return new N(this.bottomLeft(),this.bottomRight())},bottomMiddle:function(){return new L(this.x+this.width/2,this.y+this.height)},center:function(){return new L(this.x+this.width/2,this.y+this.height/2)},clone:function(){return new B(this)},containsPoint:function(t){return t instanceof L||(t=new L(t)),t.x>=this.x&&t.x<=this.x+this.width&&t.y>=this.y&&t.y<=this.y+this.height},containsRect:function(t){var n=new B(this).normalize(),e=new B(t).normalize(),r=n.width,i=n.height,s=e.width,o=e.height;if(!(r&&i&&s&&o))return!1;var a=n.x,h=n.y,u=e.x,c=e.y;return s+=u,r+=a,o+=c,i+=h,a<=u&&s<=r&&h<=c&&o<=i},corner:function(){return new L(this.x+this.width,this.y+this.height)},equals:function(t){var n=new B(this).normalize(),e=new B(t).normalize();return n.x===e.x&&n.y===e.y&&n.width===e.width&&n.height===e.height},inflate:function(t,n){return void 0===t&&(t=0),void 0===n&&(n=t),this.x-=t,this.y-=n,this.width+=2*t,this.height+=2*n,this},intersect:function(t){var n=this.origin(),e=this.corner(),r=t.origin(),i=t.corner();if(i.x<=n.x||i.y<=n.y||r.x>=e.x||r.y>=e.y)return null;var s=j(n.x,r.x),o=j(n.y,r.y);return new B(s,o,z(e.x,i.x)-s,z(e.y,i.y)-o)},intersectionWithLine:function(t){var n,e,r=[this.topLine(),this.rightLine(),this.bottomLine(),this.leftLine()],i=[],s=[],o=r.length;for(e=0;e<o;e++)null!==(n=t.intersect(r[e]))&&s.indexOf(n.toString())<0&&(i.push(n),s.push(n.toString()));return 0<i.length?i:null},intersectionWithLineFromCenterToPoint:function(t,n){t=new L(t);var e,r=new L(this.x+this.width/2,this.y+this.height/2);n&&t.rotate(r,n);for(var i=[this.topLine(),this.rightLine(),this.bottomLine(),this.leftLine()],s=new N(r,t),o=i.length-1;0<=o;--o){var a=i[o].intersection(s);if(null!==a){e=a;break}}return e&&n&&e.rotate(r,-n),e},leftLine:function(){return new N(this.topLeft(),this.bottomLeft())},leftMiddle:function(){return new L(this.x,this.y+this.height/2)},maxRectScaleToFit:function(t,n){var e,r,i,s,o,a,h,u;t=new B(t),n||(n=t.center());var c=n.x,l=n.y;e=r=i=s=o=a=h=u=1/0;var f=t.topLeft();f.x<c&&(e=(this.x-c)/(f.x-c)),f.y<l&&(o=(this.y-l)/(f.y-l));var d=t.bottomRight();d.x>c&&(r=(this.x+this.width-c)/(d.x-c)),d.y>l&&(a=(this.y+this.height-l)/(d.y-l));var g=t.topRight();g.x>c&&(i=(this.x+this.width-c)/(g.x-c)),g.y<l&&(h=(this.y-l)/(g.y-l));var v=t.bottomLeft();return v.x<c&&(s=(this.x-c)/(v.x-c)),v.y>l&&(u=(this.y+this.height-l)/(v.y-l)),{sx:z(e,r,i,s),sy:z(o,a,h,u)}},maxRectUniformScaleToFit:function(t,n){var e=this.maxRectScaleToFit(t,n);return z(e.sx,e.sy)},moveAndExpand:function(t){return this.x+=t.x||0,this.y+=t.y||0,this.width+=t.width||0,this.height+=t.height||0,this},normalize:function(){var t=this.x,n=this.y,e=this.width,r=this.height;return this.width<0&&(t=this.x+this.width,e=-this.width),this.height<0&&(n=this.y+this.height,r=-this.height),this.x=t,this.y=n,this.width=e,this.height=r,this},offset:function(t,n){return L.prototype.offset.call(this,t,n)},origin:function(){return new L(this.x,this.y)},pointNearestToPoint:function(t){if(t=new L(t),this.containsPoint(t))switch(this.sideNearestToPoint(t)){case"right":return new L(this.x+this.width,t.y);case"left":return new L(this.x,t.y);case"bottom":return new L(t.x,this.y+this.height);case"top":return new L(t.x,this.y)}return t.adhereToRect(this)},rightLine:function(){return new N(this.topRight(),this.bottomRight())},rightMiddle:function(){return new L(this.x+this.width,this.y+this.height/2)},round:function(t){var n=1;if(t)switch(t){case 1:n=10;break;case 2:n=100;break;case 3:n=1e3;break;default:n=W(10,t)}return this.x=G(this.x*n)/n,this.y=G(this.y*n)/n,this.width=G(this.width*n)/n,this.height=G(this.height*n)/n,this},scale:function(t,n,e){return e=this.origin().scale(t,n,e),this.x=e.x,this.y=e.y,this.width*=t,this.height*=n,this},sideNearestToPoint:function(t){var n=(t=new L(t)).x-this.x,e=this.x+this.width-t.x,r=t.y-this.y,i=n,s="left";return e<i&&(i=e,s="right"),r<i&&(i=r,s="top"),this.y+this.height-t.y<i&&(s="bottom"),s},snapToGrid:function(t,n){var e=this.origin().snapToGrid(t,n),r=this.corner().snapToGrid(t,n);return this.x=e.x,this.y=e.y,this.width=r.x-e.x,this.height=r.y-e.y,this},toJSON:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},topLine:function(){return new N(this.topLeft(),this.topRight())},topMiddle:function(){return new L(this.x+this.width/2,this.y)},topRight:function(){return new L(this.x+this.width,this.y)},toString:function(){return this.origin().toString()+" "+this.corner().toString()},union:function(t){return B.fromRectUnion(this,t)},update:function(t,n,e,r){return Object(t)===t&&(n=t.y,e=t.width,r=t.height,t=t.x),this.x=t||0,this.y=n||0,this.width=e||0,this.height=r||0,this}},B.prototype.bottomRight=B.prototype.corner,B.prototype.topLeft=B.prototype.origin,B.prototype.translate=B.prototype.offset;var U=B;function H(t){var n=t.trim();if(""===n)return[];for(var e=[],r=n.split(/\b\s*,\s*|,\s*|\s+/),i=r.length,s=0;s<i;s+=2)e.push({x:+r[s],y:+r[s+1]});return e}function Z(t){var n=t.length;if(0===n)return[];for(var e=[],r=0;r<n;r++){var i=t[r].clone();e.push(i)}return e}function Y(t){var n,e,r,i=Math.abs,s=t.length;if(0===s)return[];for(n=0;n<s;n++)void 0===r?r=t[n]:t[n].y<r.y?r=t[n]:t[n].y===r.y&&t[n].x>r.x&&(r=t[n]);var o=[];for(n=0;n<s;n++){var a=r.theta(t[n]);0===a&&(a=360);var h=[t[n],n,a];o.push(h)}if(o.sort(function(t,n){var e=t[2]-n[2];return 0===e&&(e=n[1]-t[1]),e}),2<o.length){var u=o[o.length-1];o.unshift(u)}for(var c,l,f,d,g,v,p,m={},y=[];0!==o.length;)if(l=(c=o.pop())[0],!m.hasOwnProperty(c[0]+"@@"+c[1]))for(var x=!1;!x;)if(y.length<2)y.push(c),x=!0;else{d=(f=y.pop())[0];var w=(v=(g=y.pop())[0]).cross(d,l);if(w<0)y.push(g),y.push(f),y.push(c),x=!0;else if(0===w){var b=d.angleBetween(v,l);i(b-180)<1e-10?(m[f[0]+"@@"+f[1]]=d,y.push(g)):d.equals(l)||v.equals(d)?(m[f[0]+"@@"+f[1]]=d,y.push(g)):i((b+1)%360-1)<1e-10&&(y.push(g),o.push(f))}else m[f[0]+"@@"+f[1]]=d,y.push(g)}2<y.length&&y.pop();var S=-1;for(e=y.length,n=0;n<e;n++){var P=y[n][1];(void 0===p||P<p)&&(p=P,S=n)}var A=[];if(0<S){var T=y.slice(S),L=y.slice(0,S);A=T.concat(L)}else A=y;var E=[];for(e=A.length,n=0;n<e;n++)E.push(A[n][0]);return E}var X=function(t){return this instanceof X?"string"==typeof t?new X.parse(t):void(this.points=Array.isArray(t)?t.map(L):[]):new X(t)};X.parse=function(t){return new X(H(t))},X.fromRect=function(t){return new X([t.topLeft(),t.topRight(),t.bottomRight(),t.bottomLeft(),t.topLeft()])},X.prototype={type:v.Polyline,bbox:function(){var t=1/0,n=-1/0,e=1/0,r=-1/0,i=this.points,s=i.length;if(0===s)return null;for(var o=0;o<s;o++){var a=i[o],h=a.x,u=a.y;h<t&&(t=h),n<h&&(n=h),u<e&&(e=u),r<u&&(r=u)}return new B(t,e,n-t,r-e)},clone:function(){return new X(Z(this.points))},closestPoint:function(t){var n=this.closestPointLength(t);return this.pointAtLength(n)},closestPointLength:function(t){var n,e=this.lengthPoints(),r=e.length;if(0===r)return 0;if(1===r)return 0;for(var i=1/0,s=0,o=r-1,a=0;a<o;a++){var h=new N(e[a],e[a+1]),u=h.length(),c=h.closestPointNormalizedLength(t),l=h.pointAt(c).squaredDistance(t);l<i&&(i=l,n=s+c*u),s+=u}return n},closestPointNormalizedLength:function(t){var n=this.closestPointLength(t);if(0===n)return 0;var e=this.length();return 0===e?0:n/e},closestPointTangent:function(t){var n=this.closestPointLength(t);return this.tangentAtLength(n)},containsPoint:function(t){var n=this.points,e=n.length;if(0===e)return!1;for(var r=t.x,i=t.y,s=e-1,o=0,a=0,h=new N,u=new N,c=new L;o<e;o++){var l=n[s],f=n[o];if(t.equals(l))return!0;if(h.start=l,h.end=f,h.containsPoint(t))return!0;if(i<=l.y&&i>f.y||i>l.y&&i<=f.y){var d=l.x-r>f.x-r?l.x-r:f.x-r;0<=d&&(c.x=r+d,c.y=i,u.start=t,u.end=c,h.intersect(u)&&a++)}s=o}return a%2==1},close:function(){var t=this.start,n=this.end,e=this.points;return t&&n&&!t.equals(n)&&e.push(t.clone()),this},lengthPoints:function(){return this.points},convexHull:function(){return new X(Y(this.points))},equals:function(t){if(!t)return!1;var n=this.points,e=t.points,r=n.length;if(e.length!==r)return!1;for(var i=0;i<r;i++){var s=n[i],o=t.points[i];if(!s.equals(o))return!1}return!0},intersectionWithLine:function(t){for(var n=new N(t),e=[],r=this.lengthPoints(),i=new N,s=0,o=r.length-1;s<o;s++){i.start=r[s],i.end=r[s+1];var a=n.intersectionWithLine(i);a&&e.push(a[0])}return 0<e.length?e:null},isDifferentiable:function(){var t=this.points,n=t.length;if(0===n)return!1;for(var e=new N,r=n-1,i=0;i<r;i++)if(e.start=t[i],e.end=t[i+1],e.isDifferentiable())return!0;return!1},length:function(){var t=this.lengthPoints(),n=t.length;if(0===n)return 0;for(var e=0,r=n-1,i=0;i<r;i++)e+=t[i].distance(t[i+1]);return e},pointAt:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return n[0].clone();if(t<=0)return n[0].clone();if(1<=t)return n[e-1].clone();var r=this.length()*t;return this.pointAtLength(r)},pointAtLength:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return n[0].clone();var r=!0;t<0&&(r=!1,t=-t);for(var i=0,s=e-1,o=0;o<s;o++){var a=r?o:s-1-o,h=n[a],u=n[a+1],c=new N(h,u),l=h.distance(u);if(t<=i+l)return c.pointAtLength((r?1:-1)*(t-i));i+=l}return(r?n[e-1]:n[0]).clone()},round:function(t){for(var n=this.points,e=n.length,r=0;r<e;r++)n[r].round(t);return this},scale:function(t,n,e){for(var r=this.points,i=r.length,s=0;s<i;s++)r[s].scale(t,n,e);return this},simplify:function(t){void 0===t&&(t={});var n=this.points;if(n.length<3)return this;for(var e=t.threshold||1e-10,r=0;n[r+2];){var i=r+1,s=r+2,o=n[r],a=n[i],h=n[s];new N(o,h).closestPoint(a).distance(a)<=e?n.splice(i,1):r+=1}return this},tangentAt:function(t){var n=this.lengthPoints().length;if(0===n)return null;if(1===n)return null;t<0&&(t=0),1<t&&(t=1);var e=this.length()*t;return this.tangentAtLength(e)},tangentAtLength:function(t){var n=this.lengthPoints(),e=n.length;if(0===e)return null;if(1===e)return null;var r,i=!0;t<0&&(i=!1,t=-t);for(var s=0,o=e-1,a=0;a<o;a++){var h=i?a:o-1-a,u=n[h],c=n[h+1],l=new N(u,c),f=u.distance(c);if(l.isDifferentiable()){if(t<=s+f)return l.tangentAtLength((i?1:-1)*(t-s));r=l}s+=f}if(r){var d=i?1:0;return r.tangentAt(d)}return null},toString:function(){return this.points+""},translate:function(t,n){for(var e=this.points,r=e.length,i=0;i<r;i++)e[i].translate(t,n);return this},serialize:function(){var t=this.points,n=t.length;if(0===n)return"";for(var e="",r=0;r<n;r++){var i=t[r];e+=i.x+","+i.y+" "}return e.trim()}},Object.defineProperty(X.prototype,"start",{configurable:!0,enumerable:!0,get:function(){return 0===this.points.length?null:this.points[0]}}),Object.defineProperty(X.prototype,"end",{configurable:!0,enumerable:!0,get:function(){var t=this.points.length;return 0===t?null:this.points[t-1]}});var J=Math.abs,K=Math.sqrt,Q=Math.min,$=Math.max,_=Math.pow,tt=function(t,n,e,r){return this instanceof tt?t instanceof tt?new tt(t.start,t.controlPoint1,t.controlPoint2,t.end):(this.start=new L(t),this.controlPoint1=new L(n),this.controlPoint2=new L(e),void(this.end=new L(r))):new tt(t,n,e,r)};function nt(t){var n,e,r=arguments,i=[];for(e=arguments.length,n=1;n<e;n++)i.push(r[n]);if(!t)throw new Error("Missing a parent object.");var s=Object.create(t);for(e=i.length,n=0;n<e;n++){var o,a,h=i[n];for(a in h)h.hasOwnProperty(a)&&(delete s[a],o=Object.getOwnPropertyDescriptor(h,a),Object.defineProperty(s,a,o))}return s}tt.throughPoints=function(){function h(t){var n=t.length,e=[],r=[],i=2;e[0]=t[0]/i;for(var s=1;s<n;s++)r[s]=1/i,i=(s<n-1?4:3.5)-r[s],e[s]=(t[s]-e[s-1])/i;for(s=1;s<n;s++)e[n-s-1]-=r[n-s]*e[n-s];return e}return function(t){if(!t||Array.isArray(t)&&t.length<2)throw new Error("At least 2 points are required");for(var n=function(t){var n,e=[],r=[],i=t.length-1;if(1==i)return e[0]=new L((2*t[0].x+t[1].x)/3,(2*t[0].y+t[1].y)/3),r[0]=new L(2*e[0].x-t[0].x,2*e[0].y-t[0].y),[e,r];var s=[];for(n=1;n<i-1;n++)s[n]=4*t[n].x+2*t[n+1].x;s[0]=t[0].x+2*t[1].x,s[i-1]=(8*t[i-1].x+t[i].x)/2;var o=h(s);for(n=1;n<i-1;++n)s[n]=4*t[n].y+2*t[n+1].y;s[0]=t[0].y+2*t[1].y,s[i-1]=(8*t[i-1].y+t[i].y)/2;var a=h(s);for(n=0;n<i;n++)e.push(new L(o[n],a[n])),n<i-1?r.push(new L(2*t[n+1].x-o[n+1],2*t[n+1].y-a[n+1])):r.push(new L((t[i].x+o[i-1])/2,(t[i].y+a[i-1])/2));return[e,r]}(t),e=[],r=n[0].length,i=0;i<r;i++){var s=new L(n[0][i].x,n[0][i].y),o=new L(n[1][i].x,n[1][i].y);e.push(new tt(t[i],s,o,t[i+1]))}return e}}(),tt.prototype={type:v.Curve,bbox:function(){for(var t,n,e,r,i,s,o,a,h=this.start,u=this.controlPoint1,c=this.controlPoint2,l=this.end,f=h.x,d=h.y,g=u.x,v=u.y,p=c.x,m=c.y,y=l.x,x=l.y,w=new Array,b=new Array,S=[new Array,new Array],P=0;P<2;++P)if(e=0===P?(n=6*f-12*g+6*p,t=-3*f+9*g-9*p+3*y,3*g-3*f):(n=6*d-12*v+6*m,t=-3*d+9*v-9*m+3*x,3*v-3*d),J(t)<1e-12){if(J(n)<1e-12)continue;0<(r=-e/n)&&r<1&&b.push(r)}else a=K(o=n*n-4*e*t),o<0||(0<(i=(-n+a)/(2*t))&&i<1&&b.push(i),0<(s=(-n-a)/(2*t))&&s<1&&b.push(s));for(var A,T,L,E=b.length,C=E;E--;)T=(A=1-(r=b[E]))*A*A*f+3*A*A*r*g+3*A*r*r*p+r*r*r*y,S[0][E]=T,L=A*A*A*d+3*A*A*r*v+3*A*r*r*m+r*r*r*x,S[1][E]=L,w[E]={X:T,Y:L};b[C]=0,b[C+1]=1,w[C]={X:f,Y:d},w[C+1]={X:y,Y:x},S[0][C]=f,S[1][C]=d,S[0][C+1]=y,S[1][C+1]=x,b.length=C+2,S[0].length=C+2,S[1].length=C+2,w.length=C+2;var N=Q.apply(null,S[0]),I=Q.apply(null,S[1]),M=$.apply(null,S[0]),R=$.apply(null,S[1]);return new B(N,I,M-N,R-I)},clone:function(){return new tt(this.start,this.controlPoint1,this.controlPoint2,this.end)},closestPoint:function(t,n){return this.pointAtT(this.closestPointT(t,n))},closestPointLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions};return this.lengthAtT(this.closestPointT(t,r),r)},closestPointNormalizedLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions},i=this.closestPointLength(t,r);if(!i)return 0;var s=this.length(r);return 0===s?0:i/s},closestPointT:function(t,n){for(var e,r,i,s,o,a,h,u=void 0===(n=n||{}).precision?this.PRECISION:n.precision,c=void 0===n.subdivisions?this.getSubdivisions({precision:u}):n.subdivisions,l=c.length,f=l?1/l:0,d=0;d<l;d++){var g=c[d],v=g.start.distance(t),p=g.end.distance(t),m=v+p;(!h||m<h)&&(r=d*f,i=(d+1)*f,s=v,o=p,a=(e=g).start.distance(g.end),h=m)}for(var y=_(10,-u);;){var x=s?J(s-o)/s:0,w=o?J(s-o)/o:0;if(x<y||w<y||(!s||s<a*y||(!o||o<a*y)))return s<=o?r:i;var b=e.divide(.5);f/=2;var S=b[0].start.distance(t),P=b[0].end.distance(t),A=S+P,T=b[1].start.distance(t),L=b[1].end.distance(t);o=A<=T+L?(e=b[0],i-=f,s=S,P):(e=b[1],r+=f,s=T,L)}},closestPointTangent:function(t,n){return this.tangentAtT(this.closestPointT(t,n))},containsPoint:function(t,n){return this.toPolyline(n).containsPoint(t)},divideAt:function(t,n){if(t<=0)return this.divideAtT(0);if(1<=t)return this.divideAtT(1);var e=this.tAt(t,n);return this.divideAtT(e)},divideAtLength:function(t,n){var e=this.tAtLength(t,n);return this.divideAtT(e)},divideAtT:function(t){var n=this.start,e=this.controlPoint1,r=this.controlPoint2,i=this.end;if(t<=0)return[new tt(n,n,n,n),new tt(n,e,r,i)];if(1<=t)return[new tt(n,e,r,i),new tt(i,i,i,i)];var s=this.getSkeletonPoints(t),o=s.startControlPoint1,a=s.startControlPoint2,h=s.divider,u=s.dividerControlPoint1,c=s.dividerControlPoint2;return[new tt(n,o,a,h),new tt(h,u,c,i)]},endpointDistance:function(){return this.start.distance(this.end)},equals:function(t){return!!t&&this.start.x===t.start.x&&this.start.y===t.start.y&&this.controlPoint1.x===t.controlPoint1.x&&this.controlPoint1.y===t.controlPoint1.y&&this.controlPoint2.x===t.controlPoint2.x&&this.controlPoint2.y===t.controlPoint2.y&&this.end.x===t.end.x&&this.end.y===t.end.y},getSkeletonPoints:function(t){var n=this.start,e=this.controlPoint1,r=this.controlPoint2,i=this.end;if(t<=0)return{startControlPoint1:n.clone(),startControlPoint2:n.clone(),divider:n.clone(),dividerControlPoint1:e.clone(),dividerControlPoint2:r.clone()};if(1<=t)return{startControlPoint1:e.clone(),startControlPoint2:r.clone(),divider:i.clone(),dividerControlPoint1:i.clone(),dividerControlPoint2:i.clone()};var s=new N(n,e).pointAt(t),o=new N(e,r).pointAt(t),a=new N(r,i).pointAt(t),h=new N(s,o).pointAt(t),u=new N(o,a).pointAt(t);return{startControlPoint1:s,startControlPoint2:h,divider:new N(h,u).pointAt(t),dividerControlPoint1:u,dividerControlPoint2:a}},getSubdivisions:function(t){var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=this.start,r=this.controlPoint1,i=this.controlPoint2,s=this.end,o=[new tt(e,r,i,s)];if(0===n)return o;if(!this.isDifferentiable())return o;var a=this.endpointDistance(),h=_(10,-n),u=2;0===r.cross(e,s)&&0===i.cross(e,s)&&(u=2*n);for(var c=0;;){c+=1;for(var l=[],f=o.length,d=0;d<f;d++){var g=o[d].divide(.5);l.push(g[0],g[1])}for(var v=0,p=l.length,m=0;m<p;m++){v+=l[m].endpointDistance()}if(u<=c)if((0!==v?(v-a)/v:0)<h)return l;o=l,a=v}},isDifferentiable:function(){var t=this.start,n=this.controlPoint1,e=this.controlPoint2,r=this.end;return!(t.equals(n)&&n.equals(e)&&e.equals(r))},length:function(t){for(var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=void 0===t.subdivisions?this.getSubdivisions({precision:n}):t.subdivisions,r=0,i=e.length,s=0;s<i;s++){r+=e[s].endpointDistance()}return r},lengthAtT:function(t,n){if(t<=0)return 0;var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision;return this.divide(t)[0].length({precision:e})},pointAt:function(t,n){if(t<=0)return this.start.clone();if(1<=t)return this.end.clone();var e=this.tAt(t,n);return this.pointAtT(e)},pointAtLength:function(t,n){var e=this.tAtLength(t,n);return this.pointAtT(e)},pointAtT:function(t){return t<=0?this.start.clone():1<=t?this.end.clone():this.getSkeletonPoints(t).divider},PRECISION:3,round:function(t){return this.start.round(t),this.controlPoint1.round(t),this.controlPoint2.round(t),this.end.round(t),this},scale:function(t,n,e){return this.start.scale(t,n,e),this.controlPoint1.scale(t,n,e),this.controlPoint2.scale(t,n,e),this.end.scale(t,n,e),this},tangentAt:function(t,n){if(!this.isDifferentiable())return null;t<0?t=0:1<t&&(t=1);var e=this.tAt(t,n);return this.tangentAtT(e)},tangentAtLength:function(t,n){if(!this.isDifferentiable())return null;var e=this.tAtLength(t,n);return this.tangentAtT(e)},tangentAtT:function(t){if(!this.isDifferentiable())return null;t<0?t=0:1<t&&(t=1);var n=this.getSkeletonPoints(t),e=n.startControlPoint2,r=n.dividerControlPoint1,i=n.divider,s=new N(e,r);return s.translate(i.x-e.x,i.y-e.y),s},tAt:function(t,n){if(t<=0)return 0;if(1<=t)return 1;var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,subdivisions:void 0===n.subdivisions?this.getSubdivisions({precision:e}):n.subdivisions},i=this.length(r)*t;return this.tAtLength(i,r)},tAtLength:function(t,n){var e=!0;t<0&&(e=!1,t=-t);for(var r,i,s,o,a,h=void 0===(n=n||{}).precision?this.PRECISION:n.precision,u=void 0===n.subdivisions?this.getSubdivisions({precision:h}):n.subdivisions,c={precision:h,subdivisions:u},l=0,f=u.length,d=1/f,g=0;g<f;g++){var v=e?g:f-1-g,p=u[g],m=p.endpointDistance();if(t<=l+m){r=p,i=v*d,s=(v+1)*d,o=e?t-l:m+l-t,a=e?m+l-t:t-l;break}l+=m}if(!r)return e?1:0;for(var y=this.length(c),x=_(10,-h);;){var w,b;if((0!==y?o/y:0)<x)return i;if((0!==y?a/y:0)<x)return s;var S=r.divide(.5);d/=2;var P=S[0].endpointDistance(),A=S[1].endpointDistance();b=o<=P?(r=S[0],s-=d,P-(w=o)):(r=S[1],i+=d,A-(w=o-P)),o=w,a=b}},toPoints:function(t){for(var n=void 0===(t=t||{}).precision?this.PRECISION:t.precision,e=void 0===t.subdivisions?this.getSubdivisions({precision:n}):t.subdivisions,r=[e[0].start.clone()],i=e.length,s=0;s<i;s++){var o=e[s];r.push(o.end.clone())}return r},toPolyline:function(t){return new X(this.toPoints(t))},toString:function(){return this.start+" "+this.controlPoint1+" "+this.controlPoint2+" "+this.end},translate:function(t,n){return this.start.translate(t,n),this.controlPoint1.translate(t,n),this.controlPoint2.translate(t,n),this.end.translate(t,n),this}},tt.prototype.divide=tt.prototype.divideAtT;var et=function(t){if(!(this instanceof et))return new et(t);if("string"==typeof t)return new et.parse(t);var n,e;if(this.segments=[],t)if(Array.isArray(t)&&0!==t.length)if(e=(t=t.reduce(function(t,n){return t.concat(n)},[])).length,t[0].isSegment)for(n=0;n<e;n++){var r=t[n];this.appendSegment(r)}else{var i=null;for(n=0;n<e;n++){var s=t[n];if(!(s instanceof N||s instanceof tt))throw new Error("Cannot construct a path segment from the provided object.");0===n&&this.appendSegment(et.createSegment("M",s.start)),i&&!i.end.equals(s.start)&&this.appendSegment(et.createSegment("M",s.start)),s instanceof N?this.appendSegment(et.createSegment("L",s.end)):s instanceof tt&&this.appendSegment(et.createSegment("C",s.controlPoint1,s.controlPoint2,s.end)),i=s}}else if(t.isSegment)this.appendSegment(t);else if(t instanceof N)this.appendSegment(et.createSegment("M",t.start)),this.appendSegment(et.createSegment("L",t.end));else if(t instanceof tt)this.appendSegment(et.createSegment("M",t.start)),this.appendSegment(et.createSegment("C",t.controlPoint1,t.controlPoint2,t.end));else{if(!(t instanceof X))throw new Error("Cannot construct a path from the provided object.");if(!t.points||0===t.points.length)return;for(e=t.points.length,n=0;n<e;n++){var o=t.points[n];0===n?this.appendSegment(et.createSegment("M",o)):this.appendSegment(et.createSegment("L",o))}}else;};function rt(t,n){return n.unshift(null),new(Function.prototype.bind.apply(t,n))}et.parse=function(t){if(!t)return new et;for(var n=new et,e=t.match(/(?:[a-zA-Z] *)(?:(?:-?\d+(?:\.\d+)?(?:e[-+]?\d+)? *,? *)|(?:-?\.\d+ *,? *))+|(?:[a-zA-Z] *)(?! |\d|-|\.)/g),r=e.length,i=0;i<r;i++){var s=e[i].match(/(?:[a-zA-Z])|(?:(?:-?\d+(?:\.\d+)?(?:e[-+]?\d+)?))|(?:(?:-?\.\d+))/g),o=et.createSegment.apply(this,s);n.appendSegment(o)}return n},et.createSegment=function(t){var n=arguments;if(!t)throw new Error("Type must be provided.");var e=et.segmentTypes[t];if(!e)throw new Error(t+" is not a recognized path segment type.");for(var r=[],i=arguments.length,s=1;s<i;s++)r.push(n[s]);return rt(e,r)},et.prototype={type:v.Path,appendSegment:function(t){var n,e=this.segments,r=e.length,i=0!==r?e[r-1]:null;if(Array.isArray(t)){if(!(t=t.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");for(var s=t.length,o=0;o<s;o++){var a=t[o];n=this.prepareSegment(a,i,null),e.push(n),i=n}}else{if(!t||!t.isSegment)throw new Error("Segment required.");n=this.prepareSegment(t,i,null),e.push(n)}},bbox:function(){var t,n=this.segments,e=n.length;if(0===e)return null;for(var r=0;r<e;r++){var i=n[r];if(i.isVisible){var s=i.bbox();t=t?t.union(s):s}}if(t)return t;var o=n[e-1];return new B(o.end.x,o.end.y,0,0)},clone:function(){for(var t=this.segments,n=t.length,e=new et,r=0;r<n;r++){var i=t[r].clone();e.appendSegment(i)}return e},closestPoint:function(t,n){var e=this.closestPointT(t,n);return e?this.pointAtT(e):null},closestPointLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.closestPointT(t,r);return i?this.lengthAtT(i,r):0},closestPointNormalizedLength:function(t,n){var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.closestPointLength(t,r);if(0===i)return 0;var s=this.length(r);return 0===s?0:i/s},closestPointT:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;for(var i,s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=1/0,h=0;h<r;h++){var u=e[h],c=o[h];if(u.isVisible){var l=u.closestPointT(t,{precision:s,subdivisions:c}),f=u.pointAtT(l),d=new N(f,t).squaredLength();d<a&&(i={segmentIndex:h,value:l},a=d)}}return i||{segmentIndex:r-1,value:1}},closestPointTangent:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;for(var i,s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=1/0,h=0;h<r;h++){var u=e[h],c=o[h];if(u.isDifferentiable()){var l=u.closestPointT(t,{precision:s,subdivisions:c}),f=u.pointAtT(l),d=new N(f,t).squaredLength();d<a&&(i=u.tangentAtT(l),a=d)}}return i||null},containsPoint:function(t,n){var e=this.toPolylines(n);if(!e)return!1;for(var r=e.length,i=0,s=0;s<r;s++){e[s].containsPoint(t)&&i++}return i%2==1},divideAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.divideAtLength(i,r)},divideAtLength:function(t,n){var e=this.segments.length;if(0===e)return null;var r=!0;t<0&&(r=!1,t=-t);var i,s,o,a,h,u,c,l=void 0===(n=n||{}).precision?this.PRECISION:n.precision,f=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:l}):n.segmentSubdivisions,d=0;for(i=0;i<e;i++){var g=r?i:e-1-i;s=this.getSegment(g);var v=f[g],p=s.length({precision:l,subdivisions:v});if(s.isDifferentiable()&&(h=s,u=g,t<=d+p)){a=g,o=s.divideAtLength((r?1:-1)*(t-d),{precision:l,subdivisions:v});break}d+=p}if(!h)return null;o||(a=u,c=r?1:0,o=h.divideAtT(c));var m=this.clone();m.replaceSegment(a,o);var y=a,x=a+1,w=a+2;o[0].isDifferentiable()||(m.removeSegment(y),x-=1,w-=1);var b=m.getSegment(x).start;m.insertSegment(x,et.createSegment("M",b)),w+=1,o[1].isDifferentiable()||(m.removeSegment(w-1),w-=1);var S=w-y-1;for(i=w;i<m.segments.length;i++){var P=this.getSegment(i-S);if("Z"===(s=m.getSegment(i)).type&&!P.subpathStartSegment.end.equals(s.subpathStartSegment.end)){var A=et.createSegment("L",P.end);m.replaceSegment(i,A)}}return[new et(m.segments.slice(0,x)),new et(m.segments.slice(x))]},equals:function(t){if(!t)return!1;var n=this.segments,e=t.segments,r=n.length;if(e.length!==r)return!1;for(var i=0;i<r;i++){var s=n[i],o=e[i];if(s.type!==o.type||!s.equals(o))return!1}return!0},getSegment:function(t){var n=this.segments,e=n.length;if(0===e)throw new Error("Path has no segments.");if(t<0&&(t=e+t),e<=t||t<0)throw new Error("Index out of range.");return n[t]},getSegmentSubdivisions:function(t){for(var n=this.segments,e=n.length,r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=[],s=0;s<e;s++){var o=n[s].getSubdivisions({precision:r});i.push(o)}return i},getSubpaths:function(){for(var t=this.clone().validate().segments,n=t.length,e=[],r=0;r<n;r++){var i=t[r];i.isSubpathStart?e.push(new et(i)):e[e.length-1].appendSegment(i)}return e},insertSegment:function(t,n){var e,r=this.segments,i=r.length;if(t<0&&(t=i+t+1),i<t||t<0)throw new Error("Index out of range.");var s=null,o=null;if(0!==i&&(o=1<=t?(s=r[t-1]).nextSegment:r[0]),Array.isArray(n)){if(!(n=n.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");for(var a=n.length,h=0;h<a;h++){var u=n[h];e=this.prepareSegment(u,s,o),r.splice(t+h,0,e),s=e}}else{if(!n||!n.isSegment)throw new Error("Segment required.");e=this.prepareSegment(n,s,o),r.splice(t,0,e)}},intersectionWithLine:function(t,n){var e=null,r=this.toPolylines(n);if(!r)return null;for(var i=0,s=r.length;i<s;i++){var o=r[i],a=t.intersect(o);a&&(e||(e=[]),Array.isArray(a)?Array.prototype.push.apply(e,a):e.push(a))}return e},isDifferentiable:function(){for(var t=this.segments,n=t.length,e=0;e<n;e++){if(t[e].isDifferentiable())return!0}return!1},isValid:function(){var t=this.segments;return 0===t.length||"M"===t[0].type},length:function(t){var n=this.segments,e=n.length;if(0===e)return 0;for(var r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=void 0===t.segmentSubdivisions?this.getSegmentSubdivisions({precision:r}):t.segmentSubdivisions,s=0,o=0;o<e;o++){var a=n[o],h=i[o];s+=a.length({subdivisions:h})}return s},lengthAtT:function(t,n){var e=this.segments,r=e.length;if(0===r)return 0;var i=t.segmentIndex;if(i<0)return 0;var s=t.value;r<=i?(i=r-1,s=1):s<0?s=0:1<s&&(s=1);for(var o,a=void 0===(n=n||{}).precision?this.PRECISION:n.precision,h=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:a}):n.segmentSubdivisions,u=0,c=0;c<i;c++){var l=e[c];o=h[c],u+=l.length({precisison:a,subdivisions:o})}return l=e[i],o=h[i],u+=l.lengthAtT(s,{precisison:a,subdivisions:o})},pointAt:function(t,n){if(0===this.segments.length)return null;if(t<=0)return this.start.clone();if(1<=t)return this.end.clone();var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.pointAtLength(i,r)},pointAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;if(0===t)return this.start.clone();var i=!0;t<0&&(i=!1,t=-t);for(var s,o=void 0===(n=n||{}).precision?this.PRECISION:n.precision,a=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:o}):n.segmentSubdivisions,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=a[c],d=l.length({precision:o,subdivisions:f});if(l.isVisible){if(t<=h+d)return l.pointAtLength((i?1:-1)*(t-h),{precision:o,subdivisions:f});s=l}h+=d}return s?i?s.end:s.start:e[r-1].end.clone()},pointAtT:function(t){var n=this.segments,e=n.length;if(0===e)return null;var r=t.segmentIndex;if(r<0)return n[0].pointAtT(0);if(e<=r)return n[e-1].pointAtT(1);var i=t.value;return i<0?i=0:1<i&&(i=1),n[r].pointAtT(i)},PRECISION:3,prepareSegment:function(t,n,e){t.previousSegment=n,t.nextSegment=e,n&&(n.nextSegment=t),e&&(e.previousSegment=t);var r=t;return t.isSubpathStart&&(t.subpathStartSegment=t,r=e),r&&this.updateSubpathStartSegment(r),t},removeSegment:function(t){var n=this.segments,e=n.length;if(0===e)throw new Error("Path has no segments.");if(t<0&&(t=e+t),e<=t||t<0)throw new Error("Index out of range.");var r=n.splice(t,1)[0],i=r.previousSegment,s=r.nextSegment;i&&(i.nextSegment=s),s&&(s.previousSegment=i),r.isSubpathStart&&s&&this.updateSubpathStartSegment(s)},replaceSegment:function(t,n){var e,r=this.segments,i=r.length;if(0===i)throw new Error("Path has no segments.");if(t<0&&(t=i+t),i<=t||t<0)throw new Error("Index out of range.");var s=r[t],o=s.previousSegment,a=s.nextSegment,h=s.isSubpathStart;if(Array.isArray(n)){if(!(n=n.reduce(function(t,n){return t.concat(n)},[]))[0].isSegment)throw new Error("Segments required.");r.splice(t,1);for(var u=n.length,c=0;c<u;c++){var l=n[c];e=this.prepareSegment(l,o,a),r.splice(t+c,0,e),o=e,h&&e.isSubpathStart&&(h=!1)}}else{if(!n||!n.isSegment)throw new Error("Segment required.");e=this.prepareSegment(n,o,a),r.splice(t,1,e),h&&e.isSubpathStart&&(h=!1)}h&&a&&this.updateSubpathStartSegment(a)},round:function(t){for(var n=this.segments,e=n.length,r=0;r<e;r++){n[r].round(t)}return this},scale:function(t,n,e){for(var r=this.segments,i=r.length,s=0;s<i;s++){r[s].scale(t,n,e)}return this},segmentAt:function(t,n){var e=this.segmentIndexAt(t,n);return e?this.getSegment(e):null},segmentAtLength:function(t,n){var e=this.segmentIndexAtLength(t,n);return e?this.getSegment(e):null},segmentIndexAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.segmentIndexAtLength(i,r)},segmentIndexAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;var i=!0;t<0&&(i=!1,t=-t);for(var s=void 0===(n=n||{}).precision?this.PRECISION:n.precision,o=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:s}):n.segmentSubdivisions,a=null,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=o[c],d=l.length({precision:s,subdivisions:f});if(l.isVisible){if(t<=h+d)return c;a=c}h+=d}return a},serialize:function(){if(!this.isValid())throw new Error("Invalid path segments.");return this.toString()},tangentAt:function(t,n){if(0===this.segments.length)return null;t<0&&(t=0),1<t&&(t=1);var e=void 0===(n=n||{}).precision?this.PRECISION:n.precision,r={precision:e,segmentSubdivisions:void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:e}):n.segmentSubdivisions},i=this.length(r)*t;return this.tangentAtLength(i,r)},tangentAtLength:function(t,n){var e=this.segments,r=e.length;if(0===r)return null;var i=!0;t<0&&(i=!1,t=-t);for(var s,o=void 0===(n=n||{}).precision?this.PRECISION:n.precision,a=void 0===n.segmentSubdivisions?this.getSegmentSubdivisions({precision:o}):n.segmentSubdivisions,h=0,u=0;u<r;u++){var c=i?u:r-1-u,l=e[c],f=a[c],d=l.length({precision:o,subdivisions:f});if(l.isDifferentiable()){if(t<=h+d)return l.tangentAtLength((i?1:-1)*(t-h),{precision:o,subdivisions:f});s=l}h+=d}if(s){var g=i?1:0;return s.tangentAtT(g)}return null},tangentAtT:function(t){var n=this.segments,e=n.length;if(0===e)return null;var r=t.segmentIndex;if(r<0)return n[0].tangentAtT(0);if(e<=r)return n[e-1].tangentAtT(1);var i=t.value;return i<0?i=0:1<i&&(i=1),n[r].tangentAtT(i)},toPoints:function(t){var n=this.segments,e=n.length;if(0===e)return null;for(var r=void 0===(t=t||{}).precision?this.PRECISION:t.precision,i=void 0===t.segmentSubdivisions?this.getSegmentSubdivisions({precision:r}):t.segmentSubdivisions,s=[],o=[],a=0;a<e;a++){var h=n[a];if(h.isVisible){var u=i[a];if(0<u.length){var c=u.map(function(t){return t.start});Array.prototype.push.apply(o,c)}else o.push(h.start)}else 0<o.length&&(o.push(n[a-1].end),s.push(o),o=[])}return 0<o.length&&(o.push(this.end),s.push(o)),s},toPolylines:function(t){var n=[],e=this.toPoints(t);if(!e)return null;for(var r=0,i=e.length;r<i;r++)n.push(new X(e[r]));return n},toString:function(){for(var t=this.segments,n=t.length,e="",r=0;r<n;r++){e+=t[r].serialize()+" "}return e.trim()},translate:function(t,n){for(var e=this.segments,r=e.length,i=0;i<r;i++){e[i].translate(t,n)}return this},updateSubpathStartSegment:function(t){for(var n=t.previousSegment;t&&!t.isSubpathStart;)t.subpathStartSegment=n?n.subpathStartSegment:null,t=(n=t).nextSegment},validate:function(){return this.isValid()||this.insertSegment(0,et.createSegment("M",0,0)),this}},Object.defineProperty(et.prototype,"start",{configurable:!0,enumerable:!0,get:function(){var t=this.segments,n=t.length;if(0===n)return null;for(var e=0;e<n;e++){var r=t[e];if(r.isVisible)return r.start}return t[n-1].end}}),Object.defineProperty(et.prototype,"end",{configurable:!0,enumerable:!0,get:function(){var t=this.segments,n=t.length;if(0===n)return null;for(var e=n-1;0<=e;e--){var r=t[e];if(r.isVisible)return r.end}return t[n-1].end}});var it={bbox:function(){throw new Error("Declaration missing for virtual function.")},clone:function(){throw new Error("Declaration missing for virtual function.")},closestPoint:function(){throw new Error("Declaration missing for virtual function.")},closestPointLength:function(){throw new Error("Declaration missing for virtual function.")},closestPointNormalizedLength:function(){throw new Error("Declaration missing for virtual function.")},closestPointT:function(t){if(this.closestPointNormalizedLength)return this.closestPointNormalizedLength(t);throw new Error("Neither closestPointT() nor closestPointNormalizedLength() function is implemented.")},closestPointTangent:function(){throw new Error("Declaration missing for virtual function.")},divideAt:function(){throw new Error("Declaration missing for virtual function.")},divideAtLength:function(){throw new Error("Declaration missing for virtual function.")},divideAtT:function(t){if(this.divideAt)return this.divideAt(t);throw new Error("Neither divideAtT() nor divideAt() function is implemented.")},equals:function(){throw new Error("Declaration missing for virtual function.")},getSubdivisions:function(){throw new Error("Declaration missing for virtual function.")},isDifferentiable:function(){throw new Error("Declaration missing for virtual function.")},isSegment:!0,isSubpathStart:!1,isVisible:!0,length:function(){throw new Error("Declaration missing for virtual function.")},lengthAtT:function(t){if(t<=0)return 0;var n=this.length();return 1<=t?n:n*t},nextSegment:null,pointAt:function(){throw new Error("Declaration missing for virtual function.")},pointAtLength:function(){throw new Error("Declaration missing for virtual function.")},pointAtT:function(t){if(this.pointAt)return this.pointAt(t);throw new Error("Neither pointAtT() nor pointAt() function is implemented.")},previousSegment:null,round:function(){throw new Error("Declaration missing for virtual function.")},subpathStartSegment:null,scale:function(){throw new Error("Declaration missing for virtual function.")},serialize:function(){throw new Error("Declaration missing for virtual function.")},tangentAt:function(){throw new Error("Declaration missing for virtual function.")},tangentAtLength:function(){throw new Error("Declaration missing for virtual function.")},tangentAtT:function(t){if(this.tangentAt)return this.tangentAt(t);throw new Error("Neither tangentAtT() nor tangentAt() function is implemented.")},toString:function(){throw new Error("Declaration missing for virtual function.")},translate:function(){throw new Error("Declaration missing for virtual function.")}};Object.defineProperty(it,"end",{configurable:!0,enumerable:!0,writable:!0}),Object.defineProperty(it,"start",{configurable:!0,enumerable:!0,get:function(){if(!this.previousSegment)throw new Error("Missing previous segment. (This segment cannot be the first segment of a path; OR segment has not yet been added to a path.)");return this.previousSegment.end}}),Object.defineProperty(it,"type",{configurable:!0,enumerable:!0,get:function(){throw new Error("Bad segment declaration. No type specified.")}});var st=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof st))return rt(st,r);if(0===i)throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates (none provided).");if(r[0]instanceof N){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates ("+i+" lines provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(2===i)return this.end=new L(+r[0],+r[1]),this;if(i<2)throw new Error("Lineto constructor expects a line, 1 point, or 2 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=2)o=r.slice(s,s+2),t.push(rt(st,o));return t}if(1===i)return this.end=new L(r[0]),this;for(t=[],s=0;s<i;s+=1)n=r[s],t.push(new st(n));return t},ot={clone:function(){return new st(this.end)},divideAt:function(t){var n=new N(this.start,this.end).divideAt(t);return[new st(n[0]),new st(n[1])]},divideAtLength:function(t){var n=new N(this.start,this.end).divideAtLength(t);return[new st(n[0]),new st(n[1])]},getSubdivisions:function(){return[]},isDifferentiable:function(){return!!this.previousSegment&&!this.start.equals(this.end)},round:function(t){return this.end.round(t),this},scale:function(t,n,e){return this.end.scale(t,n,e),this},serialize:function(){var t=this.end;return this.type+" "+t.x+" "+t.y},toString:function(){return this.type+" "+this.start+" "+this.end},translate:function(t,n){return this.end.translate(t,n),this}};Object.defineProperty(ot,"type",{configurable:!0,enumerable:!0,value:"L"}),st.prototype=nt(it,N.prototype,ot);var at=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof at))return rt(at,r);if(0===i)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates (none provided).");if(r[0]instanceof tt){if(1===i)return this.controlPoint1=r[0].controlPoint1.clone(),this.controlPoint2=r[0].controlPoint2.clone(),this.end=r[0].end.clone(),this;throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" curves provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(6===i)return this.controlPoint1=new L(+r[0],+r[1]),this.controlPoint2=new L(+r[2],+r[3]),this.end=new L(+r[4],+r[5]),this;if(i<6)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=6)o=r.slice(s,s+6),t.push(rt(at,o));return t}if(3===i)return this.controlPoint1=new L(r[0]),this.controlPoint2=new L(r[1]),this.end=new L(r[2]),this;if(i<3)throw new Error("Curveto constructor expects a curve, 3 points, or 6 coordinates ("+i+" points provided).");for(t=[],s=0;s<i;s+=3)n=r.slice(s,s+3),t.push(rt(at,n));return t},ht={clone:function(){return new at(this.controlPoint1,this.controlPoint2,this.end)},divideAt:function(t,n){var e=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAt(t,n);return[new at(e[0]),new at(e[1])]},divideAtLength:function(t,n){var e=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAtLength(t,n);return[new at(e[0]),new at(e[1])]},divideAtT:function(t){var n=new tt(this.start,this.controlPoint1,this.controlPoint2,this.end).divideAtT(t);return[new at(n[0]),new at(n[1])]},isDifferentiable:function(){if(!this.previousSegment)return!1;var t=this.start,n=this.controlPoint1,e=this.controlPoint2,r=this.end;return!(t.equals(n)&&n.equals(e)&&e.equals(r))},round:function(t){return this.controlPoint1.round(t),this.controlPoint2.round(t),this.end.round(t),this},scale:function(t,n,e){return this.controlPoint1.scale(t,n,e),this.controlPoint2.scale(t,n,e),this.end.scale(t,n,e),this},serialize:function(){var t=this.controlPoint1,n=this.controlPoint2,e=this.end;return this.type+" "+t.x+" "+t.y+" "+n.x+" "+n.y+" "+e.x+" "+e.y},toString:function(){return this.type+" "+this.start+" "+this.controlPoint1+" "+this.controlPoint2+" "+this.end},translate:function(t,n){return this.controlPoint1.translate(t,n),this.controlPoint2.translate(t,n),this.end.translate(t,n),this}};Object.defineProperty(ht,"type",{configurable:!0,enumerable:!0,value:"C"}),at.prototype=nt(it,tt.prototype,ht);var ut=function(){for(var t,n,e=arguments,r=[],i=arguments.length,s=0;s<i;s++)r.push(e[s]);if(!(this instanceof ut))return rt(ut,r);if(0===i)throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates (none provided).");if(r[0]instanceof N){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" lines provided).")}if(r[0]instanceof tt){if(1===i)return this.end=r[0].end.clone(),this;throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" curves provided).")}if("string"==typeof r[0]||"number"==typeof r[0]){if(2===i)return this.end=new L(+r[0],+r[1]),this;if(i<2)throw new Error("Moveto constructor expects a line, a curve, 1 point, or 2 coordinates ("+i+" coordinates provided).");var o;for(t=[],s=0;s<i;s+=2)o=r.slice(s,s+2),0===s?t.push(rt(ut,o)):t.push(rt(st,o));return t}if(1===i)return this.end=new L(r[0]),this;for(t=[],s=0;s<i;s+=1)n=r[s],0===s?t.push(new ut(n)):t.push(new st(n));return t},ct={bbox:function(){return null},clone:function(){return new ut(this.end)},closestPoint:function(){return this.end.clone()},closestPointNormalizedLength:function(){return 0},closestPointLength:function(){return 0},closestPointT:function(){return 1},closestPointTangent:function(){return null},divideAt:function(){return[this.clone(),this.clone()]},divideAtLength:function(){return[this.clone(),this.clone()]},equals:function(t){return this.end.equals(t.end)},getSubdivisions:function(){return[]},isDifferentiable:function(){return!1},isSubpathStart:!0,isVisible:!1,length:function(){return 0},lengthAtT:function(){return 0},pointAt:function(){return this.end.clone()},pointAtLength:function(){return this.end.clone()},pointAtT:function(){return this.end.clone()},round:function(t){return this.end.round(t),this},scale:function(t,n,e){return this.end.scale(t,n,e),this},serialize:function(){var t=this.end;return this.type+" "+t.x+" "+t.y},tangentAt:function(){return null},tangentAtLength:function(){return null},tangentAtT:function(){return null},toString:function(){return this.type+" "+this.end},translate:function(t,n){return this.end.translate(t,n),this}};Object.defineProperty(ct,"start",{configurable:!0,enumerable:!0,get:function(){throw new Error("Illegal access. Moveto segments should not need a start property.")}}),Object.defineProperty(ct,"type",{configurable:!0,enumerable:!0,value:"M"}),ut.prototype=nt(it,ct);var lt=function(){for(var t=arguments,n=[],e=arguments.length,r=0;r<e;r++)n.push(t[r]);if(!(this instanceof lt))return rt(lt,n);if(0<e)throw new Error("Closepath constructor expects no arguments.");return this},ft={clone:function(){return new lt},divideAt:function(t){var n=new N(this.start,this.end).divideAt(t);return[n[1].isDifferentiable()?new st(n[0]):this.clone(),new st(n[1])]},divideAtLength:function(t){var n=new N(this.start,this.end).divideAtLength(t);return[n[1].isDifferentiable()?new st(n[0]):this.clone(),new st(n[1])]},getSubdivisions:function(){return[]},isDifferentiable:function(){return!(!this.previousSegment||!this.subpathStartSegment)&&!this.start.equals(this.end)},round:function(){return this},scale:function(){return this},serialize:function(){return this.type},toString:function(){return this.type+" "+this.start+" "+this.end},translate:function(){return this}};Object.defineProperty(ft,"end",{configurable:!0,enumerable:!0,get:function(){if(!this.subpathStartSegment)throw new Error("Missing subpath start segment. (This segment needs a subpath start segment (e.g. Moveto); OR segment has not yet been added to a path.)");return this.subpathStartSegment.end}}),Object.defineProperty(ft,"type",{configurable:!0,enumerable:!0,value:"Z"}),lt.prototype=nt(it,N.prototype,ft);var dt=et.segmentTypes={L:st,C:at,M:ut,Z:lt,z:lt};et.regexSupportedData=new RegExp("^[\\s\\d"+Object.keys(dt).join("")+",.]*$"),et.isDataSupported=function(t){return"string"==typeof t&&this.regexSupportedData.test(t)};var gt={curveThroughPoints:function(t){return console.warn("deprecated"),new et(tt.throughPoints(t)).serialize()},getCurveControlPoints:function(t){console.warn("deprecated");var n,e=[],r=[],i=t.length-1;if(1==i)return e[0]=new L((2*t[0].x+t[1].x)/3,(2*t[0].y+t[1].y)/3),r[0]=new L(2*e[0].x-t[0].x,2*e[0].y-t[0].y),[e,r];var s=[];for(n=1;n<i-1;n++)s[n]=4*t[n].x+2*t[n+1].x;s[0]=t[0].x+2*t[1].x,s[i-1]=(8*t[i-1].x+t[i].x)/2;var o=this.getFirstControlPoints(s);for(n=1;n<i-1;++n)s[n]=4*t[n].y+2*t[n+1].y;s[0]=t[0].y+2*t[1].y,s[i-1]=(8*t[i-1].y+t[i].y)/2;var a=this.getFirstControlPoints(s);for(n=0;n<i;n++)e.push(new L(o[n],a[n])),n<i-1?r.push(new L(2*t[n+1].x-o[n+1],2*t[n+1].y-a[n+1])):r.push(new L((t[i].x+o[i-1])/2,(t[i].y+a[i-1])/2));return[e,r]},getCurveDivider:function(t,n,e,r){console.warn("deprecated");var i=new tt(t,n,e,r);return function(t){var n=i.divide(t);return[{p0:n[0].start,p1:n[0].controlPoint1,p2:n[0].controlPoint2,p3:n[0].end},{p0:n[1].start,p1:n[1].controlPoint1,p2:n[1].controlPoint2,p3:n[1].end}]}},getFirstControlPoints:function(t){console.warn("deprecated");var n=t.length,e=[],r=[],i=2;e[0]=t[0]/i;for(var s=1;s<n;s++)r[s]=1/i,i=(s<n-1?4:3.5)-r[s],e[s]=(t[s]-e[s-1])/i;for(s=1;s<n;s++)e[n-s-1]-=r[n-s]*e[n-s];return e},getInversionSolver:function(t,n,e,r){console.warn("deprecated");var i=new tt(t,n,e,r);return function(t){return i.closestPointT(t)}}},vt=function(t){return this instanceof vt?"string"==typeof t?new vt.parse(t):void(this.points=Array.isArray(t)?t.map(L):[]):new vt(t)};function pt(t,n){var e=t.start.x,r=t.start.y,i=t.end.x,s=t.end.y,o=n.start.x,a=n.start.y,h=i-e,u=s-r,c=n.end.x-o,l=n.end.y-a,f=e-o,d=r-a,g=h*l-c*u,v=(h*d-u*f)/g,p=(c*d-l*f)/g;return 0<=v&&v<=1&&0<=p&&p<=1}function mt(t,n){var e=t.a,r=t.b,i=t.x,s=t.y,o=n.start.x-i,a=n.end.x-i,h=n.start.y-s,u=e*e,c=r*r,l=a-o,f=n.end.y-s-h,d=l*l/u+f*f/c,g=2*o*l/u+2*h*f/c,v=g*g-4*d*(o*o/u+h*h/c-1);if(0===v){var p=-g/2/d;return 0<=p&&p<=1}if(0<v){var m=Math.sqrt(v),y=(-g+m)/2/d,x=(-g-m)/2/d;return 0<=y&&y<=1||0<=x&&x<=1}return!1}function yt(t,n){return function(t,n,e,r){var i=Math.cos,s=Math.sin,o=s(n),a=i(n),h=s(r),u=i(r),c=o*o,l=a*a,f=o*a,d=h*h,g=u*u,v=h*u,p=t.a*t.a,m=t.b*t.b,y=e.a*e.a,x=e.b*e.b,w=p*c+m*l,b=y*d+x*g,S=p*l+m*c,P=y*g+x*d,A=2*(m-p)*f,T=2*(x-y)*v,L=-2*w*t.x-A*t.y,E=-2*b*e.x-T*e.y,C=-A*t.x-2*S*t.y,N=-T*e.x-2*P*e.y,I=w*t.x*t.x+S*t.y*t.y+A*t.x*t.y-p*m,M=b*e.x*e.x+P*e.y*e.y+T*e.x*e.y-y*x;T/=2,E/=2,N/=2;var R=Ut([[w,A/=2,L/=2],[A,S,C/=2],[L,C,I]]),O=Ut([[b,T,E],[T,P,N],[E,N,M]]),D=.33333333*(Ut([[b,A,L],[T,S,C],[E,C,I]])+Ut([[w,T,L],[A,P,C],[L,N,I]])+Ut([[w,A,E],[A,S,N],[L,C,M]])),F=.33333333*(Ut([[w,T,E],[A,P,N],[L,N,M]])+Ut([[b,A,E],[T,S,N],[E,C,M]])+Ut([[b,T,L],[T,P,C],[E,N,I]])),k=Bt([[R,D],[D,F]]),q=Bt([[R,F],[D,O]]),V=Bt([[D,F],[F,O]]);if(0<Bt([[2*k,q],[q,2*V]])&&(0<F||0<D))return!1;return!0}(t,0,n,0)}function xt(t,n){var e=n.start,r=n.end,i=t.x,s=t.y,o=t.width,a=t.height;return!(e.x>i+o&&r.x>i+o||e.x<i&&r.x<i||e.y>s+a&&r.y>s+a||e.y<s&&r.y<s)&&(!(!t.containsPoint(n.start)&&!t.containsPoint(n.end))||(pt(t.topLine(),n)||pt(t.rightLine(),n)||pt(t.bottomLine(),n)||pt(t.leftLine(),n)))}function wt(t,n){return!!bt(t,B.fromEllipse(n))&&Et(vt.fromRect(t),n)}function bt(t,n){return t.x<n.x+n.width&&t.x+t.width>n.x&&t.y<n.y+n.height&&t.y+t.height>n.y}function St(t,n){return qt(t,n,{interior:!1})}function Pt(t,n){return Vt(t,n,{interior:!1})}function At(t,n){return zt(t,n,{interior:!1})}function Tt(t,n){return Gt(t,n,{interior:!1})}function Lt(t,n){return qt(t,n,{interior:!0})}function Et(t,n){return Vt(t,n,{interior:!0})}function Ct(t,n){return zt(t,n,{interior:!0})}function Nt(t,n){return Gt(t,n,{interior:!0})}function It(t,n){return Wt(t,n,{interior:!0})}function Mt(t,e,r){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Lt(n,e):St(n,e)})}function Rt(t,e,r){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Et(n,e):Pt(n,e)})}function Ot(t,n,e){return Ft(t,vt.fromRect(n),e)}function Dt(t,n,e){return jt(t,n,e,{interior:!1})}function Ft(t,n,e){return jt(t,n,e,{interior:!0})}function kt(t,e,r,i){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Ft(e,n,i):Dt(e,n,i)})}function qt(t,n,e){void 0===e&&(e={});var r,i=e.interior;if(void 0===i&&(i=!1),i){if(t.containsPoint(n.start))return!0;var s=t.start,o=t.end,a=t.points;r=o.equals(s)?a:a.concat([s])}else r=t.points;for(var h=r.length,u=new N,c=0;c<h-1;c++)if(u.start=r[c],u.end=r[c+1],pt(n,u))return!0;return!1}function Vt(t,n,e){void 0===e&&(e={});var r,i=t.start,s=t.end,o=t.points;if(n.containsPoint(i))return!0;var a=e.interior;if(void 0===a&&(a=!1),a){if(t.containsPoint(n.center()))return!0;r=s.equals(i)?o:o.concat([i])}else r=o;for(var h=r.length,u=new N,c=0;c<h-1;c++)if(u.start=r[c],u.end=r[c+1],mt(n,u))return!0;return!1}function zt(t,n,e){return Wt(t,vt.fromRect(n),e)}function jt(t,e,r,i){return t.getSubpaths().some(function(t){var n=t.toPolylines(r)[0];return"Z"===t.getSegment(-1).type?Wt(e,n,i):Gt(e,n,i)})}function Gt(t,n,e){void 0===e&&(e={});var r,i=e.interior;if(void 0===i&&(i=!1),i){var s=n.start;if(t.containsPoint(s))return!0;r=t.clone().close()}else r=t;for(var o=n.points,a=o.length,h=new N,u=0;u<a-1;u++)if(h.start=o[u],h.end=o[u+1],St(r,h))return!0;return!1}function Wt(t,n,e){return n.containsPoint(t.start)||Gt(t,n.clone().close(),e)}function Bt(t){return t[0][0]*t[1][1]-t[0][1]*t[1][0]}function Ut(t){return t[0][0]*t[1][1]*t[2][2]-t[0][0]*t[1][2]*t[2][1]-t[0][1]*t[1][0]*t[2][2]+t[0][1]*t[1][2]*t[2][0]+t[0][2]*t[1][0]*t[2][1]-t[0][2]*t[1][1]*t[2][0]}vt.parse=function(t){return new vt(H(t))},vt.fromRect=function(t){return new vt([t.topLeft(),t.topRight(),t.bottomRight(),t.bottomLeft()])},vt.prototype=nt(X.prototype,{type:v.Polygon,clone:function(){return new vt(Z(this.points))},convexHull:function(){return new vt(Y(this.points))},lengthPoints:function(){var t=this.start,n=this.end,e=this.points;return e.length<=1||t.equals(n)?e:e.concat([t.clone()])}});var Ht={intersection:{exists:function t(n,e,r,i){switch(n.type){case v.Line:switch(e.type){case v.Line:return pt(n,e)}break;case v.Ellipse:switch(e.type){case v.Line:return mt(n,e);case v.Ellipse:return yt(n,e)}break;case v.Rect:switch(e.type){case v.Line:return xt(n,e);case v.Ellipse:return wt(n,e);case v.Rect:return bt(n,e)}break;case v.Polyline:switch(e.type){case v.Line:return St(n,e);case v.Ellipse:return Pt(n,e);case v.Rect:return At(n,e);case v.Polyline:return Tt(n,e)}break;case v.Polygon:switch(e.type){case v.Line:return Lt(n,e);case v.Ellipse:return Et(n,e);case v.Rect:return Ct(n,e);case v.Polyline:return Nt(n,e);case v.Polygon:return It(n,e)}break;case v.Path:switch(e.type){case v.Line:return Mt(n,e,r);case v.Ellipse:return Rt(n,e,r);case v.Rect:return Ot(n,e,r);case v.Polyline:return Dt(n,e,r);case v.Polygon:return Ft(n,e,r);case v.Path:return kt(n,e,r,i)}}switch(e.type){case v.Ellipse:case v.Rect:case v.Polyline:case v.Polygon:case v.Path:return t(e,n,i,r);default:throw Error("The intersection for "+n+" and "+e+" could not be found.")}},lineWithLine:pt,ellipseWithLine:mt,ellipseWithEllipse:yt,rectWithLine:xt,rectWithEllipse:wt,rectWithRect:bt,polylineWithLine:St,polylineWithEllipse:Pt,polylineWithRect:At,polylineWithPolyline:Tt,polygonWithLine:Lt,polygonWithEllipse:Et,polygonWithRect:Ct,polygonWithPolyline:Nt,polygonWithPolygon:It,pathWithLine:Mt,pathWithEllipse:Rt,pathWithRect:Ot,pathWithPolyline:Dt,pathWithPolygon:Ft,pathWithPath:kt},scale:{linear:function(t,n,e){var r=t[1]-t[0],i=n[1]-n[0];return(e-t[0])/r*i+n[0]||0}},normalizeAngle:h,snapToGrid:s,toDeg:c,toRad:l,random:o,bezier:gt,Curve:tt,Ellipse:D,ellipse:F,Line:N,line:I,Path:et,Point:L,point:t,Polyline:X,Polygon:vt,Rect:B,rect:U,types:v};return function(){if(!("object"==typeof window&&!!window.SVGAngle))return function(){throw new Error("SVG is required to use Vectorizer.")};var F={svg:"http://www.w3.org/2000/svg",xmlns:"http://www.w3.org/2000/xmlns/",xml:"http://www.w3.org/XML/1998/namespace",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.org/1999/xhtml"},t=Math,v=t.PI,s=t.atan2,o=t.sqrt,l=t.min,f=t.max,p=t.cos,m=t.sin,k=function(t,n,e){if(!(this instanceof k))return k.apply(Object.create(k.prototype),arguments);if(t){if(k.isV(t)&&(t=t.node),n=n||{},k.isString(t)){if("svg"===(t=t.trim()).toLowerCase())t=k.createSvgDocument();else if("<"===t[0]){var r=k.createSvgDocument(t);if(1<r.childNodes.length){var i,s,o=[];for(i=0,s=r.childNodes.length;i<s;i++){var a=r.childNodes[i];o.push(new k(document.importNode(a,!0)))}return o}t=document.importNode(r.firstChild,!0)}else t=document.createElementNS(F.svg,t);k.ensureId(t)}return this.node=t,this.setAttributes(n),e&&this.append(e),this}},n=k.prototype;function q(t,n,e){e||(e={});for(var r=e.includeAnnotationIndices,i=e.eol,s=e.lineHeight,o=e.baseSize,a=0,h={},u=n.length-1,c=0;c<=u;c++){var l=n[c],f=null;if(k.isObject(l)){var d=l.attrs,g=k("tspan",d),v=g.node,p=l.t;i&&c===u&&(p+=i),v.textContent=p;var m=d.class;m&&g.addClass(m),r&&g.attr("annotations",l.annotations),f=parseFloat(d["font-size"]),isFinite(f)||(f=o),f&&a<f&&(a=f)}else i&&c===u&&(l+=i),v=document.createTextNode(l||" "),o&&a<o&&(a=o);t.appendChild(v)}return a&&(h.maxFontSize=a),s?h.lineHeight=s:a&&(h.lineHeight=1.2*a),h}Object.defineProperty(n,"id",{enumerable:!0,get:function(){return this.node.id},set:function(t){this.node.id=t}}),n.getTransformToElement=function(t){var n=this.node;if(k.isSVGGraphicsElement(t)&&k.isSVGGraphicsElement(n)){var e=k.toNode(t).getScreenCTM(),r=n.getScreenCTM();if(e&&r)return e.inverse().multiply(r)}return k.createSVGMatrix()},n.transform=function(t,n){var e=this.node;if(k.isUndefined(t))return k.transformStringToMatrix(this.attr("transform"));if(n&&n.absolute)return this.attr("transform",k.matrixToTransformString(t));var r=k.createSVGTransform(t);return e.transform.baseVal.appendItem(r),this},n.translate=function(t,n,e){e=e||{},n=n||0;var r=this.attr("transform")||"",i=k.parseTransformString(r);if(r=i.value,k.isUndefined(t))return i.translate;r=r.replace(/translate\([^)]*\)/g,"").trim();var s="translate("+(e.absolute?t:i.translate.tx+t)+","+(e.absolute?n:i.translate.ty+n)+")";return this.attr("transform",(s+" "+r).trim()),this},n.rotate=function(t,n,e,r){r=r||{};var i=this.attr("transform")||"",s=k.parseTransformString(i);if(i=s.value,k.isUndefined(t))return s.rotate;i=i.replace(/rotate\([^)]*\)/g,"").trim(),t%=360;var o="rotate("+(r.absolute?t:s.rotate.angle+t)+(void 0!==n&&void 0!==e?","+n+","+e:"")+")";return this.attr("transform",(i+" "+o).trim()),this},n.scale=function(t,n){n=k.isUndefined(n)?t:n;var e=this.attr("transform")||"",r=k.parseTransformString(e);if(e=r.value,k.isUndefined(t))return r.scale;e=e.replace(/scale\([^)]*\)/g,"").trim();var i="scale("+t+","+n+")";return this.attr("transform",(e+" "+i).trim()),this},n.bbox=function(t,n){var e,r=this.node,i=r.ownerSVGElement;if(!i)return new B(0,0,0,0);try{e=r.getBBox()}catch(t){e={x:r.clientLeft,y:r.clientTop,width:r.clientWidth,height:r.clientHeight}}if(t)return new B(e);var s=this.getTransformToElement(n||i);return k.transformRect(e,s)},n.getBBox=function(t){var n,e={},r=this.node;if(!r.ownerSVGElement||!k.isSVGGraphicsElement(r))return new B(0,0,0,0);if(t&&(t.target&&(e.target=k.toNode(t.target)),t.recursive&&(e.recursive=t.recursive)),e.recursive){var i=this.children(),s=i.length;if(0===s)return this.getBBox({target:e.target,recursive:!1});e.target||(e.target=this);for(var o=0;o<s;o++){var a,h=i[o];a=0===h.children().length?h.getBBox({target:e.target,recursive:!1}):h.getBBox({target:e.target,recursive:!0}),n=n?n.union(a):a}return n}try{n=r.getBBox()}catch(t){n={x:r.clientLeft,y:r.clientTop,width:r.clientWidth,height:r.clientHeight}}if(e.target){var u=this.getTransformToElement(e.target);return k.transformRect(n,u)}return new B(n)};var V=/em$/;function z(t,n){var e=parseFloat(t);return V.test(t)?e*n:e}n.text=function(t,n){if(t&&"string"!=typeof t)throw new Error("Vectorizer: text() expects the first argument to be a string.");t=k.sanitizeText(t),n||(n={});var e=n.displayEmpty,r=n.eol,i=n.textPath,s=n.textVerticalAnchor,o="middle"===s||"bottom"===s||"top"===s,a=n.x;void 0===a&&(a=this.attr("x")||0);var h=n.includeAnnotationIndices,u=n.annotations;u&&!k.isArray(u)&&(u=[u]);var c=n.lineHeight,l="auto"===c,f=l?"1.5em":c||"1em";this.empty(),this.attr({"xml:space":"preserve",display:t||e?null:"none"});var d=parseFloat(this.attr("font-size"));d||(d=16,(o||u)&&this.attr("font-size",d));var g,v=document;g=i?("string"==typeof i&&(i={d:i}),function(t,n){t||(t={});var e=k("textPath"),r=t.d;if(r&&void 0===t["xlink:href"]){var i=k("path").attr("d",r).appendTo(n.defs());e.attr("xlink:href","#"+i.id)}return k.isObject(t)&&e.attr(t),e.node}(i,this)):v.createDocumentFragment();for(var p,m=0,y=t.split("\n"),x=[],w=0,b=y.length-1;w<=b;w++){var S,P=f,A="v-line",T=v.createElementNS(F.svg,"tspan"),L=y[w];if(L)if(u){var E=k.annotateString(L,u,{offset:-m,includeAnnotationIndices:h}),C=(S=q(T,E,{includeAnnotationIndices:h,eol:w!==b&&r,lineHeight:l?null:f,baseSize:d})).lineHeight;C&&l&&0!==w&&(P=C),0===w&&(p=.8*S.maxFontSize)}else r&&w!==b&&(L+=r),T.textContent=L;else{T.textContent="-",A+=" v-empty-line";var N=T.style;if(N.fillOpacity=0,N.strokeOpacity=0,u){S={};for(var I=d,M=(E=k.findAnnotationsAtIndex(u,m)).length;0<M;M--){var R=E[M-1].attrs;if(R&&"font-size"in R){var O=parseFloat(R["font-size"]);if(isFinite(O)){I=O;break}}}l&&(0<w?P=1.2*I:p=.8*I),T.setAttribute("font-size",I),S.maxFontSize=I}}S&&x.push(S),0<w&&T.setAttribute("dy",P),(0<w||i)&&T.setAttribute("x",a),T.className.baseVal=A,g.appendChild(T),m+=L.length+1}if(o)if(u)P=function(t,n,e,r){if(!Array.isArray(n))return 0;var i=n.length;if(!i)return 0;for(var s=n[0],o=z(s.maxFontSize,e)||e,a=0,h=z(r,e),u=1;u<i;u++)a+=z((s=n[u]).lineHeight,e)||h;var c,l=z(s.maxFontSize,e)||e;switch(t){case"middle":c=o/2-.15*l-a/2;break;case"bottom":c=-.25*l-a;break;default:case"top":c=.8*o}return c}(s,x,d,f);else if("top"===s)P="0.8em";else{var D;switch(0<b?(D=parseFloat(f)||1,D*=b,V.test(f)||(D/=d)):D=0,s){case"middle":P=.3-D/2+"em";break;case"bottom":P=-D-.3+"em"}}else 0===s?P="0em":s?P=s:(P=0,null===this.attr("y")&&this.attr("y",p||"0.8em"));return g.firstChild.setAttribute("dy",P),this.append(g),this},n.removeAttr=function(t){var n=a[t],e=k.qualifyAttr(n),r=e.ns,i=e.local,s=this.node;return r?s.hasAttributeNS(r,i)&&s.removeAttributeNS(r,i):s.hasAttribute(n)&&s.removeAttribute(n),this},n.attr=function(t,n){if(k.isUndefined(t)){for(var e=this.node.attributes,r={},i=0;i<e.length;i++)r[e[i].name]=e[i].value;return r}if(k.isString(t)&&k.isUndefined(n))return this.node.getAttribute(a[t]);if("object"==typeof t)for(var s in t)t.hasOwnProperty(s)&&this.setAttribute(s,t[s]);else this.setAttribute(t,n);return this},n.normalizePath=function(){return"PATH"===this.tagName()&&this.attr("d",k.normalizePathData(this.attr("d"))),this},n.remove=function(){return this.node.parentNode&&this.node.parentNode.removeChild(this.node),this},n.empty=function(){for(;this.node.firstChild;)this.node.removeChild(this.node.firstChild);return this},n.setAttributes=function(t){for(var n in t)t.hasOwnProperty(n)&&this.setAttribute(n,t[n]);return this},n.append=function(t){k.isArray(t)||(t=[t]);for(var n=0,e=t.length;n<e;n++)this.node.appendChild(k.toNode(t[n]));return this},n.prepend=function(t){var n=this.node.firstChild;return n?k(n).before(t):this.append(t)},n.before=function(t){var n=this.node,e=n.parentNode;if(e){k.isArray(t)||(t=[t]);for(var r=0,i=t.length;r<i;r++)e.insertBefore(k.toNode(t[r]),n)}return this},n.appendTo=function(t){return k.toNode(t).appendChild(this.node),this},n.svg=function(){return this.node instanceof window.SVGSVGElement?this:k(this.node.ownerSVGElement)},n.tagName=function(){return this.node.tagName.toUpperCase()},n.defs=function(){var t=this.svg()||this,n=t.node.getElementsByTagName("defs")[0];return n?k(n):k("defs").appendTo(t)},n.clone=function(){var t=k(this.node.cloneNode(!0));return t.node.id=k.uniqueId(),t},n.findOne=function(t){var n=this.node.querySelector(t);return n?k(n):void 0},n.find=function(t){var n=[],e=this.node.querySelectorAll(t);if(e)for(var r=0;r<e.length;r++)n.push(k(e[r]));return n},n.children=function(){for(var t=this.node.childNodes,n=[],e=0;e<t.length;e++){1===t[e].nodeType&&n.push(k(t[e]))}return n},n.parent=function(){return k(this.node.parentNode)||null},n.index=function(){for(var t=0,n=this.node.previousSibling;n;)1===n.nodeType&&t++,n=n.previousSibling;return t},n.findParentByClass=function(t,n){for(var e=this.node.ownerSVGElement,r=this.node.parentNode;r&&r!==n&&r!==e;){var i=k(r);if(i.hasClass(t))return i;r=r.parentNode}return null},n.contains=function(t){var n=this.node,e=k.toNode(t),r=e&&e.parentNode;return n===r||!!(r&&1===r.nodeType&&16&n.compareDocumentPosition(r))},n.toLocalPoint=function(t,n){var e=this.svg().node,r=e.createSVGPoint();r.x=t,r.y=n;try{var i=r.matrixTransform(e.getScreenCTM().inverse()),s=this.getTransformToElement(e).inverse()}catch(t){return r}return i.matrixTransform(s)},n.translateCenterToPoint=function(t){var n=this.getBBox({target:this.svg()}).center();return this.translate(t.x-n.x,t.y-n.y),this},n.translateAndAutoOrient=function(t,n,e){t=new L(t),n=new L(n),e||(e=this.svg());var r=this.scale();this.attr("transform","");var i=this.getBBox({target:e}).scale(r.sx,r.sy),s=k.createSVGTransform();s.setTranslate(-i.x-i.width/2,-i.y-i.height/2);var o=k.createSVGTransform(),a=t.angleBetween(n,t.clone().offset(1,0));a&&o.setRotate(a,0,0);var h=k.createSVGTransform(),u=t.clone().move(n,i.width/2);h.setTranslate(2*t.x-u.x,2*t.y-u.y);var c=this.getTransformToElement(e),l=k.createSVGTransform();return l.setMatrix(h.matrix.multiply(o.matrix.multiply(s.matrix.multiply(c.scale(r.sx,r.sy))))),this.attr("transform",k.matrixToTransformString(l.matrix)),this},n.animateAlongPath=function(t,n){n=k.toNode(n);var e=k.ensureId(n),r=k("animateMotion",t),i=k("mpath",{"xlink:href":"#"+e});r.append(i),this.append(r);try{r.node.beginElement()}catch(t){if("fake"===document.documentElement.getAttribute("smiling")){var s=r.node;s.animators=[];var o=s.getAttribute("id");o&&(id2anim[o]=s);for(var a=getTargets(s),h=0,u=a.length;h<u;h++){var c=a[h],l=new Animator(s,c,h);animators.push(l),(s.animators[h]=l).register()}}}return this};var e=/[^\x20\t\r\n\f]+/g;function i(t){return k.isString(t)&&t.trim().match(e)||[]}n.hasClass=function(t){return!!k.isString(t)&&this.node.classList.contains(t.trim())},n.addClass=function(t){var n;return(n=this.node.classList).add.apply(n,i(t)),this},n.removeClass=function(t){var n;return(n=this.node.classList).remove.apply(n,i(t)),this},n.toggleClass=function(t,n){for(var e=i(t),r=0;r<e.length;r++)this.node.classList.toggle(e[r],n);return this},n.sample=function(t){t=t||1;for(var n,e=this.node,r=e.getTotalLength(),i=[],s=0;s<r;)n=e.getPointAtLength(s),i.push({x:n.x,y:n.y,distance:s}),s+=t;return i},n.convertToPath=function(){var t=k("path");t.attr(this.attr());var n=this.convertToPathData();return n&&t.attr("d",n),t},n.convertToPathData=function(){var t=this.tagName();switch(t){case"PATH":return this.attr("d");case"LINE":return k.convertLineToPathData(this.node);case"POLYGON":return k.convertPolygonToPathData(this.node);case"POLYLINE":return k.convertPolylineToPathData(this.node);case"ELLIPSE":return k.convertEllipseToPathData(this.node);case"CIRCLE":return k.convertCircleToPathData(this.node);case"RECT":return k.convertRectToPathData(this.node)}throw new Error(t+" cannot be converted to PATH.")},k.prototype.toGeometryShape=function(){var t,n,e,r,i,s,o,a,h,u,c,l,f,d,g;switch(this.tagName()){case"RECT":return t=parseFloat(this.attr("x"))||0,n=parseFloat(this.attr("y"))||0,e=parseFloat(this.attr("width"))||0,r=parseFloat(this.attr("height"))||0,new B(t,n,e,r);case"CIRCLE":return i=parseFloat(this.attr("cx"))||0,s=parseFloat(this.attr("cy"))||0,o=parseFloat(this.attr("r"))||0,new D({x:i,y:s},o,o);case"ELLIPSE":return i=parseFloat(this.attr("cx"))||0,s=parseFloat(this.attr("cy"))||0,a=parseFloat(this.attr("rx"))||0,h=parseFloat(this.attr("ry"))||0,new D({x:i,y:s},a,h);case"POLYLINE":return u=k.getPointsFromSvgNode(this),new X(u);case"POLYGON":return 1<(u=k.getPointsFromSvgNode(this)).length&&u.push(u[0]),new X(u);case"PATH":return c=this.attr("d"),et.isDataSupported(c)||(c=k.normalizePathData(c)),new et(c);case"LINE":return l=parseFloat(this.attr("x1"))||0,d=parseFloat(this.attr("y1"))||0,f=parseFloat(this.attr("x2"))||0,g=parseFloat(this.attr("y2"))||0,new N({x:l,y:d},{x:f,y:g})}return this.getBBox()},n.findIntersection=function(t,n){var e=this.svg().node;n=n||e;var r=this.getBBox({target:n}),i=r.center();if(r.intersectionWithLineFromCenterToPoint(t)){var s,o=this.tagName();if("RECT"===o){var a=new B(parseFloat(this.attr("x")||0),parseFloat(this.attr("y")||0),parseFloat(this.attr("width")),parseFloat(this.attr("height"))),h=this.getTransformToElement(n),u=k.decomposeMatrix(h),c=e.createSVGTransform();c.setRotate(-u.rotation,i.x,i.y);var l=k.transformRect(a,c.matrix.multiply(h));s=new B(l).intersectionWithLineFromCenterToPoint(t,u.rotation)}else if("PATH"===o||"POLYGON"===o||"POLYLINE"===o||"CIRCLE"===o||"ELLIPSE"===o){var f,d,g,v,p,m=("PATH"===o?this:this.convertToPath()).sample(),y=1/0,x=[];for(f=0;f<m.length;f++)d=m[f],g=(g=k.createSVGPoint(d.x,d.y)).matrixTransform(this.getTransformToElement(n)),(p=(d=new L(g)).distance(i)+(v=1.1*d.distance(t)))<y?(y=p,x=[{sample:d,refDistance:v}]):p<y+1&&x.push({sample:d,refDistance:v});x.sort(function(t,n){return t.refDistance-n.refDistance}),x[0]&&(s=x[0].sample)}return s}},n.setAttribute=function(t,n){var e=this.node;if(null===n)return this.removeAttr(t),this;var r=a[t],i=k.qualifyAttr(r).ns;return i?e.setAttributeNS(i,r,n):"id"===r?e.id=n:e.setAttribute(r,n),this},k.createSvgDocument=function(t){if(t){var n='<svg xmlns="'+F.svg+'" xmlns:xlink="'+F.xlink+'" version="1.1">'+t+"</svg>";return k.parseXML(n,{async:!1}).documentElement}var e=document.createElementNS(F.svg,"svg");return e.setAttributeNS(F.xmlns,"xmlns:xlink",F.xlink),e.setAttribute("version","1.1"),e},k.createSVGStyle=function(t){return k("style",{type:"text/css"},[k.createCDATASection(t)]).node},k.createCDATASection=function(t){return void 0===t&&(t=""),document.implementation.createDocument(null,"xml",null).createCDATASection(t)},k.idCounter=0,k.uniqueId=function(){return"v-"+ ++k.idCounter},k.toNode=function(t){return k.isV(t)?t.node:t.nodeName&&t||t[0]},k.ensureId=function(t){return(t=k.toNode(t)).id||(t.id=k.uniqueId())},k.sanitizeText=function(t){return(t||"").replace(/ /g,"\xa0")},k.isUndefined=function(t){return void 0===t},k.isString=function(t){return"string"==typeof t},k.isObject=function(t){return t&&"object"==typeof t},k.isArray=Array.isArray,k.parseXML=function(t,n){var e;n=n||{};try{var r=new DOMParser;k.isUndefined(n.async)||(r.async=n.async),e=r.parseFromString(t,"text/xml")}catch(t){e=void 0}if(!e||e.getElementsByTagName("parsererror").length)throw new Error("Invalid XML: "+t);return e};var r=Object.create(null);["baseFrequency","baseProfile","clipPathUnits","contentScriptType","contentStyleType","diffuseConstant","edgeMode","externalResourcesRequired","filterRes","filterUnits","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].forEach(function(t){return r[t]=t}),r.xlinkShow="xlink:show",r.xlinkRole="xlink:role",r.xlinkActuate="xlink:actuate",r.xlinkHref="xlink:href",r.xlinkType="xlink:type",r.xlinkTitle="xlink:title",r.xmlBase="xml:base",r.xmlLang="xml:lang",r.xmlSpace="xml:space";var a=new Proxy(r,{get:function(t,n){return k.supportCamelCaseAttributes?n in t?t[n]:t[n]=n.replace(/[A-Z]/g,"-$&").toLowerCase():n}});Object.defineProperty(k,"attributeNames",{enumerable:!0,value:a,writable:!1}),Object.defineProperty(k,"supportCamelCaseAttributes",{enumerable:!0,value:!0,writable:!0}),k.qualifyAttr=function(t){if(-1===t.indexOf(":"))return{ns:null,local:t};var n=t.split(":");return{ns:F[n[0]],local:n[1]}},k.transformSeparatorRegex=/[ ,]+/,k.transformRegex=/\b\w+\([^()]+\)/g,k.transformFunctionRegex=/\b(\w+)\(([^()]+)\)/,k.transformTranslateRegex=/\btranslate\(([^()]+)\)/,k.transformRotateRegex=/\brotate\(([^()]+)\)/,k.transformScaleRegex=/\bscale\(([^()]+)\)/,k.transformStringToMatrix=function(t){var n=k.createSVGMatrix(),e=t&&t.match(k.transformRegex);if(!e)return n;for(var r=e.length,i=0;i<r;i++){var s=e[i].match(k.transformFunctionRegex);if(s){var o=void 0,a=void 0,h=void 0,u=void 0,c=void 0,l=k.createSVGMatrix(),f=s[1].toLowerCase(),d=s[2].split(k.transformSeparatorRegex);switch(f){case"scale":o=parseFloat(d[0]),a=void 0===d[1]?o:parseFloat(d[1]),l=l.scaleNonUniform(o,a);break;case"translate":h=parseFloat(d[0]),u=parseFloat(d[1]),l=l.translate(h,u);break;case"rotate":c=parseFloat(d[0]),h=parseFloat(d[1])||0,u=parseFloat(d[2])||0,l=0!==h||0!==u?l.translate(h,u).rotate(c).translate(-h,-u):l.rotate(c);break;case"skewx":c=parseFloat(d[0]),l=l.skewX(c);break;case"skewy":c=parseFloat(d[0]),l=l.skewY(c);break;case"matrix":l.a=parseFloat(d[0]),l.b=parseFloat(d[1]),l.c=parseFloat(d[2]),l.d=parseFloat(d[3]),l.e=parseFloat(d[4]),l.f=parseFloat(d[5]);break;default:continue}n=n.multiply(l)}}return n},k.matrixToTransformString=function(t){return t||(t=!0),"matrix("+(void 0!==t.a?t.a:1)+","+(void 0!==t.b?t.b:0)+","+(void 0!==t.c?t.c:0)+","+(void 0!==t.d?t.d:1)+","+(void 0!==t.e?t.e:0)+","+(void 0!==t.f?t.f:0)+")"},k.parseTransformString=function(t){var n,e,r;if(t){var i=k.transformSeparatorRegex;if(0<=t.trim().indexOf("matrix")){var s=k.transformStringToMatrix(t),o=k.decomposeMatrix(s);n=[o.translateX,o.translateY],r=[o.scaleX,o.scaleY],e=[o.rotation];var a=[];0===n[0]&&0===n[1]||a.push("translate("+n+")"),1===r[0]&&1===r[1]||a.push("scale("+r+")"),0!==e[0]&&a.push("rotate("+e+")"),t=a.join(" ")}else{var h=t.match(k.transformTranslateRegex);h&&(n=h[1].split(i));var u=t.match(k.transformRotateRegex);u&&(e=u[1].split(i));var c=t.match(k.transformScaleRegex);c&&(r=c[1].split(i))}}var l=r&&r[0]?parseFloat(r[0]):1;return{value:t,translate:{tx:n&&n[0]?parseInt(n[0],10):0,ty:n&&n[1]?parseInt(n[1],10):0},rotate:{angle:e&&e[0]?parseInt(e[0],10):0,cx:e&&e[1]?parseInt(e[1],10):void 0,cy:e&&e[2]?parseInt(e[2],10):void 0},scale:{sx:l,sy:r&&r[1]?parseFloat(r[1]):l}}},k.deltaTransformPoint=function(t,n){return{x:n.x*t.a+n.y*t.c+0,y:n.x*t.b+n.y*t.d+0}},k.decomposeMatrix=function(t){var n=k.deltaTransformPoint(t,{x:0,y:1}),e=k.deltaTransformPoint(t,{x:1,y:0}),r=180/v*s(n.y,n.x)-90,i=180/v*s(e.y,e.x);return{translateX:t.e,translateY:t.f,scaleX:o(t.a*t.a+t.b*t.b),scaleY:o(t.c*t.c+t.d*t.d),skewX:r,skewY:i,rotation:r}},k.matrixToScale=function(t){var n,e,r,i;return t?(n=k.isUndefined(t.a)?1:t.a,i=k.isUndefined(t.d)?1:t.d,e=t.b,r=t.c):n=i=1,{sx:e?o(n*n+e*e):n,sy:r?o(r*r+i*i):i}},k.matrixToRotate=function(t){var n={x:0,y:1};return t&&(n=k.deltaTransformPoint(t,n)),{angle:h(c(s(n.y,n.x))-90)}},k.matrixToTranslate=function(t){return{tx:t&&t.e||0,ty:t&&t.f||0}},k.isV=function(t){return t instanceof k},k.isVElement=k.isV,k.isSVGGraphicsElement=function(t){return!!t&&((t=k.toNode(t))instanceof SVGElement&&"function"==typeof t.getScreenCTM)};var d=k("svg").node;return k.createSVGMatrix=function(t){var n=d.createSVGMatrix();for(var e in t)n[e]=t[e];return n},k.createSVGTransform=function(t){return k.isUndefined(t)?d.createSVGTransform():(t instanceof SVGMatrix||(t=k.createSVGMatrix(t)),d.createSVGTransformFromMatrix(t))},k.createSVGPoint=function(t,n){var e=d.createSVGPoint();return e.x=t,e.y=n,e},k.transformRect=function(t,n){var e=d.createSVGPoint();e.x=t.x,e.y=t.y;var r=e.matrixTransform(n);e.x=t.x+t.width,e.y=t.y;var i=e.matrixTransform(n);e.x=t.x+t.width,e.y=t.y+t.height;var s=e.matrixTransform(n);e.x=t.x,e.y=t.y+t.height;var o=e.matrixTransform(n),a=l(r.x,i.x,s.x,o.x),h=f(r.x,i.x,s.x,o.x),u=l(r.y,i.y,s.y,o.y),c=f(r.y,i.y,s.y,o.y);return new B(a,u,h-a,c-u)},k.transformPoint=function(t,n){return new L(k.createSVGPoint(t.x,t.y).matrixTransform(n))},k.transformLine=function(t,n){return new N(k.transformPoint(t.start,n),k.transformPoint(t.end,n))},k.transformPolyline=function(t,n){var e=t instanceof X?t.points:t;k.isArray(e)||(e=[]);for(var r=[],i=0,s=e.length;i<s;i++)r[i]=k.transformPoint(e[i],n);return new X(r)},k.styleToObject=function(t){for(var n={},e=t.split(";"),r=0;r<e.length;r++){var i=e[r].split("=");n[i[0].trim()]=i[1].trim()}return n},k.createSlicePathData=function(t,n,e,r){var i=2*v-1e-6,s=t,o=n,a=e,h=r,u=(h<a&&(u=a,a=h,h=u),h-a),c=u<v?"0":"1",l=p(a),f=m(a),d=p(h),g=m(h);return i<=u?s?"M0,"+o+"A"+o+","+o+" 0 1,1 0,"+-o+"A"+o+","+o+" 0 1,1 0,"+o+"M0,"+s+"A"+s+","+s+" 0 1,0 0,"+-s+"A"+s+","+s+" 0 1,0 0,"+s+"Z":"M0,"+o+"A"+o+","+o+" 0 1,1 0,"+-o+"A"+o+","+o+" 0 1,1 0,"+o+"Z":s?"M"+o*l+","+o*f+"A"+o+","+o+" 0 "+c+",1 "+o*d+","+o*g+"L"+s*d+","+s*g+"A"+s+","+s+" 0 "+c+",0 "+s*l+","+s*f+"Z":"M"+o*l+","+o*f+"A"+o+","+o+" 0 "+c+",1 "+o*d+","+o*g+"L0,0Z"},k.mergeAttrs=function(t,n){for(var e in n)"class"===e?t[e]=t[e]?t[e]+" "+n[e]:n[e]:"style"===e?k.isObject(t[e])&&k.isObject(n[e])?t[e]=k.mergeAttrs(t[e],n[e]):k.isObject(t[e])?t[e]=k.mergeAttrs(t[e],k.styleToObject(n[e])):k.isObject(n[e])?t[e]=k.mergeAttrs(k.styleToObject(t[e]),n[e]):t[e]=k.mergeAttrs(k.styleToObject(t[e]),k.styleToObject(n[e])):t[e]=n[e];return t},k.annotateString=function(t,n,e){n=n||[];for(var r,i,s,o=(e=e||{}).offset||0,a=[],h=[],u=0;u<t.length;u++){i=h[u]=t[u];for(var c=0;c<n.length;c++){var l=n[c],f=l.start+o,d=l.end+o;f<=u&&u<d&&(k.isObject(i)?i.attrs=k.mergeAttrs(k.mergeAttrs({},i.attrs),l.attrs):i=h[u]={t:t[u],attrs:l.attrs},e.includeAnnotationIndices&&(i.annotations||(i.annotations=[])).push(c))}(s=h[u-1])?k.isObject(i)&&k.isObject(s)?JSON.stringify(i.attrs)===JSON.stringify(s.attrs)?r.t+=i.t:(a.push(r),r=i):r=k.isObject(i)?(a.push(r),i):k.isObject(s)?(a.push(r),i):(r||"")+i:r=i}return r&&a.push(r),a},k.findAnnotationsAtIndex=function(t,n){var e=[];return t&&t.forEach(function(t){t.start<n&&n<=t.end&&e.push(t)}),e},k.findAnnotationsBetweenIndexes=function(t,n,e){var r=[];return t&&t.forEach(function(t){(n>=t.start&&n<t.end||e>t.start&&e<=t.end||t.start>=n&&t.end<e)&&r.push(t)}),r},k.shiftAnnotations=function(t,n,e){return t&&t.forEach(function(t){t.start<n&&t.end>=n?t.end+=e:t.start>=n&&(t.start+=e,t.end+=e)}),t},k.convertLineToPathData=function(t){return["M",(t=k(t)).attr("x1"),t.attr("y1"),"L",t.attr("x2"),t.attr("y2")].join(" ")},k.convertPolygonToPathData=function(t){var n=k.getPointsFromSvgNode(t);return 0===n.length?null:k.svgPointsToPath(n)+" Z"},k.convertPolylineToPathData=function(t){var n=k.getPointsFromSvgNode(t);return 0===n.length?null:k.svgPointsToPath(n)},k.svgPointsToPath=function(t){for(var n=0,e=t.length;n<e;n++)t[n]=t[n].x+" "+t[n].y;return"M "+t.join(" L")},k.getPointsFromSvgNode=function(t){var n=[],e=(t=k.toNode(t)).points;if(e)for(var r=0,i=e.numberOfItems;r<i;r++)n.push(e.getItem(r));return n},k.KAPPA=.551784,k.convertCircleToPathData=function(t){t=k(t);var n=parseFloat(t.attr("cx"))||0,e=parseFloat(t.attr("cy"))||0,r=parseFloat(t.attr("r")),i=r*k.KAPPA;return["M",n,e-r,"C",n+i,e-r,n+r,e-i,n+r,e,"C",n+r,e+i,n+i,e+r,n,e+r,"C",n-i,e+r,n-r,e+i,n-r,e,"C",n-r,e-i,n-i,e-r,n,e-r,"Z"].join(" ")},k.convertEllipseToPathData=function(t){t=k(t);var n=parseFloat(t.attr("cx"))||0,e=parseFloat(t.attr("cy"))||0,r=parseFloat(t.attr("rx")),i=parseFloat(t.attr("ry"))||r,s=r*k.KAPPA,o=i*k.KAPPA;return["M",n,e-i,"C",n+s,e-i,n+r,e-o,n+r,e,"C",n+r,e+o,n+s,e+i,n,e+i,"C",n-s,e+i,n-r,e+o,n-r,e,"C",n-r,e-o,n-s,e-i,n,e-i,"Z"].join(" ")},k.convertRectToPathData=function(t){return t=k(t),k.rectToPath({x:parseFloat(t.attr("x"))||0,y:parseFloat(t.attr("y"))||0,width:parseFloat(t.attr("width"))||0,height:parseFloat(t.attr("height"))||0,rx:parseFloat(t.attr("rx"))||0,ry:parseFloat(t.attr("ry"))||0})},k.rectToPath=function(t){var n=t.x,e=t.y,r=t.width,i=t.height,s=l(t.rx||t["top-rx"]||0,r/2),o=l(t.rx||t["bottom-rx"]||0,r/2),a=l(t.ry||t["top-ry"]||0,i/2),h=l(t.ry||t["bottom-ry"]||0,i/2);return(s||o||a||h?["M",n,e+a,"v",i-a-h,"a",o,h,0,0,0,o,h,"h",r-2*o,"a",o,h,0,0,0,o,-h,"v",-(i-h-a),"a",s,a,0,0,0,-s,-a,"h",-(r-2*s),"a",s,a,0,0,0,-s,a,"Z"]:["M",n,e,"H",n+r,"V",e+i,"H",n,"V",e,"Z"]).join(" ")},k.normalizePathData=function(){var t="\t\n\v\f\r \xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029",v=new RegExp("([a-z])["+t+",]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?["+t+"]*,?["+t+"]*)+)","ig"),p=new RegExp("(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)["+t+"]*,?["+t+"]*","ig"),n=Math,B=n.PI,U=n.sin,H=n.cos,Z=n.tan,Y=n.asin,X=n.sqrt,J=n.abs;function f(t,n,e,r,i,s){return[1/3*t+2/3*e,1/3*n+2/3*r,1/3*i+2/3*e,1/3*s+2/3*r,i,s]}function K(t,n,e){return{x:t*H(e)-n*U(e),y:t*U(e)+n*H(e)}}function d(t){if(Array.isArray(t)&&Array.isArray(t&&t[0])||(t=function(t){if(!t)return null;var s={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},o=[];return String(t).replace(v,function(t,n,e){var r=[],i=n.toLowerCase();for(e.replace(p,function(t,n){n&&r.push(+n)}),"m"===i&&2<r.length&&(o.push([n].concat(r.splice(0,2))),i="l",n="m"===n?"l":"L");r.length>=s[i]&&(o.push([n].concat(r.splice(0,s[i]))),s[i]););}),o}(t)),!t||!t.length)return[["M",0,0]];for(var n,e=[],r=0,i=0,s=0,o=0,a=t.length,h=0;h<a;h++){var u=[];e.push(u);var c,l,f=t[h];if((n=f[0])!=n.toUpperCase())switch(u[0]=n.toUpperCase(),u[0]){case"A":u[1]=f[1],u[2]=f[2],u[3]=f[3],u[4]=f[4],u[5]=f[5],u[6]=+f[6]+r,u[7]=+f[7]+i;break;case"V":u[1]=+f[1]+i;break;case"H":u[1]=+f[1]+r;break;case"M":for(s=+f[1]+r,o=+f[2]+i,c=f.length,l=1;l<c;l++)u[l]=+f[l]+(l%2?r:i);break;default:for(c=f.length,l=1;l<c;l++)u[l]=+f[l]+(l%2?r:i)}else for(var d=f.length,g=0;g<d;g++)u[g]=f[g];switch(u[0]){case"Z":r=+s,i=+o;break;case"H":r=u[1];break;case"V":i=u[1];break;case"M":s=u[u.length-2],o=u[u.length-1],r=u[u.length-2],i=u[u.length-1];break;default:r=u[u.length-2],i=u[u.length-1]}}return e}function e(t){var r=d(t),n={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null};function e(t,n,e){var r,i;if(!t)return["C",n.x,n.y,n.x,n.y,n.x,n.y];switch(t[0]in{T:1,Q:1}||(n.qx=null,n.qy=null),t[0]){case"M":n.X=t[1],n.Y=t[2];break;case"A":t=0===parseFloat(t[1])||0===parseFloat(t[2])?["L",t[6],t[7]]:["C"].concat(function t(n,e,r,i,s,o,a,h,u,c){var l,f=120*B/180,d=B/180*(+s||0),g=[];if(c)P=c[0],A=c[1],b=c[2],S=c[3];else{n=(l=K(n,e,-d)).x,e=l.y;var v=(n-(h=(l=K(h,u,-d)).x))/2,p=(e-(u=l.y))/2,m=v*v/(r*r)+p*p/(i*i);1<m&&(r*=m=X(m),i*=m);var y=r*r,x=i*i,w=(o==a?-1:1)*X(J((y*x-y*p*p-x*v*v)/(y*p*p+x*v*v)));if(!Number.isFinite(w))return[n,e,h,u,h,u];var b=w*r*p/i+(n+h)/2,S=w*-i*v/r+(e+u)/2,P=Y(((e-S)/i).toFixed(9)),A=Y(((u-S)/i).toFixed(9));(P=n<b?B-P:P)<0&&(P=2*B+P),(A=h<b?B-A:A)<0&&(A=2*B+A),a&&A<P&&(P-=2*B),!a&&P<A&&(A-=2*B)}var T=A-P;if(J(T)>f){var L=A,E=h,C=u;g=t(h=b+r*H(A=P+f*(a&&P<A?1:-1)),u=S+i*U(A),r,i,s,0,a,E,C,[A,L,b,S])}T=A-P;var N=H(P),I=U(P),M=H(A),R=U(A),O=Z(T/4),D=4/3*(r*O),F=4/3*(i*O),k=[n,e],q=[n+D*I,e-F*N],V=[h+D*R,u-F*M],z=[h,u];if(q[0]=2*k[0]-q[0],q[1]=2*k[1]-q[1],c)return[q,V,z].concat(g);for(var j=[],G=(g=[q,V,z].concat(g).join().split(",")).length,W=0;W<G;W++)j[W]=W%2?K(g[W-1],g[W],d).y:K(g[W],g[W+1],d).x;return j}.apply(0,[n.x,n.y].concat(t.slice(1))));break;case"S":i="C"===e||"S"===e?(r=2*n.x-n.bx,2*n.y-n.by):(r=n.x,n.y),t=["C",r,i].concat(t.slice(1));break;case"T":"Q"===e||"T"===e?(n.qx=2*n.x-n.qx,n.qy=2*n.y-n.qy):(n.qx=n.x,n.qy=n.y),t=["C"].concat(f(n.x,n.y,n.qx,n.qy,t[1],t[2]));break;case"Q":n.qx=t[1],n.qy=t[2],t=["C"].concat(f(n.x,n.y,t[1],t[2],t[3],t[4]));break;case"H":t=["L"].concat(t[1],n.y);break;case"V":t=["L"].concat(n.x,t[1])}return t}function i(t,n){if(7<t[n].length){t[n].shift();for(var e=t[n];e.length;)s[n]="A",t.splice(n++,0,["C"].concat(e.splice(0,6)));t.splice(n,1),h=r.length}}for(var s=[],o="",a="",h=r.length,u=0;u<h;u++){r[u]&&(o=r[u][0]),"C"!==o&&(s[u]=o,0<u&&(a=s[u-1])),r[u]=e(r[u],n,a),"A"!==s[u]&&"C"===o&&(s[u]="C"),i(r,u);var c=r[u],l=c.length;n.x=c[l-2],n.y=c[l-1],n.bx=parseFloat(c[l-4])||n.x,n.by=parseFloat(c[l-3])||n.y}return r[0][0]&&"M"===r[0][0]||r.unshift(["M",0,0]),r}return function(t){return e(t).join(",").split(",").join(" ")}}(),k.namespace=F,k.g=Ht,k}()}),"undefined"!=typeof V)var g=V.g,Vectorizer=V;
|
package/dist/version.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@joint/core",
|
|
3
3
|
"title": "JointJS",
|
|
4
|
-
"version": "4.0.
|
|
4
|
+
"version": "4.0.2",
|
|
5
5
|
"description": "JavaScript diagramming library",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"main": "./dist/joint.min.js",
|
|
@@ -188,4 +188,4 @@
|
|
|
188
188
|
"finder",
|
|
189
189
|
"shortest-path-finder"
|
|
190
190
|
]
|
|
191
|
-
}
|
|
191
|
+
}
|
package/src/V/index.mjs
CHANGED
|
@@ -2292,6 +2292,10 @@ const V = (function() {
|
|
|
2292
2292
|
var ry2 = ry * ry;
|
|
2293
2293
|
|
|
2294
2294
|
var k = ((large_arc_flag == sweep_flag) ? -1 : 1) * sqrt(abs(((rx2 * ry2) - (rx2 * y * y) - (ry2 * x * x)) / ((rx2 * y * y) + (ry2 * x * x))));
|
|
2295
|
+
if (!Number.isFinite(k)) {
|
|
2296
|
+
// Arc is a single point
|
|
2297
|
+
return [x1, y1, x2, y2, x2, y2];
|
|
2298
|
+
}
|
|
2295
2299
|
|
|
2296
2300
|
var cx = ((k * rx * y) / ry) + ((x1 + x2) / 2);
|
|
2297
2301
|
var cy = ((k * -ry * x) / rx) + ((y1 + y2) / 2);
|
package/src/dia/Paper.mjs
CHANGED
|
@@ -123,12 +123,16 @@ const textAttributesNS = {
|
|
|
123
123
|
if (text === undefined) text = attrs.text;
|
|
124
124
|
if (text !== undefined) {
|
|
125
125
|
const breakTextFn = value.breakText || breakText;
|
|
126
|
+
const computedStyles = getComputedStyle(node);
|
|
127
|
+
|
|
126
128
|
wrappedText = breakTextFn('' + text, size, {
|
|
127
|
-
'font-weight':
|
|
128
|
-
'font-
|
|
129
|
-
'
|
|
129
|
+
'font-weight': computedStyles.fontWeight,
|
|
130
|
+
'font-family': computedStyles.fontFamily,
|
|
131
|
+
'text-transform': computedStyles.textTransform,
|
|
132
|
+
'font-size': computedStyles.fontSize,
|
|
133
|
+
'letter-spacing': computedStyles.letterSpacing,
|
|
134
|
+
// The `line-height` attribute in SVG is JoinJS specific.
|
|
130
135
|
'lineHeight': attrs['line-height'],
|
|
131
|
-
'letter-spacing': attrs['letter-spacing']
|
|
132
136
|
}, {
|
|
133
137
|
// Provide an existing SVG Document here
|
|
134
138
|
// instead of creating a temporary one over again.
|