diff --git a/article.js b/article.js index 41088a50..5c08742d 100644 --- a/article.js +++ b/article.js @@ -1 +1 @@ -!function(n,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.BezierArticle=e():n.BezierArticle=e()}(window,function(){var e=Math.LOG10E,Be=Math.log,Le=Math.floor,p=Math.tan,Ie=Math.round,Ae=Math.max,V=Math.min,De=Math.PI,qe=Math.pow,je=Math.sqrt,Oe=Math.atan2,l=Math.acos,Ge=Math.sin,Ve=Math.cos,Me=Math.abs;return function(a){function o(t){if(e[t])return e[t].exports;var n=e[t]={i:t,l:!1,exports:{}};return a[t].call(n.exports,n,n.exports,o),n.l=!0,n.exports}var e={};return o.m=a,o.c=e,o.d=function(n,e,t){o.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:t})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(n,a){if(1&a&&(n=o(n)),8&a)return n;if(4&a&&"object"==typeof n&&n&&n.__esModule)return n;var t=Object.create(null);if(o.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:n}),2&a&&"string"!=typeof n)for(var i in n)o.d(t,i,function(e){return n[e]}.bind(null,i));return t},o.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(e,"a",e),e},o.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},o.p="",o(o.s=126)}([function(a,e,t){"use strict";var o=t(1),n=new(t(9));a.exports=function(a,i){var t={getDefaultProps:function(){return{page:a,title:n.getTitle(a),handler:i}},render:function(){return n.getContent(a,this)}};return i&&Object.keys(i).forEach(function(n){t[n]=i[n]}),o.createClass(t)}},function(a,Q,t){"use strict";t.r(Q),function(n){function K(){return null}function m(a,e,t){var n=e&&e._preactCompatRendered&&e._preactCompatRendered.base;n&&n.parentNode!==e&&(n=null),!n&&e&&(n=e.firstElementChild);for(var o=e.childNodes.length;o--;)e.childNodes[o]!==n&&e.removeChild(e.childNodes[o]);var l=Object(Y.e)(a,e,n);return e&&(e._preactCompatRendered=l&&(l._component||{base:l})),"function"==typeof t&&t(),l&&l._component||l}function e(a,e,t,n){var i=m(Object(Y.c)(g,{context:a.context},e),t),r=i._component||i.base;return n&&n.call(r,i),r}function w(n){var e=n._preactCompatRendered&&n._preactCompatRendered.base;return e&&e.parentNode===n&&(Object(Y.e)(Object(Y.c)(K),n,e),!0)}function b(t){return k.bind(null,t)}function x(n){var e=n[o];return e?!0===e?n:e:(e=function(t){return j({displayName:t.displayName||t.name,render:function(){return t(this.props,this.context)}})}(n),Object.defineProperty(e,o,{configurable:!0,value:!0}),e.displayName=n.displayName,e.propTypes=n.propTypes,e.defaultProps=n.defaultProps,Object.defineProperty(n,o,{configurable:!0,value:e}),e)}function k(){for(var n=[],e=arguments.length;e--;)n[e]=arguments[e];return function a(e,t){for(var n=t||0,o;nt?-o(-t,1/3):o(t,1/3)},e=De,C=2*e,r=e/2,c=Number.MAX_SAFE_INTEGER,h=Number.MIN_SAFE_INTEGER,I={Tvalues:[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213],Cvalues:[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872],arcfn:function(a,e){var t=e(a),n=t.x*t.x+t.y*t.y;return void 0!==t.z&&(n+=t.z*t.z),B(n)},between:function(a,e,t){return e<=a&&a<=t||I.approximately(a,e)||I.approximately(a,t)},approximately:function(t,e,n){return g(t-e)<=(n||1e-6)},length:function(a){var e=0,o=I.Tvalues.length,r,s;for(r=0;re.x.min&&(o=e.x.min),s>e.y.min&&(s=e.y.min),lm&&(m=g[e]);return{min:u,mid:(u+m)/2,max:m,size:m-u}},align:function(r,e){var t=e.p1.x,n=e.p1.y,a=-_(e.p2.y-n,e.p2.x-t);return r.map(function(r){return{x:(r.x-t)*E(a)-(r.y-n)*i(a),y:(r.x-t)*i(a)+(r.y-n)*E(a)}})},roots:function(a,e){e=e||{p1:{x:0,y:0},p2:{x:1,y:0}};var i=a.length-1,n=I.align(a,e),o=function(t){return 0<=t&&1>=t};if(2==i){if(0!==(_=(A=n[0].y)-2*(D=n[1].y)+(q=n[2].y))){var s=-B(D*D-A*q),c=-A+D;return[-(s+c)/_,-(-s+c)/_].filter(o)}return D!==q&&0===_?[(2*D-q)/2*(D-q)].filter(o):[]}var h=n[0].y,u=n[1].y,p=n[2].y,w=(n=(3*(D=(-3*h+3*u)/(_=3*u-h-3*p+n[3].y))-(A=(3*h-6*u+3*p)/_)*A)/3)/3,y=(2*A*A*A-9*A*D+27*(q=h/_))/27,b=y/2,x=b*b+w*w*w,_,A,D,q,j;if(0>x){var O=-n/3,k=B(O*O*O),S=-y/(2*k),z=l(-1>S?-1:1b?L(-b):-L(b))-A/3,-j-A/3].filter(o);var P=B(x);return[(j=L(-b+P))-L(b+P)-A/3].filter(o)},droots:function(o){if(3===o.length){var e=o[0],l=o[1],d=o[2],i=e-2*l+d;if(0!==i){var r=-B(l*l-e*d),a=-e+l;return[-(r+a)/i,-(-r+a)/i]}return l!==d&&0===i?[(2*l-d)/(2*(l-d))]:[]}return 2===o.length?(e=o[0])===(l=o[1])?[]:[e/(e-l)]:void 0},inflections:function(d){if(4>d.length)return[];var e=I.align(d,{p1:d[0],p2:d.slice(-1)[0]}),t=e[2].x*e[1].y,n=e[3].x*e[1].y,i=e[1].x*e[2].y,r=18*(-3*t+2*n+3*i-(c=e[3].x*e[2].y)),a=18*(3*t-n-3*i),s=18*(i-t);if(I.approximately(r,0)){if(!I.approximately(a,0)){var o=-s/a;if(0<=o&&1>=o)return[o]}return[]}var l=je(a*a-4*r*s),c=2*r;return I.approximately(c,0)?[]:[(l-a)/c,-(a+l)/c].filter(function(t){return 0<=t&&1>=t})},bboxoverlap:function(t,e){var n=["x","y"],l=n.length,d,c,h,u,m;for(d=0;d=m)return!1;return!0},expandbox:function(n,e){e.x.minn.x.max&&(n.x.max=e.x.max),e.y.max>n.y.max&&(n.y.max=e.y.max),e.z&&e.z.max>n.z.max&&(n.z.max=e.z.max),n.x.mid=(n.x.min+n.x.max)/2,n.y.mid=(n.y.min+n.y.max)/2,n.z&&(n.z.mid=(n.z.min+n.z.max)/2),n.x.size=n.x.max-n.x.min,n.y.size=n.y.max-n.y.min,n.z&&(n.z.size=n.z.max-n.z.min)},pairiteration:function(a,e,t){var n=a.bbox(),i=e.bbox(),r=t||.5;if(n.x.size+n.y.sizex||x>k)&&(b+=C),b>k&&(S=k,k=b,b=S)):ke?t:t+a[e%2]}),new B(a)):new B(a)},B.quadraticFromPoints=function(a,e,t,n){if(void 0===n&&(n=.5),0===n)return new B(e,e,t);if(1===n)return new B(a,e,e);var o=g(2,a,e,t,n);return new B(a,o.A,t)},B.cubicFromPoints=function(u,e,t,n,m){void 0===n&&(n=.5);var p=g(3,u,e,t,n);void 0===m&&(m=T.dist(e,p.C));var a=m*(1-n)/n,s=T.dist(u,t),o=(t.x-u.x)/s,l=(t.y-u.y)/s,c=m*o,h=m*l,d=e.x-c,f=e.y-h,w=e.x+a*o,y=e.y+a*l,v=p.A,b=v.x+(d-v.x)/(1-n),x=v.y+(f-v.y)/(1-n),_=v.x+(w-v.x)/n,E=v.y+(y-v.y)/n,C={x:u.x+(b-u.x)/n,y:u.y+(x-u.y)/n},k={x:t.x+(_-t.x)/(1-n),y:t.y+(E-t.y)/(1-n)};return new B(u,C,k,t)};var e=function(){return T};B.getUtils=e,B.prototype={getUtils:e,valueOf:function(){return this.toString()},toString:function(){return T.pointsToString(this.points)},toSVG:function(){if(this._3d)return!1;for(var e=this.points,t=["M",e[0].x,e[0].y,2===this.order?"Q":"C"],n=1,a=e.length;nthis.order){var n=m*m,s=h*h,o=0,p,g,f;2===this.order?(e=[e[0],e[1],e[2],y],p=n,g=2*(m*h),f=s):3===this.order&&(p=n*m,g=3*(n*h),f=3*(m*s),o=h*s);var w={x:p*e[0].x+g*e[1].x+f*e[2].x+o*e[3].x,y:p*e[0].y+g*e[1].y+f*e[2].y+o*e[3].y};return this._3d&&(w.z=p*e[0].z+g*e[1].z+f*e[2].z+o*e[3].z),w}for(var v=JSON.parse(JSON.stringify(this.points));1=t}),n=n.concat(a[t].sort())}.bind(this)),n=n.sort().filter(function(a,e){return n.indexOf(a)===e}),a.values=n,a},bbox:function(){var a=this.extrema(),e={};return this.dims.forEach(function(t){e[t]=T.getminmax(this,t,a[t])}.bind(this)),e},overlaps:function(a){var e=this.bbox(),t=a.bbox();return T.bboxoverlap(e,t)},offset:function(o,e){if(void 0!==e){var t=this.get(o),l=this.normal(o),n={c:t,n:l,x:t.x+l.x*e,y:t.y+l.y*e};return this._3d&&(n.z=t.z+l.z*e),n}if(this._linear){var i=this.normal(0),a=this.points.map(function(e){var t={x:e.x+o*i.x,y:e.y+o*i.y};return e.z&&l.z&&(t.z=e.z+o*i.z),t});return[new B(a)]}return this.reduce().map(function(e){return e.scale(o)})},simple:function(){if(3===this.order){var t=T.angle(this.points[0],this.points[3],this.points[1]),e=T.angle(this.points[0],this.points[3],this.points[2]);if(0e||0>t&&0=l;)for(l=t+.01;1.01>=l;l+=.01)if(!(h=n.split(t,l)).simple()){if(.01>m(t-(l-=.01)))return[];(h=n.split(t,l))._t1=T.map(t,0,1,n._t1,n._t2),h._t2=T.map(l,0,1,n._t1,n._t2),a.push(h),t=l;break}1>t&&((h=n.split(t,1))._t1=T.map(t,0,1,n._t1,n._t2),h._t2=n._t2,a.push(h))}),a},scale:function(l){var m=this.order,e=!1;if("function"==typeof l&&(e=l),e&&2===m)return this.raise().scale(e);var t=this.clockwise,i=e?e(0):l,r=e?e(1):l,a=[this.offset(0,10),this.offset(1,10)],p=T.lli4(a[0],a[0].c,a[1],a[1].c);if(!p)throw new Error("cannot scale this curve. Try reducing it first.");var o=this.points,c=[];return[0,1].forEach(function(t){var e=c[t*m]=T.copy(o[t*m]);e.x+=(t?r:i)*a[t].n.x,e.y+=(t?r:i)*a[t].n.y}.bind(this)),e?([0,1].forEach(function(n){if(2!==this.order||!n){var i=o[n+1],a={x:i.x-p.x,y:i.y-p.y},r=e?e((n+1)/m):l;e&&!t&&(r=-r);var s=w(a.x*a.x+a.y*a.y);a.x/=s,a.y/=s,c[n+1]={x:i.x+r*a.x,y:i.y+r*a.y}}}.bind(this)),new B(c)):([0,1].forEach(function(t){if(2!==this.order||!t){var e=c[t*m],n=this.derivative(t),a={x:e.x+n.x,y:e.y+n.y};c[t+1]=T.lli4(e,a,p,o[t+1])}}.bind(this)),new B(c))},outline:function(d,e,f,n){function i(o,e,t,n,i){return function(r){var a=e-o;return T.map(r,0,1,o+n/t*a,o+(n+i)/t*a)}}e=void 0===e?d:e;var m=this.reduce(),a=m.length,s=[],o=[],E=0,C=this.length(),h;m.forEach(function(t){x=t.length(),void 0!==f&&void 0!==n?(s.push(t.scale(i(d,f,C,E,x))),o.push(t.scale(i(-e,-n,C,E,x)))):(s.push(t.scale(d)),o.push(t.scale(-e))),E+=x}),o=o.map(function(t){return t.points=(h=t.points)[3]?[h[3],h[2],h[1],h[0]]:[h[2],h[1],h[0]],t}).reverse();var k=s[0].points[0],p=s[a-1].points[s[a-1].points.length-1],g=o[a-1].points[o[a-1].points.length-1],v=o[0].points[0],w=T.makeline(g,k),y=T.makeline(p,v),b=[w].concat(s).concat([y]).concat(o),x=b.length;return new u(b)},outlineshapes:function(l,e,d){e=e||l;for(var n=this.outline(l,e).curves,i=[],r=1,c=n.length,s;ru++);if(100<=u)break;S=S||k,e.push(S),t=_}while(1>s);return e}},a.exports=B}()},function(a,e,t){var n=t(115),i=function(){this.data={},this.data=n};i.prototype={getSectionLocale:function(t){return this.data[t].locale},getContent:function(n,e){return this.data[n].getContent(e)},getTitle:function(t){return this.data[t].title}},a.exports=i},function(a,e,t){"use strict";var n=t(1),i=n.createClass({displayName:"Footer",render:function(){return n.createElement("div",null,n.createElement("footer",{className:"copyright"},"This article is ","\xA9 2011-2017"," to me, Mike \"Pomax\" Kamermans, but the text, code, and images are ",n.createElement("a",{href:"https://github.com/Pomax/bezierinfo/blob/gh-pages/LICENSE.md"},"almost no rights reserved"),". Go do something cool with it!"),n.createElement("footer",{className:"print copyright"},"Content printed from https://pomax.github.io/bezierinfo, ","\xA9 2011-2017"," Mike \"Pomax\" Kamermans."))}});a.exports=i},function(t){"use strict";t.exports={componentDidMount:function(){return"undefined"==typeof document?this.silence():void(this.heading=document.getElementById(this.props.page),document.addEventListener("scroll",this.scrollHandler,{passive:!0}))},scrollHandler:function(){this.heading.getBoundingClientRect().topt;t++)this.points.push({x:this.width/2+e*Ve(t/6*a),y:this.height/2+e*Ge(t/6*a)});this.points=this.points.concat(this.points.slice(0,3)),this.closed=this.degree,this.knots=this.formKnots(this.points),this.weights=this.formWeights(this.points),this.props.controller&&this.props.controller(this,this.knots,this.weights,this.closed),this.draw()},draw:function(){var a=this;this.clear(),this.grid(25);var e=this.points[0];this.points.forEach(function(t){a.stroke(200),a.line(t.x,t.y,e.x,e.y),e=t,a.stroke(0),a.circle(e.x,e.y,4)}),this.drawSplineData()},drawSplineData:function(){if(!(this.points.length<=this.degree)){var t=this.points.map(function(t){return[t.x,t.y]});this.drawCurve(t),this.drawKnots(t)}}}},function(t){"use strict";t.exports={degree:3,activeDistance:9,setup:function(){this.size(400,400);for(var n=2*De,e=0;et.error&&(t.error=.1)}}},setupCircle:function(n){var e=new n.Bezier(70,70,140,40,240,130);n.setCurve(e)},setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e),n.error=.5},getCCenter:function(o,e,t,n){var l=t.x-e.x,h=t.y-e.y,u=n.x-t.x,d=n.y-t.y,f=l*a(i/2)-h*s(i/2),m=l*s(i/2)+h*a(i/2),p=u*a(i/2)-d*s(i/2),g=u*s(i/2)+d*a(i/2),v=(e.x+t.x)/2,w=(e.y+t.y)/2,y=(t.x+n.x)/2,b=(t.y+n.y)/2,x=o.utils.lli8(v,w,v+f,w+m,y,b,y+p,b+g),E=o.utils.dist(x,e),C=_(e.y-x.y,e.x-x.x),k=_(t.y-x.y,t.x-x.x),S=_(n.y-x.y,n.x-x.x),z;return Ck||k>S)&&(C+=r),C>S&&(z=S,S=C,C=z)):Sr.angle?r.angle:0,e:0>r.angle?0:r.angle};r.drawArc(t);var n={x:r.w/2+r.r*i(r.angle/2),y:r.w/2+r.r*d(r.angle/2)},a=e.points[0],s=e.points[3],o=this.guessCurve(a,n,s),l=new r.Bezier([a,o[0],o[1],s]);r.setColor("rgb(140,140,255)"),r.drawLine(l.points[0],l.points[1]),r.drawLine(l.points[1],l.points[2]),r.drawLine(l.points[2],l.points[3]),r.setColor("blue"),r.drawCurve(l),r.drawCircle(l.points[1],3),r.drawCircle(l.points[2],3),r.drawSkeleton(e),r.setColor("black"),r.drawLine(e.points[1],e.points[2]),r.drawCurve(e)},onMouseMove:function(a,e){var t=a.offsetX-e.w/2,n=a.offsetY-e.h/2;if(!(t>e.w/2)){var r=Oe(n,t);0>r&&(r=2*De+r);var s=e.curve.points,l=e.r,c=4*p(r/4)/3;s[1]={x:e.w/2+l,y:e.w/2+l*c},s[2]={x:e.w/2+e.r*(i(r)+c*d(r)),y:e.w/2+e.r*(d(r)-c*i(r))},s[3]={x:e.w/2+e.r*i(r),y:e.w/2+e.r*d(r)},e.setCurve(new e.Bezier(s)),e.angle=r}},drawCircle:function(l){l.setSize(325,325),l.reset();var d=l.getPanelWidth(),t=l.getPanelHeight(),e=d/2-60,n=.55228,i={x:-30,y:-15},a=new l.Bezier([{x:d/2+e,y:t/2},{x:d/2+e,y:t/2+n*e},{x:d/2+n*e,y:t/2+e},{x:d/2,y:t/2+e}]);l.setColor("lightgrey"),l.drawLine({x:0,y:t/2},{x:d+60,y:t/2},i),l.drawLine({x:d/2,y:0},{x:d/2,y:t+60},i);var r=a.points;l.setColor("red"),l.drawPoint(r[0],i),l.drawPoint(r[1],i),l.drawPoint(r[2],i),l.drawPoint(r[3],i),l.drawCurve(a,i),l.setColor("rgb(255,160,160)"),l.drawLine(r[0],r[1],i),l.drawLine(r[1],r[2],i),l.drawLine(r[2],r[3],i),l.setFill("red"),l.text(r[0].x-d/2+","+(r[0].y-t/2),{x:r[0].x+7,y:r[0].y+3},i),l.text(r[1].x-d/2+","+(r[1].y-t/2),{x:r[1].x+7,y:r[1].y+3},i),l.text(r[2].x-d/2+","+(r[2].y-t/2),{x:r[2].x+7,y:r[2].y+7},i),l.text(r[3].x-d/2+","+(r[3].y-t/2),{x:r[3].x,y:r[3].y+13},i),r.forEach(function(t){t.x=-(t.x-d)}),l.setColor("blue"),l.drawCurve(a,i),l.drawLine(r[2],r[3],i),l.drawPoint(r[2],i),l.setFill("blue"),l.text("reflected",{x:r[2].x-30,y:r[2].y+13},i),l.setColor("rgb(200,200,255)"),l.drawLine(r[1],r[0],i),l.drawPoint(r[1],i),r.forEach(function(n){n.y=-(n.y-t)}),l.setColor("green"),l.drawCurve(a,i),r.forEach(function(t){t.x=-(t.x-d)}),l.setColor("purple"),l.drawCurve(a,i),l.drawLine(r[1],r[0],i),l.drawPoint(r[1],i),l.setFill("purple"),l.text("reflected",{x:r[1].x+10,y:r[1].y+3},i),l.setColor("rgb(200,200,255)"),l.drawLine(r[2],r[3],i),l.drawPoint(r[2],i),l.setColor("black"),l.setFill("black"),l.drawLine({x:d/2,y:t/2},{x:d/2+e-2,y:t/2},i),l.drawLine({x:d/2,y:t/2},{x:d/2,y:t/2+e-2},i),l.text("r = "+e,{x:d/2+e/3,y:t/2+10},i)}}},function(a,e,t){"use strict";var n=t(23),i=t(0);a.exports=i("circles_cubic",n)},function(t){"use strict";var d=Ge,i=Ve;t.exports={setup:function(n){n.w=n.getPanelWidth(),n.h=n.getPanelHeight(),n.pad=20,n.r=n.w/2-n.pad,n.mousePt=!1,n.angle=0;var e={x:n.w-n.pad,y:n.h/2};n.setCurve(new n.Bezier(e,e,e))},draw:function(a,e){a.reset(),a.setColor("lightgrey"),a.drawGrid(1,1),a.setColor("red"),a.drawCircle({x:a.w/2,y:a.h/2},a.r),a.setColor("transparent"),a.setFill("rgba(100,255,100,0.4)");var t={x:a.w/2,y:a.h/2,r:a.r,s:0>a.angle?a.angle:0,e:0>a.angle?0:a.angle};a.drawArc(t),a.setColor("black"),a.drawSkeleton(e),a.drawCurve(e)},onMouseMove:function(r,e){var t=r.offsetX-e.w/2,n=r.offsetY-e.h/2,a=Oe(n,t),s=e.curve.points,o=e.r,l=(i(a)-1)/d(a);s[1]={x:e.w/2+o*(i(a)-l*d(a)),y:e.w/2+o*(d(a)+l*i(a))},s[2]={x:e.w/2+e.r*i(a),y:e.w/2+e.r*d(a)},e.setCurve(new e.Bezier(s)),e.angle=a}}},function(a,e,t){"use strict";var n=t(25),i=t(0);a.exports=i("circles",n)},function(t){"use strict";t.exports={statics:{keyHandlingOptions:{propName:"distance",values:{38:1,40:-1}}},setup:function(n,e){n.setCurve(e),n.distance=20},setupQuadratic:function(n){var e=n.getDefaultQuadratic();this.setup(n,e)},setupCubic:function(n){var e=n.getDefaultCubic();this.setup(n,e)},draw:function(n,e){n.reset(),n.drawSkeleton(e),n.drawCurve(e),n.setColor("blue"),e.outline(0,0,n.distance,n.distance).curves.forEach(function(e){return n.drawCurve(e)})}}},function(o,e,t){"use strict";var n=t(27),i=t(0),r=t(3);o.exports=r(i("graduatedoffset",n))},function(t){"use strict";t.exports={statics:{keyHandlingOptions:{propName:"distance",values:{38:1,40:-1}}},setup:function(n,e){n.setCurve(e),n.distance=20},setupQuadratic:function(n){var e=n.getDefaultQuadratic();this.setup(n,e)},setupCubic:function(n){var e=n.getDefaultCubic();this.setup(n,e)},draw:function(a,e){a.reset(),a.drawSkeleton(e);var t=e.reduce();t.forEach(function(e){a.setRandomColor(),a.drawCurve(e),a.drawCircle(e.points[0],1)});var n=t.slice(-1)[0];a.drawPoint(n.points[3]||n.points[2]),a.setColor("red");var o=e.offset(a.distance);o.forEach(function(e){a.drawPoint(e.points[0]),a.drawCurve(e)}),n=o.slice(-1)[0],a.drawPoint(n.points[3]||n.points[2]),a.setColor("blue"),(o=e.offset(-a.distance)).forEach(function(e){a.drawPoint(e.points[0]),a.drawCurve(e)}),n=o.slice(-1)[0],a.drawPoint(n.points[3]||n.points[2])}}},function(o,e,t){"use strict";var n=t(29),i=t(0),r=t(3);o.exports=r(i("offsetting",n))},function(t){"use strict";t.exports={setup:function(n){n.setSize(320,320);var e=new n.Bezier([{x:248,y:188},{x:218,y:294},{x:45,y:290},{x:12,y:236},{x:14,y:82},{x:186,y:177},{x:221,y:90},{x:18,y:156},{x:34,y:57},{x:198,y:18}]);n.setCurve(e),n._lut=e.getLUT()},findClosest:function(l,e,t){var n=l.length,a=t(l[0],e),d=0,c,h;for(c=1;ct;t++)s=e+(2*t-2)+o.lpts.length,s=o.lpts[s%o.lpts.length],l=e+(2*t-1),l=o.lpts[l%o.lpts.length],d=e+2*t,(d=o.lpts[d%o.lpts.length]).x=l.x+(l.x-s.x),d.y=l.y+(l.y-s.y);d=e+6,d=o.lpts[d%o.lpts.length],o.problem=d},movePointsCubicLD:function(a,e){var t,r;1==e%3?(r=e-1,r+=0>r?a.lpts.length:0,t=e-2,t+=0>t?a.lpts.length:0):(r=(e+1)%a.lpts.length,t=(e+2)%a.lpts.length),r=a.lpts[r],(t=a.lpts[t]).x=r.x+(r.x-a.mp.x),t.y=r.y+(r.y-a.mp.y)},linkDerivatives:function(a,e){if(e.mp){var t=8===e.lpts.length,n=e.mp_idx;t?0!=n%2&&this.movePointsQuadraticLD(e,n):0!=n%3&&this.movePointsCubicLD(e,n)}},movePointsQuadraticDirOnly:function(s,e){var t,p,g;[-1,1].forEach(function(n){t=s.mp,p=e+n+s.lpts.length,p=s.lpts[p%s.lpts.length],g=e+2*n+s.lpts.length,g=s.lpts[g%s.lpts.length];var o=m(p.y-t.y,p.x-t.x),l=g.x-p.x,c=g.y-p.y,d=i(l*l+c*c);g.x=p.x+d*a(o),g.y=p.y+d*r(o)}),g=e+4,g=s.lpts[g%s.lpts.length],s.problem=g},movePointsCubicDirOnly:function(s,e){var t,d;1==e%3?(d=e-1,d+=0>d?s.lpts.length:0,t=e-2,t+=0>t?s.lpts.length:0):(d=(e+1)%s.lpts.length,t=(e+2)%s.lpts.length),d=s.lpts[d],t=s.lpts[t];var p=m(d.y-s.mp.y,d.x-s.mp.x),l=t.x-d.x,c=t.y-d.y,h=i(l*l+c*c);t.x=d.x+h*a(p),t.y=d.y+h*r(p)},linkDirection:function(a,e){if(e.mp){var t=8===e.lpts.length,n=e.mp_idx;t?0!=n%2&&this.movePointsQuadraticDirOnly(e,n):0!=n%3&&this.movePointsCubicDirOnly(e,n)}},bufferPoints:function(n,e){e.bpts=JSON.parse(JSON.stringify(e.lpts))},moveQuadraticPoint:function(s,e){this.moveCubicPoint(s,e),[-1,1].forEach(function(t){var n=e-t+s.lpts.length;n=s.lpts[n%s.lpts.length];var p=e-2*t+s.lpts.length;p=s.lpts[p%s.lpts.length];var g=e-3*t+s.lpts.length;g=s.lpts[g%s.lpts.length];var w=m(p.y-n.y,p.x-n.x),h=g.x-p.x,u=g.y-p.y,d=i(h*h+u*u);g.x=p.x+d*a(w),g.y=p.y+d*r(w)});var t=e+4;t=s.lpts[t%s.lpts.length],s.problem=t},moveCubicPoint:function(m,e){var t=m.bpts[e],n=m.lpts[e],i=n.x-t.x,r=n.y-t.y,a=m.lpts.length,s=e-1+a,o=e+1,l=m.bpts[s%a],c=m.bpts[o%a],h=m.lpts[s%a],u=m.lpts[o%a];return h.x=l.x+i,h.y=l.y+r,u.x=c.x+i,u.y=c.y+r,{x:i,y:r}},modelCurve:function(a,e){if(e.mp){var t=8===e.lpts.length,n=e.mp_idx;t?0==n%2?this.moveQuadraticPoint(e,n):this.movePointsQuadraticDirOnly(e,n):0==n%3?this.moveCubicPoint(e,n):this.movePointsCubicDirOnly(e,n)}},draw:function(t){t.reset();var e=t.lpts,n=8===e.length,i=n?new t.Bezier(e[0],e[1],e[2]):new t.Bezier(e[0],e[1],e[2],e[3]);t.drawSkeleton(i,!1,!0),t.drawCurve(i);var r=n?new t.Bezier(e[2],e[3],e[4]):new t.Bezier(e[3],e[4],e[5],e[6]);t.drawSkeleton(r,!1,!0),t.drawCurve(r);var a=n?new t.Bezier(e[4],e[5],e[6]):new t.Bezier(e[6],e[7],e[8],e[9]);t.drawSkeleton(a,!1,!0),t.drawCurve(a);var s=n?new t.Bezier(e[6],e[7],e[0]):new t.Bezier(e[9],e[10],e[11],e[0]);t.drawSkeleton(s,!1,!0),t.drawCurve(s),t.problem&&(t.setColor("red"),t.drawCircle(t.problem,5))}}},function(a,e,t){"use strict";var n=t(35),i=t(0);a.exports=i("polybezier",n)},function(t){"use strict";t.exports={statics:{keyHandlingOptions:{propName:"distance",values:{38:1,40:-1}}},setup:function(t){t.setPanelCount(3),t.lpts=[{x:56,y:153},{x:144,y:83},{x:188,y:185}],t.distance=0},convert:function(a,e,t,n){return[e,{x:e.x+(t.x-a.x)/3,y:e.y+(t.y-a.y)/3},{x:t.x-(n.x-e.x)/3,y:t.y-(n.y-e.y)/3},t]},draw:function(g){g.reset(),g.setColor("lightblue"),g.drawGrid(10,10);var e=g.lpts;g.setColor("black"),g.setFill("black"),e.forEach(function(e,t){g.drawCircle(e,3),g.text("point "+(t+1),e,{x:10,y:7})});var t=g.getPanelWidth(),n=g.getPanelHeight(),i={x:t,y:0};g.setColor("lightblue"),g.drawGrid(10,10,i),g.setColor("black"),g.drawLine({x:0,y:0},{x:0,y:n},i),e.forEach(function(e){g.drawCircle(e,3,i)});var r=e[0],a=e[1],s=e[2],o=s.x-r.x,w=s.y-r.y,y=je(o*o+w*w);o/=y,w/=y,g.drawLine(r,s,i);var h={x:r.x+(s.x-a.x)-g.distance*o,y:r.y+(s.y-a.y)-g.distance*w},u={x:r.x+(s.x-a.x)+g.distance*o,y:r.y+(s.y-a.y)+g.distance*w},d=g.utils.lli4(r,s,a,{x:(h.x+u.x)/2,y:(h.y+u.y)/2});g.setColor("blue"),g.drawCircle(d,3,i),g.drawLine(e[1],d,i),g.setColor("#666"),g.drawLine(d,h,i),g.drawLine(d,u,i),g.setFill("blue"),g.text("p0",h,{x:-20+i.x,y:i.y+2}),g.text("p4",u,{x:10+i.x,y:i.y+2}),g.setColor("red"),g.drawCircle(h,3,i),g.drawLine(a,h,i),g.drawLine(r,{x:r.x+(a.x-h.x)/5,y:r.y+(a.y-h.y)/5},i),g.setColor("#00FF00"),g.drawCircle(u,3,i),g.drawLine(a,u,i),g.drawLine(s,{x:s.x+(u.x-a.x)/5,y:s.y+(u.y-a.y)/5},i);var f=new g.Bezier(this.convert(h,r,a,s)),m=new g.Bezier(this.convert(r,a,s,u));g.setColor("lightgrey"),g.drawCurve(f,i),g.drawCurve(m,i),i.x+=t,g.setColor("lightblue"),g.drawGrid(10,10,i),g.setColor("black"),g.drawLine({x:0,y:0},{x:0,y:n},i),g.drawCurve(f,i),g.drawCurve(m,i),g.drawPoints(f.points,i),g.drawPoints(m.points,i),g.setColor("lightgrey"),g.drawLine(f.points[0],f.points[1],i),g.drawLine(f.points[2],m.points[1],i),g.drawLine(m.points[2],m.points[3],i)}}},function(o,e,t){"use strict";var n=t(37),i=t(0),r=t(3);o.exports=r(i("catmullmoulding",n))},function(a,e,t){"use strict";var n=t(0);a.exports=n("catmullconv")},function(t){t.exports=function(l){if(l.length===l[0].length){var e=0,d=0,c=0,h=l.length,r=0,u=[],s=[];for(e=0;e=t.length;){for(var n=t.length,i=[1],a=1,l=n-1;aa+s[t]*e,0)}}return t}function c(a,i){var t=[];return a.forEach(n=>t.push([n[i]])),t}function s(n,a){return n.map(t=>qe(t,a))}function l(i,e,t,n){var d=function(a,e){e=e||a.length;for(var r=[],n=0;na.push([])),n.forEach((t,r)=>t.forEach((t,e)=>a[e][r]=t)),a}(r)}}(t,n=n||i.length),a=d.T,u=d.Tt,o=y(h(e),y(h(y(u,a)),u));return{x:y(o,c(i,"x")),y:y(o,c(i,"y"))}}function d(a,e){var c;e instanceof Array&&(c=e,e=!1),e=e||0;var h=a.length,i=Array.from(a),r=function(a){for(var e=[],t=a;t--;)e[t]="0".repeat(a).split("").map(t=>parseInt(t));for(t=0;t{l[e]=n/r}),l},f.equidistant=function(n,a){return"0".repeat(a).split("").map((t,e)=>e/(a-1))},d.modes=["polygonal","equidistant"],p.exports=window.makeFit=d},function(a,e,t){"use strict";var l=t(41);a.exports={setup:function(t){this.api=t,this.reset()},reset:function(){if(this.points=[],this.curveset=!1,this.mode=0,this.api){var t=this.api;t.setCurve(!1),t.reset(),t.redraw()}},toggle:function(){this.api&&(this.customTimeValues=!1,this.mode=(this.mode+1)%l.modes.length,this.fitCurve(this.api),this.api.redraw())},draw:function(n,e){n.setPanelCount(1),n.reset(),n.setColor("lightgrey"),n.drawGrid(10,10),n.setColor("black"),!this.curveset&&2t||.95e.t||.95e.c1.length()&&.6>e.c2.length())return p.finals.push(e);var t=e.c1.split(.5);m.setColor("black"),m.drawCurve(e.c1,g),m.setColor("red"),m.drawbbox(t.left.bbox(),g),m.drawbbox(t.right.bbox(),g);var n=e.c2.split(.5);m.setColor("black"),m.drawCurve(e.c2,g),m.setColor("blue"),m.drawbbox(n.left.bbox(),g),m.drawbbox(n.right.bbox(),g),t.left.overlaps(n.left)&&p.pairs.push({c1:t.left,c2:n.left}),t.left.overlaps(n.right)&&p.pairs.push({c1:t.left,c2:n.right}),t.right.overlaps(n.left)&&p.pairs.push({c1:t.right,c2:n.left}),t.right.overlaps(n.right)&&p.pairs.push({c1:t.right,c2:n.right})}),this.prevstep=this.step}else this.pairs.forEach(function(e){m.setColor("black"),m.drawCurve(e.c1,g),m.drawCurve(e.c2,g),m.setColor("red"),m.drawbbox(e.c1.bbox(),g),m.setColor("blue"),m.drawbbox(e.c2.bbox(),g)});0===this.pairs.length&&(this.pairReset(),this.draw(m,e)),g.x+=t,m.setColor("black"),m.drawLine({x:0,y:0},{x:0,y:a},g);var r=e[0].intersects(e[1]).map(function(n){var e=n.split("/").map(function(t){return parseFloat(t)});return{t1:e[0],t2:e[1]}}),o=r[0],s=function(a,e){return .01>n(a.t1-e.t1)&&.01>n(a.t2-e.t2)},d,h;for(h=1;h=u.x&&l>=u.y&&(r.setColor("#00FF00"),n++)}r.drawCurve(e)}),u&&(r.setColor(2>n?"red":"#00FF00"),r.drawCircle(u,3))},setupQuadratic:function(a){var e=a.getDefaultQuadratic(),t=new a.Bezier([15,250,220,20]);a.setCurve(e,t)},setupCubic:function(a){var e=new a.Bezier([100,240,30,60,210,230,160,30]),t=new a.Bezier([25,260,230,20]);a.setCurve(e,t)},draw:function(o,e){o.reset(),e.forEach(function(e){o.drawSkeleton(e),o.drawCurve(e)});var t=o.utils,n={p1:e[1].points[0],p2:e[1].points[1]},i=t.align(e[0].points,n),r=new o.Bezier(i);t.roots(r.points).forEach(function(t){var n=e[0].get(t);o.drawCircle(n,3),o.text("t = "+t,{x:n.x+5,y:n.y+10})})}}},function(a,e,t){"use strict";var n=t(52),i=t(0);a.exports=i("intersections",n)},function(t){"use strict";t.exports={statics:{keyHandlingOptions:{propName:"steps",values:{38:1,40:-1},controller:function(t){1>t.steps&&(t.steps=1)}}},setup:function(n){var e=n.getDefaultCubic();n.setCurve(e),n.steps=8},generate:function(d,e,t,n,i){t.x+=n,t.y+=n;for(var r=e.length(),o=[{x:0,y:0,d:0}],l=1,h,u;100>=l;l++)h=l/100,u=e.split(h).left.length(),o.push({x:d.utils.map(h,0,1,0,i),y:d.utils.map(u,0,r,0,i),d:u,t:h});return o},draw:function(o,e,t){o.reset(),o.drawSkeleton(e),o.drawCurve(e);var n=e.length(),i=o.getPanelWidth(),r=o.getPanelHeight();return t.x+=i,o.drawLine({x:0,y:0},{x:0,y:r},t),o.drawAxes(20,"t",0,1,"d",0,n,t),this.generate(o,e,t,20,i-40)},plotOnly:function(a,e){a.setPanelCount(2);for(var t={x:0,y:0},n=this.draw(a,e,t),i=0;ib){v--;break}0>v&&(v=0),v===l.length&&(v=l.length-1),h.push(l[v])}for(u=0;ut.steps&&(t.steps=1)}}},setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e),n.steps=10},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e),n.steps=16},draw:function(m,e){m.reset(),m.drawSkeleton(e);for(var t=e.getLUT(m.steps),i=1/m.steps,r=e.points[0],p=i,g;p<1+i;p+=i)g=e.get(V(p,1)),m.setColor("red"),m.drawLine(r,g),r=g;for(var f=e.length(),w=0,y=0,v,b,x;y=e?1:0;r.reset(),r.setColor("transparent"),r.setFill("rgba(150,150,255, 0.4)");for(var o=p/e,u=o/2,f,w,y;u=a;a+=.01)i=(-a*a+2*a+3)/4,-10-400;a-=.01)r.push({x:e*d,y:e*m}),i=(-a*a+3*a)/3,t.drawLine({x:e*d,y:e*m},{x:e*a,y:e*i},n),d=a,m=i;r.push({x:e*d,y:e*m}),t.text("\u2190 Curve forms a loop at t = 0",{x:200-e+10,y:200-1.25*e}),t.setColor("transparent"),t.setFill("rgba(255,120,100,0.2)"),t.drawPath(r,n),r=[{x:-200,y:e},{x:200,y:e},{x:200,y:400},{x:-200,y:400}],t.setFill("rgba(0,200,0,0.2)"),t.drawPath(r,n),t.setColor("black"),t.setFill(t.getColor()),t.text("\u2190 Curve form has one inflection \u2192",{x:200-e,y:200+1.75*e}),t.text("\u2190 Plain curve \u2195",{x:200+e/2,y:400/6}),t.text("\u2195 Double inflection",{x:10,y:190}),t._map_image=t.toImage(),t._map_loaded=!0}}},function(a,e,t){"use strict";var n=t(60),i=t(0);a.exports=i("canonical",n)},function(t){"use strict";t.exports={setupCubic:function(n){var e=new n.Bezier(135,25,25,135,215,75,215,240);n.setCurve(e)},draw:function(a,e){a.reset(),a.drawSkeleton(e),a.drawCurve(e),a.setColor("red"),e.inflections().forEach(function(t){a.drawCircle(e.get(t),5)})}}},function(a,e,t){"use strict";var n=t(62),i=t(0);a.exports=i("inflections",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},align:function(o,e){var t=e.p1.x,n=e.p1.y,i=-Oe(e.p2.y-n,e.p2.x-t),r=Ve,a=Ge;return o.map(function(o){return{x:(o.x-t)*r(i)-(o.y-n)*a(i),y:(o.x-t)*a(i)+(o.y-n)*r(i),a:i}})},transpose:function(l,d,e){var t=e.x,i=e.y,r=Ve,a=Ge,n=[l.x.min,l.y.min,l.x.max,l.y.max];return[{x:n[0],y:n[1]},{x:n[2],y:n[1]},{x:n[2],y:n[3]},{x:n[0],y:n[3]}].map(function(s){var e=s.x,n=s.y;return{x:e*r(d)-n*a(d)+t,y:e*a(d)+n*r(d)+i}})},draw:function(l,e){l.reset();var t=e.points,n={p1:t[0],p2:t[t.length-1]},i=this.align(t,n),r=-i[0].a,a=new l.Bezier(i).bbox(),s=this.transpose(a,r,t[0]);l.setColor("#00FF00"),l.drawLine(s[0],s[1]),l.drawLine(s[1],s[2]),l.drawLine(s[2],s[3]),l.drawLine(s[3],s[0]),l.setColor("black"),l.drawSkeleton(e),l.drawCurve(e)}}},function(a,e,t){"use strict";var n=t(64),i=t(0);a.exports=i("tightbounds",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},align:function(o,e){var t=e.p1.x,n=e.p1.y,i=-Oe(e.p2.y-n,e.p2.x-t),r=Ve,a=Ge;return o.map(function(o){return{x:(o.x-t)*r(i)-(o.y-n)*a(i),y:(o.x-t)*a(i)+(o.y-n)*r(i)}})},draw:function(d,e){d.setPanelCount(2),d.reset(),d.drawSkeleton(e),d.drawCurve(e);var t=e.points,n={p1:t[0],p2:t[t.length-1]},i=this.align(t,n),r=new d.Bezier(i),a=d.getPanelWidth(),s=d.getPanelHeight(),o={x:a,y:0};d.setColor("black"),d.drawLine({x:0,y:0},{x:0,y:s},o),o.x+=a/4,o.y+=s/2,d.setColor("grey"),d.drawLine({x:0,y:-s/2},{x:0,y:s/2},o),d.drawLine({x:-a/4,y:0},{x:a,y:0},o),d.setFill("grey"),d.setColor("black"),d.drawSkeleton(r,o),d.drawCurve(r,o)}}},function(a,e,t){"use strict";var n=t(66),i=t(0);a.exports=i("aligning",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},draw:function(a,e){a.reset(),a.setColor("#00FF00"),a.drawbbox(e.bbox()),a.setColor("black"),a.drawSkeleton(e),a.drawCurve(e),a.setColor("red"),e.extrema().values.forEach(function(t){a.drawCircle(e.get(t),3)})}}},function(a,e,t){"use strict";var n=t(68),i=t(0);a.exports=i("boundingbox",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();e.points[2].x=210,n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},draw:function(d,e){d.setPanelCount(3),d.reset(),d.drawSkeleton(e),d.drawCurve(e);var u=e.order+1,t=e.points,n=d.getPanelWidth(),i=d.getPanelHeight(),a={x:n,y:0},r=JSON.parse(JSON.stringify(t)).map(function(a,e){return{x:n*e/u,y:a.x}});d.setColor("black"),d.drawLine({x:0,y:0},{x:0,y:i},a),d.drawAxes(20,"t",0,1,"x",0,n,a),a.x+=20;var o=new d.Bezier(r);d.drawCurve(o,a),d.setColor("red"),o.extrema().y.forEach(function(e){var t=o.get(e);d.drawCircle(t,3,a)}),a.x+=n-20;var s=JSON.parse(JSON.stringify(t)).map(function(a,e){return{x:n*e/u,y:a.y}});d.setColor("black"),d.drawLine({x:0,y:0},{x:0,y:i},a),d.drawAxes(20,"t",0,1,"y",0,n,a),a.x+=20;var l=new d.Bezier(s);d.drawCurve(l,a),d.setColor("red"),l.extrema().y.forEach(function(e){var t=l.get(e);d.drawCircle(t,3,a)})}}},function(a,e,t){"use strict";var n=t(70),i=t(0);a.exports=i("extremities",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();e.points[2].x=210,n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},draw:function(d,e){d.setPanelCount(3),d.reset(),d.drawSkeleton(e),d.drawCurve(e);var h=e.order,t=e.points,n=d.getPanelWidth(),i=n-40,a=d.getPanelHeight(),r={x:n,y:0},o=JSON.parse(JSON.stringify(t)).map(function(n,e){return{x:i*e/h,y:n.x}});d.drawLine({x:0,y:0},{x:0,y:a},r),d.drawAxes(20,"t",0,1,"x",0,n,r),r.x+=20,d.drawCurve(new d.Bezier(o),r),r.x+=n-20;var s=JSON.parse(JSON.stringify(t)).map(function(n,e){return{x:i*e/h,y:n.y}});d.drawLine({x:0,y:0},{x:0,y:a},r),d.drawAxes(20,"t",0,1,"y",0,n,r),r.x+=20,d.drawCurve(new d.Bezier(s),r)}}},function(a,e,t){"use strict";var n=t(72),i=t(0);a.exports=i("components",n)},function(t){"use strict";var d;t.exports={drawCube:function(n){var e=[{x:0,y:0,z:0},{x:200,y:0,z:0},{x:200,y:200,z:0},{x:0,y:200,z:0},{x:0,y:0,z:200},{x:200,y:0,z:200},{x:200,y:200,z:200},{x:0,y:200,z:200}].map(function(e){return function(e){return n.project(e,d)}(e)});n.setColor("grey"),n.drawLine(e[1],e[2]),n.drawLine(e[2],e[3]),n.drawLine(e[1],e[5]),n.drawLine(e[2],e[6]),n.drawLine(e[3],e[7]),n.drawLine(e[4],e[5]),n.drawLine(e[5],e[6]),n.drawLine(e[6],e[7]),n.drawLine(e[7],e[4]),n.setColor("blue"),n.drawLine(e[0],e[1]),n.setColor("red"),n.drawLine(e[3],e[0]),n.setColor("green"),n.drawLine(e[0],e[4])},drawCurve:function(a,e,t){var n=e.map(function(e){return function(e){return a.project(e,d)}(e)});t&&(a.setColor("rgba(0,0,0,0.2)"),a.drawCurve({points:e.map(function(e){return a.projectXY(e,d)})}),a.drawCurve({points:e.map(function(e){return a.projectYZ(e,d)})}),a.drawCurve({points:e.map(function(e){return a.projectXZ(e,d)})})),a.setColor("#333"),a.drawLine(n[0],n[1]),a.drawCircle(n[1],3),a.drawCircle(n[2],3),a.drawLine(n[2],n[3]),a.setColor("black"),a.drawCircle(n[0],3),a.drawCircle(n[3],3),new a.Bezier(n),a.drawCurve({points:n})},getVectors:function(l,e){var t,d,c,h,u,m;return t=l.get(e),d=l.derivative(e),u={x:(c={x:t.x+d.x,y:t.y+d.y,z:t.z+d.z}).y*t.z-c.z*t.y,y:c.z*t.x-c.x*t.z,z:c.x*t.y-c.y*t.x},h=je(u.x*u.x+u.y*u.y+u.z*u.z),{dt:t,a:d,ddt:c,r:u={x:u.x/h,y:u.y/h,z:u.z/h},R:m=[u.x*u.x,u.x*u.y-u.z,u.x*u.z+u.y,u.x*u.y+u.z,u.y*u.y,u.y*u.z-u.x,u.x*u.z-u.y,u.y*u.z+u.x,u.z*u.z],n:{x:t.x*m[0]+t.y*m[1]+t.z*m[2],y:t.x*m[3]+t.y*m[4]+t.z*m[5],z:t.x*m[6]+t.y*m[7]+t.z*m[8]}}},drawVector:function(i,e,t,h,r,a,s,o){var l=function(e){return i.project(e,d)};t=function(n){var e=je(n.x*n.x+n.y*n.y+n.z*n.z);return{x:n.x/e,y:n.y/e,z:n.z/e}}(t),t={x:e.x+h*t.x,y:e.y+h*t.y,z:e.z+h*t.z},i.setColor("rgba("+r+","+a+","+s+",1)"),i.drawLine(l(e),l(t)),o&&(i.setColor("rgba("+r+","+a+","+s+",0.2)"),i.drawLine(i.projectXY(e,d),i.projectXY(t,d)),i.drawLine(i.projectXZ(e,d),i.projectXZ(t,d)),i.drawLine(i.projectYZ(e,d),i.projectYZ(t,d)))},setup:function(t){d={x:2*t.getPanelWidth()/5,y:4*t.getPanelHeight()/5},t.setSize(1.25*t.getPanelWidth(),t.getPanelHeight())},drawVectors:function(i){i.reset(),this.drawCube(i);var e=[{x:120,y:0,z:0},{x:120,y:220,z:0},{x:30,y:0,z:30},{x:0,y:0,z:200}];this.drawCurve(i,e);var t=new i.Bezier(e),n=new i.Bezier(t.dpoints[0]),r=Ae(i.hover.x?i.hover.x/i.getPanelWidth():0,0),a=t.get(r);i.drawCircle(function(e){return i.project(e,d)}(a),3);var s=this.getVectors(n,r);this.drawVector(i,a,s.dt,40,0,200,0),this.drawVector(i,a,s.r,40,0,0,200),this.drawVector(i,a,s.n,40,200,0,0)},setupNormals:function(t){({x:2*t.getPanelWidth()/5,y:4*t.getPanelHeight()/5}),t.setSize(1.25*t.getPanelWidth(),t.getPanelHeight())},drawNormals:function(i){i.reset(),this.drawCube(i);var e=[{x:120,y:0,z:0},{x:120,y:220,z:0},{x:30,y:0,z:30},{x:0,y:0,z:200}];this.drawCurve(i,e,!0);var t=new i.Bezier(e),n=new i.Bezier(t.dpoints[0]),r=Ae(i.hover.x?i.hover.x/i.getPanelWidth():0,0),a=t.get(r);i.drawCircle(function(e){return i.project(e,d)}(a),3);var s=this.getVectors(n,r);this.drawVector(i,a,s.dt,40,0,200,0,!0),this.drawVector(i,a,s.r,40,0,0,200,!0),this.drawVector(i,a,s.n,40,200,0,0,!0)}}},function(a,e,t){"use strict";var n=t(74),i=t(0);a.exports=i("pointvectors3d",n)},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e)},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},draw:function(l,e){l.reset(),l.drawSkeleton(e);var t,d,c,h,u,m;for(t=0;10>=t;t++)d=t/10,c=e.get(d),h=e.derivative(d),m=je(h.x*h.x+h.y*h.y),h={x:h.x/m,y:h.y/m},u=e.normal(d),l.setColor("blue"),l.drawLine(c,{x:c.x+20*h.x,y:c.y+20*h.y}),l.setColor("red"),l.drawLine(c,{x:c.x+20*u.x,y:c.y+20*u.y}),l.setColor("black"),l.drawCircle(c,3)}}},function(a,e,t){"use strict";var n=t(76),i=t(0);a.exports=i("pointvectors",n)},function(a,e,t){"use strict";var n=t(0);a.exports=n("derivatives")},function(t){"use strict";var n={statics:{lower:function(a){var o=a.points,t=[],n=o.length;return o.forEach(function(i,e){if(!e)return t[e]=i;var r=e/n,a=1-r;t[e]={x:r*i.x+a*o[e-1].x,y:r*i.y+a*o[e-1].y}}),t.splice(n-1,1),t[n-2]=o[n-1],a.points=t,a},keyHandlingOptions:{values:{38:function(t){t.setCurve(t.curve.raise())},40:function(t){t.setCurve(n.lower(t.curve))}}}},getInitialState:function(){return{order:0}},setup:function(o){for(var e=[],t=o.getPanelWidth(),n=o.getPanelHeight(),i=0;10>i;i++)e.push({x:t/2+20*Math.random()+Ve(2*De*i/10)*(t/2-40),y:n/2+20*Math.random()+Ge(2*De*i/10)*(n/2-40)});var s=new o.Bezier(e);o.setCurve(s)},draw:function(o,e){o.reset();var t=e.points;this.setState({order:t.length});for(var n=t[0],l=0;1>=l;l+=.01){for(var d=JSON.parse(JSON.stringify(t));1t.steps&&(t.steps=1)}}},setupQuadratic:function(n){var e=n.getDefaultQuadratic();n.setCurve(e),n.steps=3},setupCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e),n.steps=5},drawFlattened:function(o,e){o.reset(),o.setColor("#DDD"),o.drawSkeleton(e),o.setColor("#DDD"),o.drawCurve(e);for(var t=1/o.steps,i=e.points[0],s=t,l;s<1+t;s+=t)l=e.get(V(s,1)),o.setColor("red"),o.drawLine(i,l),i=l;o.setFill("black"),o.text("Curve approximation using "+o.steps+" segments",{x:10,y:15})},values:{38:1,40:-1},onKeyDown:function(a,e){var t=this.values[a.keyCode];t&&(a.preventDefault(),e.steps+=t,1>e.steps&&(e.steps=1))}}},function(o,e,t){"use strict";var n=t(84),i=t(0),r=t(3);o.exports=r(i("flattening",n))},function(t){"use strict";t.exports={setup:function(t){t.setCurve(new t.Bezier([{x:90,y:110},{x:25,y:40},{x:230,y:40},{x:150,y:240}]))},draw:function(l,e){if(l.reset(),l.drawSkeleton(e),l.drawCurve(e),l.hover){l.setColor("rgb(200,100,100)");for(var t=l.getPanelWidth(),n=l.hover.x/t,d=l.drawHull(e,n),r=4;8>=r;r++)l.drawCircle(d[r],3);var c=e.get(n);l.drawCircle(c,5),l.setFill("black"),l.drawCircle(c,3);var s=0|100*n;n=s/100,l.text("Sequential interpolation for "+s+"% (t="+n+")",{x:10,y:15})}}}},function(a,e,t){"use strict";var n=t(86),i=t(0);a.exports=i("decasteljau",n)},function(a,e,t){"use strict";var n=t(0);a.exports=n("matrix")},function(t){"use strict";t.exports={setupQuadratic:function(n){var e=new n.Bezier(70,155,20,110,100,75);n.setCurve(e)},setupCubic:function(n){var e=new n.Bezier(60,105,75,30,215,115,140,160);n.setCurve(e)},draw:function(a,e){a.reset(),a.drawSkeleton(e),a.drawCurve(e),a.setColor("lightgrey");var t=e.get(-10.05),o,s;for(o=-10;.05>=o;o+=.05)s=e.get(o),a.drawLine(t,s),t=s;for(t=e.get(1),o=1.05;10>=o;o+=.05)s=e.get(o),a.drawLine(t,s),t=s}}},function(a,e,t){"use strict";var n=t(89),i=t(0);a.exports=i("extended",n)},function(t){"use strict";t.exports={drawCubic:function(n){var e=n.getDefaultCubic();n.setCurve(e)},drawCurve:function(n,e){n.reset(),n.drawSkeleton(e),n.drawCurve(e)},drawFunction:function(a,e,t,n){a.setRandomColor(),a.drawFunction(n),a.setFill(a.getColor()),e&&a.text(e,t)},drawLerpBox:function(o,e,t,n){o.noColor(),o.setFill("rgba(0,0,100,0.2)");var i={x:n.x-5,y:t},r={x:n.x+5,y:e};o.drawRect(i,r),o.setColor("black")},drawLerpPoint:function(a,e,t,n,i){i.y=t+e*n,a.drawCircle(i,3),a.setFill("black"),a.text((0|1e4*e)/100+"%",{x:i.x+10,y:i.y+4}),a.noFill()},drawQuadraticLerp:function(a){a.reset();var e=a.getPanelWidth(),t=e-40;a.drawAxes(20,"t",0,1,"S","0%","100%");var n=a.hover;if(n&&20<=n.x&&n.x<=e-20){this.drawLerpBox(a,e,20,n);var i=(n.x-20)/t;this.drawLerpPoint(a,(1-i)*(1-i),20,t,n),this.drawLerpPoint(a,2*(1-i)*i,20,t,n),this.drawLerpPoint(a,i*i,20,t,n)}this.drawFunction(a,"first term",{x:40,y:t},function(n){return{x:20+n*t,y:20+t*(1-n)*(1-n)}}),this.drawFunction(a,"second term",{x:e/2-30,y:e/2+20},function(n){return{x:20+n*t,y:20+2*t*(1-n)*n}}),this.drawFunction(a,"third term",{x:t-50,y:t},function(n){return{x:20+n*t,y:20+t*n*n}})},drawCubicLerp:function(a){a.reset();var e=a.getPanelWidth(),t=e-40;a.drawAxes(20,"t",0,1,"S","0%","100%");var n=a.hover;if(n&&20<=n.x&&n.x<=e-20){this.drawLerpBox(a,e,20,n);var i=(n.x-20)/t;this.drawLerpPoint(a,(1-i)*(1-i)*(1-i),20,t,n),this.drawLerpPoint(a,3*(1-i)*(1-i)*i,20,t,n),this.drawLerpPoint(a,3*(1-i)*i*i,20,t,n),this.drawLerpPoint(a,i*i*i,20,t,n)}this.drawFunction(a,"first term",{x:40,y:t},function(n){return{x:20+n*t,y:20+t*(1-n)*(1-n)*(1-n)}}),this.drawFunction(a,"second term",{x:e/2-80,y:e/2},function(n){return{x:20+n*t,y:20+3*t*(1-n)*(1-n)*n}}),this.drawFunction(a,"third term",{x:e/2+40,y:e/2},function(n){return{x:20+n*t,y:20+3*t*(1-n)*n*n}}),this.drawFunction(a,"fourth term",{x:t-50,y:t},function(n){return{x:20+n*t,y:20+t*n*n*n}})},draw15thLerp:function(d){d.reset();var e=d.getPanelWidth(),t=e-40;d.drawAxes(20,"t",0,1,"S","0%","100%");var n=[1,15,105,455,1365,3003,5005,6435,6435,5005,3003,1365,455,105,15,1],r=d.hover,a;if(r&&20<=r.x&&r.x<=e-20)for(this.drawLerpBox(d,e,20,r),a=0;15>=a;a++){var h=(r.x-20)/t,s=n[a]*qe(1-h,15-a)*qe(h,a);this.drawLerpPoint(d,s,20,t,r)}for(a=0;15>=a;a++){var o=!1,u=!1;0===a&&(o="first term",u={x:25,y:t}),15===a&&(o="last term",u={x:e-70,y:t}),this.drawFunction(d,o,u,function(i){return{x:20+i*t,y:20+t*n[a]*qe(1-i,15-a)*qe(i,a)}})}}}},function(a,e,t){"use strict";var n=t(91),i=t(0);a.exports=i("control",n)},function(t){t.exports=function(){}},function(t){"use strict";t.exports={statics:{keyHandlingOptions:{propName:"step",values:{38:.1,40:-.1},controller:function(t){.1>t.step&&(t.step=.1)}}},setup:function(t){t.step=5},draw:function(t){var e=t.getPanelWidth(),n=e,i=e,r=n/2,a=i/2,s=r/2,o=a/2;t.reset(),t.setColor("black"),t.drawLine({x:0,y:a},{x:n,y:a}),t.drawLine({x:r,y:0},{x:r,y:i});for(var l={x:r,y:a},h=0,m;h<=t.step;h+=.1){m={x:s*Ve(h),y:o*Ge(h)},t.drawPoint(m,l);var p=h%1;(.05>p||.95v;v++)x=v/20,_=e.get(x),p.drawCircle(_,2,g);for(b=3*p.step;0=n)return null;return o.createElement("div",{key:"knot"+r},0,o.createElement("input",{type:"range",min:0,max:e,step:1,value:t,onChange:function(e){var t=a.state.weights;t[r]=e.target.value,l&&ry)throw new Error("degree must be at least 1 (linear)");if(y>s-1)throw new Error("degree must be less than or equal to point count - 1");if(!b)for(b=[],d=0;dm)throw new Error("out of bounds");for(C=S[0];C=n[C]&&w<=n[C+1]);C++);var p=[],v;for(d=0;dC-y-1+k;d--)for(v=(w-n[d])/(n[d+y+1-k]-n[d]),E=0;Et.deltaY?1:-1)},componentDidMount:function(){var t=this.cvs=this.refs.sketch;t.addEventListener("keydown",this.keydownlisten),t.addEventListener("keyup",this.keyuplisten),t.addEventListener("keypress",this.keypresslisten),t.addEventListener("mousedown",this.mousedownlisten),t.addEventListener("mouseup",this.mouseuplisten),t.addEventListener("mousemove",this.mousemovelisten),this.props.scrolling&&t.addEventListener("wheel",this.wheellissten),this.setup()},componentWillUnmount:function(){var t=this.cvs=this.refs.sketch;t.removeEventListener("keydown",this.keydownlisten),t.removeEventListener("keyup",this.keyuplisten),t.removeEventListener("keypress",this.keypresslisten),t.removeEventListener("mousedown",this.mousedownlisten),t.removeEventListener("mouseup",this.mouseuplisten),t.removeEventListener("mousemove",this.mousemovelisten),this.props.scrolling&&t.removeEventListener("wheel",this.wheellissten)},drawCurve:function(r){r=r||this.points;var o=this.ctx,t=0l;l+=.01)n=s(l,this.degree,r,this.knots,t),o.lineTo(n[0],n[1]);n=s(1,this.degree,r,this.knots,t),o.lineTo(n[0],n[1]),o.stroke(),o.closePath()},drawKnots:function(r){var e=this,t=this.knots,n=0t.length-1-e.degree)){var l=s(i,e.degree,r,t,n,!1,!0);e.circle(l[0],l[1],3)}})},drawNodes:function(r){var e=this,n;this.stroke(150),this.nodes.forEach(function(t,i){try{n=s(t,e.degree,r,e.knots,!1,!1,!0),e.line(n[0],n[1],r[i][0],r[i++][1])}catch(t){console.error(t)}})},formKnots:function(o,e){if(!(e=!0===e))return this.formUniformKnots(o);var s=o.length,i=[],l=s-this.degree,a;for(a=1;at[e[1]]||a.push(o)}return a},formWeights:function(n){var e=[];return n.forEach(function(){return e.push(1)}),e},setDegree:function(t){this.degree+=t,this.knots=this.formKnots(this.points),this.nodes=this.formNodes(this.knots,this.points)},near:function(a,e,t){var n=a.x-e,i=a.y-t;return je(n*n+i*i)e&&(this.weights[e]+=.1*n,0>this.weights[e]&&(this.weights[e]=0)),-1!==(e=this.points.indexOf(this.cp,e+1))&&this.weights.length>e&&(this.weights[e]+=.1*n,0>this.weights[e]&&(this.weights[e]=0)),this.redraw()}},setKeyboardValues:function(t){t.ctrlKey||t.metaKey||t.altKey||t.preventDefault(),this.key=t.key,this.keyCode=t.code},setMouseValues:function(n){var e=this.cvs.getBoundingClientRect();this.mouseX=n.clientX-e.left,this.mouseY=n.clientY-e.top},size:function(n,e){this.width=0|n,this.height=0|(e||n),this.cvs.width=this.width,this.cvs.height=this.height,this.ctx=this.cvs.getContext("2d")},redraw:function(){this.draw()},clear:function(){this.ctx.clearRect(0,0,this.width,this.height)},grid:function(a){a=.5+(0|(a||10)),this.stroke(200,200,220);for(var i=a;ie--||setTimeout(a,200))}(),t.disconnect()});t.observe(div,{childList:!0,subtree:!0}),comments=document.getElementById("comments"),comments.scrollIntoView()}else r()}}},function(a,e,r){!function(){"use strict";var o=r(7),n=function(t){this.curves=[],this._3d=!1,t&&(this.curves=t,this._3d=this.curves[0]._3d)};n.prototype={valueOf:function(){return this.toString()},toString:function(){return"["+this.curves.map(function(t){return o.pointsToString(t.points)}).join(", ")+"]"},addCurve:function(t){this.curves.push(t),this._3d=this._3d||t._3d},length:function(){return this.curves.map(function(t){return t.length()}).reduce(function(n,e){return n+e})},curve:function(t){return this.curves[t]},bbox:function(){for(var t=this.curves,e=t[0].bbox(),n=1;nr&&(a=r),a},pn=function(t){return 3<=t.length?Array.prototype.slice.call(t):t[0]},ht=function(a){var e,i;for(a._clipped=!1,a._unclipped=a.slice(0),e=i=0;3>i;e=++i)3>e?((0>a[e]||255a[e]&&(a[e]=0),255a[e]&&(a[e]=0),1=t?12.92*t:1.055*Xt(t,1/2.4)-.055)},It=function(t){return t>Ue.t1?t*t*t:Ue.t2*(t-Ue.t0)},Ue={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},$t=function(){var o,l,d,c,h,u,m;return d=(c=pn(arguments))[0],l=c[1],o=c[2],u=(h=rn(d,l,o))[0],[116*(m=h[1])-16,500*(u-m),200*(m-h[2])]},on=function(t){return .04045>=(t/=255)?t/12.92:Xt((t+.055)/1.055,2.4)},fn=function(t){return t>Ue.t3?Xt(t,1/3):t/Ue.t2+Ue.t0},rn=function(){var a,r,o,s;return o=(s=pn(arguments))[0],r=s[1],a=s[2],o=on(o),r=on(r),a=on(a),[fn((.4124564*o+.3575761*r+.1804375*a)/Ue.Xn),fn((.2126729*o+.7151522*r+.072175*a)/Ue.Yn),fn((.0193339*o+.119192*r+.9503041*a)/Ue.Zn)]},ct.lab=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["lab"]),function(){})},tt.lab=Nt,Ne.prototype.lab=function(){return $t(this._rgb)},rt=function(d){var m,p,g,f,w,y,v,b,x,_,E;return 2===(d=function(){var e,a,r;for(r=[],a=0,e=d.length;a=t;e=++t)r.push(w[e]+a*(y[e]-w[e]));return r}(),ct.lab.apply(ct,i)}):3===d.length?(_=function(){var e,a,r;for(r=[],a=0,e=d.length;a=t;e=++t)r.push((1-a)*(1-a)*w[e]+2*(1-a)*a*y[e]+a*a*v[e]);return r}(),ct.lab.apply(ct,i)}):4===d.length?(E=function(){var e,a,r;for(r=[],a=0,e=d.length;a=t;e=++t)r.push((1-a)*(1-a)*(1-a)*w[e]+3*(1-a)*(1-a)*a*y[e]+3*(1-a)*a*a*v[e]+a*a*a*b[e]);return r}(),ct.lab.apply(ct,i)}):5===d.length&&(p=rt(d.slice(0,3)),g=rt(d.slice(2,5)),m=function(t){return .5>t?p(2*t):g(2*(t-.5))}),m},ct.bezier=function(n){var e;return(e=rt(n)).scale=function(){return ct.scale(e)},e},ct.cubehelix=function(c,m,p,g,w){var y,v,l;return null==c&&(c=300),null==m&&(m=-1.5),null==p&&(p=1),null==g&&(g=1),null==w&&(w=[0,1]),y=0,"array"===mn(w)?v=w[1]-w[0]:(v=0,w=[w,w]),(l=function(e){var t,n,a,i,r;return t=Ze*((c+120)/360+m*e),i=Xt(w[0]+v*e,g),n=(0===y?p:p[0]+e*y)*i*(1-i)/2,a=mt(t),r=cn(t),ct(ht([255*(i+n*(-.14861*a+1.78277*r)),255*(i+n*(-.29227*a-.90649*r)),255*(i+n*(1.97294*a))]))}).start=function(e){return null==e?c:(c=e,l)},l.rotations=function(t){return null==t?m:(m=t,l)},l.gamma=function(t){return null==t?g:(g=t,l)},l.hue=function(t){return null==t?p:("array"===mn(p=t)?0==(y=p[1]-p[0])&&(p=p[1]):y=0,l)},l.lightness=function(t){return null==t?w:("array"===mn(t)?(w=t,v=t[1]-t[0]):(w=[t,t],v=0),l)},l.scale=function(){return ct.scale(l)},l.hue(p),l},ct.random=function(){var n,a;for("0123456789abcdef",n="#",a=0;6>a;++a)n+="0123456789abcdef".charAt(yt(16*Math.random()));return new Ne(n)},nt=[],ct.interpolate=kt=function(l,d,c,h){var u,m,p,g;for(null==c&&(c=.5),null==h&&(h="rgb"),"object"!==mn(l)&&(l=ct(l)),"object"!==mn(d)&&(d=ct(d)),p=0,m=nt.length;p=e[3]?"rgb":void 0}}),tt.lrgb=tt.rgb,Tt=function(i,e,t,n){var r,o;return r=i._rgb,o=e._rgb,new Ne(hn(Xt(r[0],2)*(1-t)+Xt(o[0],2)*t),hn(Xt(r[1],2)*(1-t)+Xt(o[1],2)*t),hn(Xt(r[2],2)*(1-t)+Xt(o[2],2)*t),n)},Je=function(i){var e,o,l,d,c;for(e=1/i.length,c=[0,0,0,0],l=0,o=i.length;lg;)g+=360;for(;360<=g;)g-=360;T[C]=g}else T[C]/=b[C];return ct(T,h).alpha(w/k)},bt=function(a){var i,r;if(a.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/))return 4!==a.length&&7!==a.length||(a=a.substr(1)),3===a.length&&(a=(a=a.split(""))[0]+a[0]+a[1]+a[1]+a[2]+a[2]),[(r=parseInt(a,16))>>16,255&r>>8,255&r,1];if(a.match(/^#?([A-Fa-f0-9]{8})$/))return 9===a.length&&(a=a.substr(1)),[255&(r=parseInt(a,16))>>24,255&r>>16,255&r>>8,ln(100*((255&r)/255))/100];if(null!=tt.css&&(i=tt.css(a)))return i;throw"unknown color: "+a},Kt=function(l,e){var d,c,h,u,m,p;return null==e&&(e="rgb"),m=l[0],h=l[1],c=l[2],d=l[3],m=Ie(m),h=Ie(h),c=Ie(c),p=(p="000000"+(m<<16|h<<8|c).toString(16)).substr(p.length-6),u=(u="0"+ln(255*d).toString(16)).substr(u.length-2),"#"+function(){switch(e.toLowerCase()){case"rgba":return p+u;case"argb":return u+p;default:return p;}}()},tt.hex=function(t){return bt(t)},ct.hex=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["hex"]),function(){})},Ne.prototype.hex=function(t){return null==t&&(t="rgb"),Kt(this._rgb,t)},$e.push({p:4,test:function(t){if(1===arguments.length&&"string"===mn(t))return"hex"}}),Et=function(){var m,p,g,w,y,v,b,x,_,E,C,k,S,z;if(y=(m=pn(arguments))[0],C=m[1],b=m[2],0===C)_=w=p=255*b;else{for(z=[0,0,0],g=[0,0,0],k=2*b-(S=.5>b?b*(1+C):b+C-b*C),y/=360,z[0]=y+1/3,z[1]=y,z[2]=y-1/3,v=x=0;2>=x;v=++x)0>z[v]&&(z[v]+=1),16*z[v]?k+6*(S-k)*z[v]:1>2*z[v]?S:2>3*z[v]?k+6*((S-k)*(2/3-z[v])):k;_=(E=[ln(255*g[0]),ln(255*g[1]),ln(255*g[2])])[0],w=E[1],p=E[2]}return 3u?(Mt-m)/(Mt+m):(Mt-m)/(2-Mt-m),l===Mt?h=(d-c)/(Mt-m):d===Mt?h=2+(c-l)/(Mt-m):c===Mt&&(h=4+(l-d)/(Mt-m)),0>(h*=60)&&(h+=360),[h,g,u]},ct.hsl=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["hsl"]),function(){})},tt.hsl=Et,Ne.prototype.hsl=function(){return Zt(this._rgb)},Ct=function(){var w,y,b,x,_,E,C,k,S,z,T,B,P,L,N,I,A,D;if(_=(w=pn(arguments))[0],I=w[1],D=w[2],D*=255,0===I)S=x=y=D;else switch(360===_&&(_=0),360<_&&(_-=360),0>_&&(_+=360),C=D*(1-I),k=D*(1-I*(b=(_/=60)-(E=yt(_)))),A=D*(1-I*(1-b)),E){case 0:S=(z=[D,A,C])[0],x=z[1],y=z[2];break;case 1:S=(T=[k,D,C])[0],x=T[1],y=T[2];break;case 2:S=(B=[C,D,A])[0],x=B[1],y=B[2];break;case 3:S=(P=[C,k,D])[0],x=P[1],y=P[2];break;case 4:S=(L=[A,C,D])[0],x=L[1],y=L[2];break;case 5:S=(N=[D,C,k])[0],x=N[1],y=N[2];}return[S,x,y,3(u*=60)&&(u+=360)),[u,f,w]},ct.hsv=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["hsv"]),function(){})},tt.hsv=Ct,Ne.prototype.hsv=function(){return Jt(this._rgb)},Wt=function(t){return"number"===mn(t)&&0<=t&&16777215>=t?[t>>16,255&t>>8,255&t,1]:(console.warn("unknown num color: "+t),[0,0,0,1])},nn=function(){var t;return((t=pn(arguments))[0]<<16)+(t[1]<<8)+t[2]},ct.num=function(t){return new Ne(t,"num")},Ne.prototype.num=function(t){return null==t&&(t="rgb"),nn(this._rgb,t)},tt.num=Wt,$e.push({p:1,test:function(t){if(1===arguments.length&&"number"===mn(t)&&0<=t&&16777215>=t)return"num"}}),vt=function(){var b,x,_,E,C,k,S,z,T,B,P,L,N,I,A,D,q,j,O,G;if(z=(_=pn(arguments))[0],C=_[1],x=_[2],S=255*(S/100),b=255*(C/=100),0===C)L=S=E=x;else switch(360===z&&(z=0),360z&&(z+=360),P=(B=x*(1-C))+b*(1-(k=(z/=60)-(T=yt(z)))),O=B+b*k,G=B+b,T){case 0:L=(N=[G,O,B])[0],S=N[1],E=N[2];break;case 1:L=(I=[P,G,B])[0],S=I[1],E=I[2];break;case 2:L=(A=[B,G,O])[0],S=A[1],E=A[2];break;case 3:L=(D=[B,P,G])[0],S=D[1],E=D[2];break;case 4:L=(q=[O,B,G])[0],S=q[1],E=q[2];break;case 5:L=(j=[G,B,P])[0],S=j[1],E=j[2];}return[L,S,E,3<_.length?_[3]:1]},Qt=function(){var d,c,h,u,m,p,g,f,w;return f=(w=pn(arguments))[0],m=w[1],c=w[2],g=V(f,m,c),h=100*(u=(Mt=Ae(f,m,c))-g)/255,d=100*(g/(255-u)),0===u?p=Xe:(f===Mt&&(p=(m-c)/u),m===Mt&&(p=2+(c-f)/u),c===Mt&&(p=4+(f-m)/u),0>(p*=60)&&(p+=360)),[p,h,d]},ct.hcg=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["hcg"]),function(){})},tt.hcg=vt,Ne.prototype.hcg=function(){return Qt(this._rgb)},pt=function(d){var c,h,u,m,p,g,f,w;if(d=d.toLowerCase(),null!=ct.colors&&ct.colors[d])return bt(ct.colors[d]);if(p=d.match(/rgb\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*\)/)){for(f=p.slice(1,4),m=g=0;2>=g;m=++g)f[m]=+f[m];f[3]=1}else if(p=d.match(/rgba\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*,\s*([01]|[01]?\.\d+)\)/))for(f=p.slice(1,5),m=w=0;3>=w;m=++w)f[m]=+f[m];else if(p=d.match(/rgb\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/)){for(f=p.slice(1,4),m=c=0;2>=c;m=++c)f[m]=ln(2.55*f[m]);f[3]=1}else if(p=d.match(/rgba\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/)){for(f=p.slice(1,5),m=h=0;2>=h;m=++h)f[m]=ln(2.55*f[m]);f[3]=+f[3]}else(p=d.match(/hsl\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/))?((u=p.slice(1,4))[1]*=.01,u[2]*=.01,(f=Et(u))[3]=1):(p=d.match(/hsla\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/))&&((u=p.slice(1,4))[1]*=.01,u[2]*=.01,(f=Et(u))[3]=+p[4]);return f},Ut=function(n){var e;return"rgb"==(e=1>n[3]?"rgba":"rgb")?e+"("+n.slice(0,3).map(ln).join(",")+")":"rgba"===e?e+"("+n.slice(0,3).map(ln).join(",")+","+n[3]+")":void 0},sn=function(t){return ln(100*t)/100},_t=function(a,e){var t;return t=1>e?"hsla":"hsl",a[0]=sn(a[0]||0),a[1]=sn(100*a[1])+"%",a[2]=sn(100*a[2])+"%","hsla"===t&&(a[3]=e),t+"("+a.join(",")+")"},tt.css=function(t){return pt(t)},ct.css=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["css"]),function(){})},Ne.prototype.css=function(t){return null==t&&(t="rgb"),"rgb"===t.slice(0,3)?Ut(this._rgb):"hsl"===t.slice(0,3)?_t(this.hsl(),this.alpha()):void 0},tt.named=function(t){return bt(gn[t])},$e.push({p:5,test:function(t){if(1===arguments.length&&null!=gn[t])return"named"}}),Ne.prototype.name=function(a){var e,i;for(i in arguments.length&&(gn[a]&&(this._rgb=bt(gn[a])),this._rgb[3]=1),e=this.hex(),gn)if(e===gn[i])return i;return e},At=function(){var a,r,o,s;return o=(s=pn(arguments))[0],a=s[1],r=s[2],[o,mt(r*=He)*a,cn(r)*a]},Dt=function(){var d,c,h,u,m,p,g,f,w;return g=(h=pn(arguments))[0],m=h[1],p=h[2],d=(f=At(g,m,p))[0],c=f[1],u=f[2],[(w=Nt(d,c,u))[0],w[1],u=w[2],3h?1/(1-h):0),(1-c-h)*d,(1-l-h)*d,h]},ut=function(){var o,s,l,d,c,h;return l=(s=pn(arguments))[0],c=s[1],h=s[2],d=s[3],o=4=s;a=++s)l[a]*=255;return l},ct.gl=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["gl"]),function(){})},Ne.prototype.gl=function(){var t;return[(t=this._rgb)[0]/255,t[1]/255,t[2]/255,t[3]]},tn=function(a,r,o){var s;return a=(s=pn(arguments))[0],r=s[1],o=s[2],.2126*(a=Gt(a))+.7152*(r=Gt(r))+.0722*(o=Gt(o))},Gt=function(t){return .03928>=(t/=255)?t/12.92:Xt((t+.055)/1.055,2.4)},Pt=function(i,e,t,n){var r,o;return r=i._rgb,o=e._rgb,new Ne(r[0]+t*(o[0]-r[0]),r[1]+t*(o[1]-r[1]),r[2]+t*(o[2]-r[2]),n)},nt.push(["rgb",Pt]),Ne.prototype.luminance=function(d,e){var o,c,h,l,u;return null==e&&(e="rgb"),arguments.length?(l=this._rgb,0===d?l=[0,0,0,this._rgb[3]]:1===d?l=[255,255,255,this[3]]:(o=tn(this._rgb),c=1e-7,h=20,u=function(t,n){var a,i;return a=(i=t.interpolate(n,.5,e)).luminance(),Me(d-a)d?u(t,i):u(i,n)},l=o>d?u(ct("black"),this).rgba():u(this,ct("white")).rgba()),ct(l).alpha(this.alpha())):tn(this._rgb)},un=function(a){var e,o,s,l;return 66>(l=a/100)?(s=255,o=-155.25485562709179-.44596950469579133*(o=l-2)+104.49216199393888*Ot(o),e=20>l?0:.8274096064007395*(e=l-10)-254.76935184120902+115.67994401066147*Ot(e)):(s=351.97690566805693+.114206453784165*(s=l-55)-40.25366309332127*Ot(s),o=325.4494125711974+.07943456536662342*(o=l-50)-28.0852963507957*Ot(o),e=255),[s,o,e]},an=function(){var o,l,d,c,h,u,m;for(c=(h=pn(arguments))[0],h[1],o=h[2],d=1e3,l=4e4,.4;.4=o/c?l=m:d=m;return ln(m)},ct.temperature=ct.kelvin=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["temperature"]),function(){})},tt.temperature=tt.kelvin=tt.K=un,Ne.prototype.temperature=function(){return an(this._rgb)},Ne.prototype.kelvin=Ne.prototype.temperature,ct.contrast=function(i,o){var l,d,c,h;return"string"!==(c=mn(i))&&"number"!==c||(i=new Ne(i)),"string"!==(h=mn(o))&&"number"!==h||(o=new Ne(o)),(l=i.luminance())>(d=o.luminance())?(l+.05)/(d+.05):(d+.05)/(l+.05)},ct.distance=function(i,d,u){var m,p,g,f,w,y,v;for(p in null==u&&(u="lab"),"string"!==(w=mn(i))&&"number"!==w||(i=new Ne(i)),"string"!==(y=mn(d))&&"number"!==y||(d=new Ne(d)),g=i.get(u),f=d.get(u),v=0,g)v+=(m=(g[p]||0)-(f[p]||0))*m;return je(v)},ct.deltaE=function(i,s,p,g){var k,I,A,D,q,j,O,G,V,M,F,W,R,X,H,U,Q,K,Y,Z,J,$,ee,te;for(null==p&&(p=1),null==g&&(g=1),"string"!==(H=mn(i))&&"number"!==H||(i=new Ne(i)),"string"!==(U=mn(s))&&"number"!==U||(s=new Ne(s)),k=(Q=i.lab())[0],A=Q[1],q=Q[2],I=(K=s.lab())[0],D=K[1],j=K[2],O=hn(A*A+q*q),G=hn(D*D+j*j),Z=16>k?.511:.040975*k/(1+.01765*k),Y=.0638*O/(1+.0131*O)+.638,X=1e-6>O?0:180*it(q,A)/Qe;0>X;)X+=360;for(;360<=X;)X-=360;return J=164<=X&&345>=X?.56+at(.2*mt(Qe*(X+168)/180)):.36+at(.4*mt(Qe*(X+35)/180)),R=hn((V=O*O*O*O)/(V+1900)),hn(($=(k-I)/(p*Z))*$+(ee=(W=O-G)/(g*Y))*ee+((M=A-D)*M+(F=q-j)*F-W*W)/((te=Y*(R*J+1-R))*te))},Ne.prototype.get=function(o){var e,s,l,d,c;return this,l=(d=o.split("."))[0],e=d[1],c=this[l](),e?-1<(s=l.indexOf(e))?c[s]:console.warn("unknown channel "+e+" in mode "+l):c},Ne.prototype.set=function(o,e){var t,l,d,c,h;if(!(this,d=(c=o.split("."))[0],t=c[1]))h=e;else if(!(h=this[d](),-1<(l=d.indexOf(t))))console.warn("unknown channel "+t+" in mode "+d);else if("string"===mn(e))switch(e.charAt(0)){case"+":case"-":h[l]+=+e;break;case"*":h[l]*=+e.substr(1);break;case"/":h[l]/=+e.substr(1);break;default:h[l]=+e;}else h[l]=e;return ct(h,d).alpha(this.alpha())},Ne.prototype.clipped=function(){return this._rgb._clipped||!1},Ne.prototype.alpha=function(t){return arguments.length?ct.rgb([this._rgb[0],this._rgb[1],this._rgb[2],t]):this._rgb[3]},Ne.prototype.darken=function(n){var a;return null==n&&(n=1),this,(a=this.lab())[0]-=Ue.Kn*n,ct.lab(a).alpha(this.alpha())},Ne.prototype.brighten=function(t){return null==t&&(t=1),this.darken(-t)},Ne.prototype.darker=Ne.prototype.darken,Ne.prototype.brighter=Ne.prototype.brighten,Ne.prototype.saturate=function(n){var a;return null==n&&(n=1),this,(a=this.lch())[1]+=n*Ue.Kn,0>a[1]&&(a[1]=0),ct.lch(a).alpha(this.alpha())},Ne.prototype.desaturate=function(t){return null==t&&(t=1),this.saturate(-t)},Ne.prototype.premultiply=function(){var n,a;return a=this.rgb(),n=this.alpha(),ct(a[0]*n,a[1]*n,a[2]*n,n)},Ft=function(n,e){return n*e/255},gt=function(n,e){return n>e?e:n},qt=function(n,e){return n>e?n:e},dn=function(n,e){return 255*(1-(1-n/255)*(1-e/255))},Rt=function(n,e){return 128>e?2*n*e/255:255*(1-2*(1-n/255)*(1-e/255))},dt=function(n,e){return 255*(1-(1-e/255)/(n/255))},ft=function(n,a){return 255===n?255:255<(n=255*(a/255)/(1-n/255))?255:n},(ot=function(a,e,t){if(!ot[t])throw"unknown blend mode "+t;return ot[t](a,e)}).normal=(st=function(a){return function(e,t){var n,o;return n=ct(t).rgb(),o=ct(e).rgb(),ct(a(n,o),"rgb")}})((wt=function(o){return function(e,t){var n,s,l;for(l=[],n=s=0;3>=s;n=++s)l[n]=o(e[n],t[n]);return l}})(function(t){return t})),ot.multiply=st(wt(Ft)),ot.screen=st(wt(dn)),ot.overlay=st(wt(Rt)),ot.darken=st(wt(gt)),ot.lighten=st(wt(qt)),ot.dodge=st(wt(ft)),ot.burn=st(wt(dt)),ct.blend=ot,ct.analyze=function(a){var e,o,s,l;for(s={min:Re,max:-1*Re,sum:0,values:[],count:0},o=0,e=a.length;os.max&&(s.max=l),s.count+=1);return s.domain=[s.min,s.max],s.limits=function(n,e){return ct.limits(s,n,e)},s},ct.scale=function(t){var _,C,k,S,z,T,B,P,L,N,I,A,D,q,j,O,G,M,F,W,R;return L="rgb",N=ct("#ccc"),q=0,!1,z=[0,1],D=[],A=[0,0],_=!1,k=[],I=!1,P=0,B=1,S=!1,C={},j=!0,T=1,W=function(r){var l,d,c,h,u,m;if(null==r&&(r=["#fff","#000"]),null!=r&&"string"===mn(r)&&null!=ct.brewer&&(r=ct.brewer[r]||ct.brewer[r.toLowerCase()]||r),"array"===mn(r)){for(l=c=0,h=(r=r.slice(0)).length-1;0<=h?c<=h:c>=h;l=0<=h?++c:--c)d=r[l],"string"===mn(d)&&(r[l]=ct(d));for(D.length=0,l=m=0,u=r.length-1;0<=u?m<=u:m>=u;l=0<=u?++m:--m)D.push(l/(r.length-1))}return F(),k=r},G=function(n){var e,a;if(null!=_){for(a=_.length-1,e=0;e=_[e];)e++;return e-1}return 0},R=function(t){return t},function(n){var e,o,l,d,c;return c=n,2<_.length&&(d=_.length-1,e=G(n),l=_[0]+(_[1]-_[0])*(0+.5*q),o=_[d-1]+(_[d]-_[d-1])*(1-.5*q),c=P+(_[e]+.5*(_[e+1]-_[e])-l)/(o-l)*(B-P)),c},M=function(n,e){var i,r,o,l,c,h,u;if(null==e&&(e=!1),isNaN(n))return N;if(u=e?n:_&&2<_.length?G(n)/(_.length-2):B===P?1:(n-P)/(B-P),e||(u=R(u)),1!==T&&(u=Xt(u,T)),u=A[0]+u*(1-A[0]-A[1]),u=V(1,Ae(0,u)),o=Le(1e4*u),j&&C[o])i=C[o];else{if("array"===mn(k))for(r=l=0,h=D.length-1;0<=h?l<=h:l>=h;r=0<=h?++l:--l){if(u<=(c=D[r])){i=k[r];break}if(u>=c&&r===D.length-1){i=k[r];break}if(u>c&&u=m;e=0<=m?++p:--p)D.push(e/(l-1));return z=[P,B],O},O.mode=function(t){return arguments.length?(L=t,F(),O):L},O.range=function(t){return W(t),O},O.out=function(t){return I=t,O},O.spread=function(t){return arguments.length?(q=t,O):q},O.correctLightness=function(t){return null==t&&(t=!0),S=t,F(),R=S?function(d){var h,u,m,p,g,f,w,y,v;for(h=M(0,!0).lab()[0],u=M(1,!0).lab()[0],w=h>u,m=M(d,!0).lab()[0],p=m-(g=h+(u-h)*d),y=0,v=1,f=20;.01p?(y=d,d+=.5*(v-d)):(v=d,d+=.5*(y-d)),m=M(d,!0).lab()[0],p=m-g;return d}:function(t){return t},O},O.padding=function(t){return null==t?A:("number"===mn(t)&&(t=[t,t]),A=t,O)},O.colors=function(n,r){var s,m,e,p,g,w,y,v;if(2>arguments.length&&(r="hex"),g=[],0===arguments.length)g=k.slice(0);else if(1===n)g=[O(.5)];else if(1n;0<=n?t++:t--)w.push(t);return w}.apply(this).map(function(t){return O(m+t/(n-1)*s)});else{if(t=[],y=[],_&&2<_.length)for(e=v=1,p=_.length;1<=p?vp;e=1<=p?++v:--v)y.push(.5*(_[e-1]+_[e]));else y=z;g=y.map(function(t){return O(t)})}return ct[r]&&(g=g.map(function(t){return t[r]()})),g},O.cache=function(t){return null==t?j:(j=t,O)},O.gamma=function(t){return null==t?T:(T=t,O)},O},null==ct.scales&&(ct.scales={}),ct.scales.cool=function(){return ct.scale([ct.hsl(180,1,.9),ct.hsl(250,.7,.4)])},ct.scales.hot=function(){return ct.scale(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")},ct.analyze=function(d,c,t){var h,e,u,m,p,g;if(p={min:Re,max:-1*Re,sum:0,values:[],count:0},null==t&&(t=function(){return!0}),h=function(t){null==t||isNaN(t)||(p.values.push(t),p.sum+=t,tp.max&&(p.max=t),p.count+=1)},g=function(n,e){if(t(n,e))return null!=c&&"function"===mn(c)?h(c(n)):null!=c&&"string"===mn(c)||"number"===mn(c)?h(n[c]):h(n)},"array"===mn(d))for(m=0,u=d.length;m=Fe;ze=1<=Fe?++Oe:--Oe)Pe.push(Ne+ze/N*(Mt-Ne));Pe.push(Mt)}else if("l"===_.substr(0,1)){if(0>=Ne)throw"Logarithmic scales are only possible for values > 0";for(Ie=e*Ot(Ne),Le=e*Ot(Mt),Pe.push(Ne),ze=ht=1,We=N-1;1<=We?ht<=We:ht>=We;ze=1<=We?++ht:--ht)Pe.push(Xt(10,Ie+ze/N*(Le-Ie)));Pe.push(Mt)}else if("q"===_.substr(0,1)){for(Pe.push(Ne),ze=Y=1,Ye=N-1;1<=Ye?Y<=Ye:Y>=Ye;ze=1<=Ye?++Y:--Y)Ge=(dt.length-1)*ze/N,(Ve=yt(Ge))===Ge?Pe.push(dt[Ve]):(Me=Ge-Ve,Pe.push(dt[Ve]*(1-Me)+dt[Ve+1]*Me));Pe.push(Mt)}else if("k"===_.substr(0,1)){for(De=dt.length,xe=Array(De),ke=Array(N),rt=!0,qe=0,Ee=null,(Ee=[]).push(Ne),ze=$=1,Ze=N-1;1<=Ze?$<=Ze:$>=Ze;ze=1<=Ze?++$:--$)Ee.push(Ne+ze/N*(Mt-Ne));for(Ee.push(Mt);rt;){for(Te=ie=0,Je=N-1;0<=Je?ie<=Je:ie>=Je;Te=0<=Je?++ie:--ie)ke[Te]=0;for(ze=de=0,$e=De-1;0<=$e?de<=$e:de>=$e;ze=0<=$e?++de:--de){for(lt=dt[ze],Ae=Re,Te=he=0,et=N-1;0<=et?he<=et:he>=et;Te=0<=et?++he:--he)(Se=at(Ee[Te]-lt))=tt;Te=0<=tt?++ue:--ue)je[Te]=null;for(ze=pe=0,nt=De-1;0<=nt?pe<=nt:pe>=nt;ze=0<=nt?++pe:--pe)null===je[Ce=xe[ze]]?je[Ce]=dt[ze]:je[Ce]+=dt[ze];for(Te=ge=0,it=N-1;0<=it?ge<=it:ge>=it;Te=0<=it?++ge:--ge)je[Te]*=1/ke[Te];for(rt=!1,Te=fe=0,Xe=N-1;0<=Xe?fe<=Xe:fe>=Xe;Te=0<=Xe?++fe:--fe)if(je[Te]!==Ee[ze]){rt=!0;break}Ee=je,200<++qe&&(rt=!1)}for(Be={},Te=we=0,He=N-1;0<=He?we<=He:we>=He;Te=0<=He?++we:--we)Be[Te]=[];for(ze=ye=0,Ue=De-1;0<=Ue?ye<=Ue:ye>=Ue;ze=0<=Ue?++ye:--ye)Be[Ce=xe[ze]].push(dt[ze]);for(ot=[],Te=ve=0,Qe=N-1;0<=Qe?ve<=Qe:ve>=Qe;Te=0<=Qe?++ve:--ve)ot.push(Be[Te][0]),ot.push(Be[Te][Be[Te].length-1]);for(ot=ot.sort(function(n,e){return n-e}),Pe.push(ot[0]),ze=be=1,Ke=ot.length-1;be<=Ke;ze=be+=2)st=ot[ze],isNaN(st)||-1!==Pe.indexOf(st)||Pe.push(st)}return Pe},xt=function(o,l,d){var c,h,u,m;return o=(c=pn(arguments))[0],l=c[1],d=c[2],isNaN(o)&&(o=0),(o/=360)<1/3?u=1-((h=(1-l)/3)+(m=(1+l*mt(Ze*o)/mt(Ke-Ze*o))/3)):o<2/3?h=1-((m=(1-l)/3)+(u=(1+l*mt(Ze*(o-=1/3))/mt(Ke-Ze*o))/3)):m=1-((u=(1-l)/3)+(h=(1+l*mt(Ze*(o-=2/3))/mt(Ke-Ze*o))/3)),[255*(m=jt(3*(d*m))),255*(u=jt(3*(d*u))),255*(h=jt(3*(d*h))),3d&&(c=Ze-c),c/=Ze),[360*c,p,h]},ct.hsi=function(){return function(a,e,t){t.prototype=a.prototype;var n=new t,i=a.apply(n,e);return Object(i)===i?i:n}(Ne,n.call(arguments).concat(["hsi"]),function(){})},tt.hsi=xt,Ne.prototype.hsi=function(){return Yt(this._rgb)},St=function(m,e,t,n){var p,g,w,y,v,b,x,_,E,C;return"hsl"===n?(E=m.hsl(),C=e.hsl()):"hsv"===n?(E=m.hsv(),C=e.hsv()):"hcg"===n?(E=m.hcg(),C=e.hcg()):"hsi"===n?(E=m.hsi(),C=e.hsi()):"lch"!=n&&"hcl"!=n||(n="hcl",E=m.hcl(),C=e.hcl()),"h"===n.substr(0,1)&&(g=E[0],x=E[1],y=E[2],w=C[0],_=C[1],v=C[2]),isNaN(g)||isNaN(w)?isNaN(g)?isNaN(w)?p=Xe:(p=w,1!==y&&0!==y||"hsv"===n||(b=_)):(p=g,1!==v&&0!==v||"hsv"===n||(b=x)):p=g+t*(w>g&&180Me(a.mx-t.x)&&10>Me(a.my-t.y)&&(a.movingPoint=!0,a.mp=t,a.mp_idx=e,a.cx=t.x,a.cy=t.y)}),this.props.onMouseDown&&this.props.onMouseDown(n,this),"setCapture"in n.target&&n.target.setCapture()},mouseMove:function(a){if(!this.props.static){this.down&&(this.dragging=!0);var e=!1;if(this.lpts.forEach(function(t){var n=a.offsetX,i=a.offsetY;10>Me(n-t.x)&&10>Me(i-t.y)&&(e=e||!0)}),this.cvs.style.cursor=e?"pointer":"default",this.hover={x:a.offsetX,y:a.offsetY},this.movingPoint)if(this.ox=a.offsetX-this.mx,this.oy=a.offsetY-this.my,this.mp.x=Ae(0,V(this.defaultWidth,this.cx+this.ox)),this.mp.y=Ae(0,V(this.defaultHeight,this.cy+this.oy)),this.curve.forEach){for(var r=0,o;r=e.length||5<=e.length){var n=l.getLUT(100),r=n[0];n.forEach(function(t,e){e&&(c.drawLine(r,t,d),r=t)})}else{var i=d.x+this.offset.x,s=d.y+this.offset.y;this.ctx.beginPath(),this.ctx.moveTo(e[0].x+i,e[0].y+s),3===e.length?this.ctx.quadraticCurveTo(e[1].x+i,e[1].y+s,e[2].x+i,e[2].y+s):4===e.length&&this.ctx.bezierCurveTo(e[1].x+i,e[1].y+s,e[2].x+i,e[2].y+s,e[3].x+i,e[3].y+s),this.ctx.stroke(),this.ctx.closePath()}},drawLine:function(a,e,t){var o=(t=t||{x:0,y:0}).x+this.offset.x,i=t.y+this.offset.y;this.ctx.beginPath(),this.ctx.moveTo(a.x+o,a.y+i),this.ctx.lineTo(e.x+o,e.y+i),this.ctx.stroke()},drawPoint:function(n,e){this.drawCircle(n,1,e)},drawPoints:function(n,a){a=a||{x:0,y:0},n.forEach(function(t){this.drawCircle(t,0!==a.x||0!==a.y?1.5:3,a)}.bind(this))},drawArc:function(a,e){var r=(e=e||{x:0,y:0}).x+this.offset.x,n=e.y+this.offset.y;this.ctx.beginPath(),this.ctx.moveTo(a.x+r,a.y+n),this.ctx.arc(a.x+r,a.y+n,a.r,a.s,a.e),this.ctx.lineTo(a.x+r,a.y+n),this.ctx.fill(),this.ctx.stroke()},drawCircle:function(a,e,t){var o=(t=t||{x:0,y:0}).x+this.offset.x,i=t.y+this.offset.y;this.ctx.beginPath(),this.ctx.arc(a.x+o,a.y+i,e,0,2*De),this.ctx.stroke()},drawbbox:function(a,e){var r=(e=e||{x:0,y:0}).x+this.offset.x,n=e.y+this.offset.y;this.ctx.beginPath(),this.ctx.moveTo(a.x.min+r,a.y.min+n),this.ctx.lineTo(a.x.min+r,a.y.max+n),this.ctx.lineTo(a.x.max+r,a.y.max+n),this.ctx.lineTo(a.x.max+r,a.y.min+n),this.ctx.closePath(),this.ctx.stroke()},drawRect:function(d,e,t){var c=(t=t||{x:0,y:0}).x+this.offset.x,i=t.y+this.offset.y,r=d.x+c,a=d.y+i,s=e.x-d.x,o=e.y-d.y;this.ctx.beginPath(),this.ctx.moveTo(r,a),this.ctx.lineTo(r+s,a),this.ctx.lineTo(r+s,a+o),this.ctx.lineTo(r,a+o),this.ctx.closePath(),this.ctx.fill(),this.ctx.stroke()},drawPath:function(a,e){var o=this,n=(e=e||{x:0,y:0}).x+this.offset.x,i=e.y+this.offset.y;this.ctx.beginPath(),a.forEach(function(a,e){return 0===e?o.ctx.moveTo(a.x+n,a.y+i):void o.ctx.lineTo(a.x+n,a.y+i)}),closed&&this.ctx.closePath(),this.ctx.fill(),this.ctx.stroke()},drawShape:function(a,e){var o=(e=e||{x:0,y:0}).x+this.offset.x,n=e.y+this.offset.y,i=a.forward.points.length-1;this.ctx.beginPath(),this.ctx.moveTo(o+a.startcap.points[0].x,n+a.startcap.points[0].y),this.ctx.lineTo(o+a.startcap.points[3].x,n+a.startcap.points[3].y),3==i?this.ctx.bezierCurveTo(o+a.forward.points[1].x,n+a.forward.points[1].y,o+a.forward.points[2].x,n+a.forward.points[2].y,o+a.forward.points[3].x,n+a.forward.points[3].y):this.ctx.quadraticCurveTo(o+a.forward.points[1].x,n+a.forward.points[1].y,o+a.forward.points[2].x,n+a.forward.points[2].y),this.ctx.lineTo(o+a.endcap.points[3].x,n+a.endcap.points[3].y),3==i?this.ctx.bezierCurveTo(o+a.back.points[1].x,n+a.back.points[1].y,o+a.back.points[2].x,n+a.back.points[2].y,o+a.back.points[3].x,n+a.back.points[3].y):this.ctx.quadraticCurveTo(o+a.back.points[1].x,n+a.back.points[1].y,o+a.back.points[2].x,n+a.back.points[2].y),this.ctx.closePath(),this.ctx.fill(),this.ctx.stroke()},text:function(a,e,t){t=t||{x:0,y:0},this.offset&&(t.x+=this.offset.x,t.y+=this.offset.y),this.ctx.fillText(a,e.x+t.x,e.y+t.y)},image:function(a,e){var r=this;e=e||{x:0,y:0},this.offset&&(e.x+=this.offset.x,e.y+=this.offset.y);var n=a.devicePixelRatio||1;a.loaded?this.ctx.drawImage(a,e.x,e.y,a.width/n,a.height/n):a.onload=function(){a.loaded=!0,r.ctx.drawImage(a,e.x,e.y,a.width/n,a.height/n)}},drawAxes:function(d,e,t,n,i,r,a,s){s=s||{x:0,y:0};var c=this.getPanelWidth();this.drawLine({x:d,y:d},{x:c-d,y:d},s),this.drawLine({x:d,y:d},{x:d,y:c-d},s),this.setFill("black"),this.text(e+" \u2192",{x:s.x+c/2,y:s.y+15}),this.text(t,{x:s.x+d,y:s.y+15}),this.text(n,{x:s.x+c-d,y:s.y+15}),this.text(i,{x:s.x+5,y:s.y+c/2-d}),this.text("\u2193",{x:s.x+5,y:s.y+c/2}),this.text(r,{x:s.x+4,y:s.y+d+5}),this.text(a,{x:s.x+2,y:s.y+c-d+10})}};n&&(window["Bezier Graphics API"]=a),o.exports=a},function(oe,se,t){var le=new function(ce){var s=Math.ceil,he=new function(){function o(r,t,n,i,a){function e(s,e){"string"==typeof(e=e||(e=p(t,s))&&(e.get?e:e.value))&&"#"===e[0]&&(e=r[e.substring(1)]||e);var l="function"==typeof e,d=e,c=a||l&&!e.base?e&&e.get?s in r:r[s]:null,m;a&&c||(l&&c&&(e.base=c),l&&!1!==i&&(m=s.match(/^([gs]et|is)(([A-Z])(.*))$/))&&(o[m[3].toLowerCase()+m[4]]=m[2]),d&&!l&&d.get&&"function"==typeof d.get&&he.isPlainObject(d)||(d={value:d,writable:!0}),(p(r,s)||{configurable:!0}).configurable&&(d.configurable=!0,d.enumerable=n),g(r,s,d))}var o={};if(t){for(var s in t)t.hasOwnProperty(s)&&!c.test(s)&&e(s);for(var s in o){var l=o[s],d=r["set"+l],h=r["get"+l]||d&&r["is"+l];h&&(!0===i||0===h.length)&&e(s,{get:h,set:d})}}return r}function s(n,e,a){return n&&("length"in n&&!n.getLength&&"number"==typeof n.length?h:t).call(n,e,a=a||n),a}function d(a,e,t){for(var n in e)!e.hasOwnProperty(n)||t&&t[n]||(a[n]=e[n]);return a}var c=/^(statics|enumerable|beans|preserve)$/,h=[].forEach||function(a,e){for(var t=0,r=this.length;t=n?(r&&(o.__index=a+1),l&&t&&t.clone?l.clone():l):(l=he.create(this.prototype),r&&(l.__read=!0),l=l.initialize.apply(l,0s.length&&(t=s.length);for(var a=0;at?t:a}var d=[[.5773502691896257],[0,.7745966692414834],[.33998104358485626,.8611363115940526],[0,.5384693101056831,.906179845938664],[.2386191860831969,.6612093864662645,.932469514203152],[0,.4058451513773972,.7415311855993945,.9491079123427585],[.1834346424956498,.525532409916329,.7966664774136267,.9602898564975363],[0,.3242534234038089,.6133714327005904,.8360311073266358,.9681602395076261],[.14887433898163122,.4333953941292472,.6794095682990244,.8650633666889845,.9739065285171717],[0,.26954315595234496,.5190961292068118,.7301520055740494,.8870625997680953,.978228658146057],[.1252334085114689,.3678314989981802,.5873179542866175,.7699026741943047,.9041172563704749,.9815606342467192],[0,.2304583159551348,.44849275103644687,.6423493394403402,.8015780907333099,.9175983992229779,.9841830547185881],[.10805494870734367,.31911236892788974,.5152486363581541,.6872929048116855,.827201315069765,.9284348836635735,.9862838086968123],[0,.20119409399743451,.3941513470775634,.5709721726085388,.7244177313601701,.8482065834104272,.937273392400706,.9879925180204854],[.09501250983763744,.2816035507792589,.45801677765722737,.6178762444026438,.755404408355003,.8656312023878318,.9445750230732326,.9894009349916499]],u=[[1],[.8888888888888888,.5555555555555556],[.6521451548625461,.34785484513745385],[.5688888888888889,.47862867049936647,.23692688505618908],[.46791393457269104,.3607615730481386,.17132449237917036],[.4179591836734694,.3818300505051189,.27970539148927664,.1294849661688697],[.362683783378362,.31370664587788727,.22238103445337448,.10122853629037626],[.3302393550012598,.31234707704000286,.26061069640293544,.1806481606948574,.08127438836157441],[.29552422471475287,.26926671930999635,.21908636251598204,.1494513491505806,.06667134430868814],[.2729250867779006,.26280454451024665,.23319376459199048,.18629021092773426,.1255803694649046,.05566856711617366],[.24914704581340277,.2334925365383548,.20316742672306592,.16007832854334622,.10693932599531843,.04717533638651183],[.2325515532308739,.22628318026289723,.2078160475368885,.17814598076194574,.13887351021978725,.09212149983772845,.04048400476531588],[.2152638534631578,.2051984637212956,.18553839747793782,.15720316715819355,.12151857068790319,.08015808715976021,.03511946033175186],[.2025782419255613,.19843148532711158,.1861610000155622,.16626920581699392,.13957067792615432,.10715922046717194,.07036604748810812,.03075324199611727],[.1894506104550685,.18260341504492358,.16915651939500254,.14959598881657674,.12462897125553388,.09515851168249279,.062253523938647894,.027152459411754096]],C=Me,n=je,a=qe;return{TOLERANCE:1e-6,EPSILON:1e-12,MACHINE_EPSILON:112e-18,CURVETIME_EPSILON:4e-7,GEOMETRIC_EPSILON:2e-7,WINDING_EPSILON:2e-7,TRIGONOMETRIC_EPSILON:1e-7,CLIPPING_EPSILON:1e-7,KAPPA:4*(n(2)-1)/3,isZero:function(t){return-1e-12<=t&&1e-12>=t},integrate:function(e,t,n,i){for(var a=d[i-2],r=u[i-2],o=.5*(n-t),s=o+t,l=0,c=1&i?r[l++]*e(s):0,m;l>1;)m=o*a[l],c+=r[l++]*(e(s+m)+e(s-m));return o*c},findRoot:function(n,e,t,d,m,p,s){for(var o=0;o=m?.5*(d+m):h)}return t},solveQuadratic:function(i,r,x,_,o,l){var c=0,k=o-1e-12,f=l+1e-12,m=1/0,S=r,g,z;if(0!=(z=(r/=-2)*r-i*x)&&112e-18>C(z)){var T=a(C(i*r*x),1/3);if(1e-8>T){var v=a(10,C(Le(Be(T)*e)));isFinite(v)||(v=0),z=(r*=v)*r-(i*=v)*(x*=v)}}if(1e-12>C(i)){if(1e-12>C(S))return 1e-12>C(x)?-1:0;g=-x/S}else if(-112e-18<=z){var B=0>z?0:n(z),y=r+(0>r?-B:B);0===y?m=-(g=x/i):(g=y/i,m=x/y)}return isFinite(g)&&(null==o||g>k&&gk&&mC(i))i=r,k=t,S=s,h=1/0;else if(1e-12>C(s))k=r,S=t,h=0;else{var z,T,B,P,L,N,I;if(B=((I=i*(h=-r/i/3))+(k=I+r))*h+(S=k*h+t),L=a(C(P=(T=S*h+s)/i),1/3),(z=h-(N=0>P?-1:1)*(L=0<(P=-B/i)?1.3247179572*Ae(L,n(P)):L))!==h){do if(T=(S=(k=(I=i*(h=z))+r)*h+t)*h+s,(z=0===(B=(I+k)*h+S)?h:h-T/B/(1+112e-18))===h){h=z;break}while(N*z>N*h);C(i)*h*h>C(s/h)&&(k=((S=-s/h)-t)/h)}}return c=ge.solveQuadratic(i,k,S,o,l,d),isFinite(h)&&(0===c||h!==o[c-1])&&(null==l||h>l-1e-12&&ht?-1:1this.width&&(this.x=d.x,this.width=-this.width),0>this.height&&(this.y=d.y,this.height=-this.height)}else{var c=ye.read(arguments);this.width=c.width,this.height=c.height}r=arguments.__index}this.__read&&(this.__read=r)},set:function(a,e,t,n){return this.x=a,this.y=e,this.width=t,this.height=n,this},clone:function(){return new ve(this.x,this.y,this.width,this.height)},equals:function(n){var e=he.isPlainValue(n)?ve.read(arguments):n;return e===this||e&&this.x===e.x&&this.y===e.y&&this.width===e.width&&this.height===e.height||!1},toString:function(){var t=pe.instance;return"{ x: "+t.number(this.x)+", y: "+t.number(this.y)+", width: "+t.number(this.width)+", height: "+t.number(this.height)+" }"},_serialize:function(n){var e=n.formatter;return[e.number(this.x),e.number(this.y),e.number(this.width),e.number(this.height)]},getPoint:function(t){return new(t?we:o)(this.x,this.y,this,"setPoint")},setPoint:function(){var t=we.read(arguments);this.x=t.x,this.y=t.y},getSize:function(t){return new(t?ye:r)(this.width,this.height,this,"setSize")},setSize:function(){var t=ye.read(arguments);this._fixX&&(this.x+=(this.width-t.width)*this._fixX),this._fixY&&(this.y+=(this.height-t.height)*this._fixY),this.width=t.width,this.height=t.height,this._fixW=1,this._fixH=1},getLeft:function(){return this.x},setLeft:function(t){this._fixW||(this.width-=t-this.x),this.x=t,this._fixX=0},getTop:function(){return this.y},setTop:function(t){this._fixH||(this.height-=t-this.y),this.y=t,this._fixY=0},getRight:function(){return this.x+this.width},setRight:function(t){this._fixX!==ce&&1!==this._fixX&&(this._fixW=0),this._fixW?this.x=t-this.width:this.width=t-this.x,this._fixX=1},getBottom:function(){return this.y+this.height},setBottom:function(t){this._fixY!==ce&&1!==this._fixY&&(this._fixH=0),this._fixH?this.y=t-this.height:this.height=t-this.y,this._fixY=1},getCenterX:function(){return this.x+.5*this.width},setCenterX:function(t){this.x=t-.5*this.width,this._fixX=.5},getCenterY:function(){return this.y+.5*this.height},setCenterY:function(t){this.y=t-.5*this.height,this._fixY=.5},getCenter:function(t){return new(t?we:o)(this.getCenterX(),this.getCenterY(),this,"setCenter")},setCenter:function(){var t=we.read(arguments);return this.setCenterX(t.x),this.setCenterY(t.y),this},getArea:function(){return this.width*this.height},isEmpty:function(){return 0===this.width||0===this.height},contains:function(t){return t&&t.width!==ce||4==(Array.isArray(t)?t:arguments).length?this._containsRectangle(ve.read(arguments)):this._containsPoint(we.read(arguments))},_containsPoint:function(a){var e=a.x,t=a.y;return e>=this.x&&t>=this.y&&e<=this.x+this.width&&t<=this.y+this.height},_containsRectangle:function(a){var e=a.x,t=a.y;return e>=this.x&&t>=this.y&&e+a.width<=this.x+this.width&&t+a.height<=this.y+this.height},intersects:function(){var t=ve.read(arguments);return t.x+t.width>this.x&&t.y+t.height>this.y&&t.x=this.x&&t.y+t.height>=this.y&&t.x<=this.x+this.width&&t.y<=this.y+this.height},intersect:function(){var a=ve.read(arguments),e=Ae(this.x,a.x),t=Ae(this.y,a.y),n=V(this.x+this.width,a.x+a.width),i=V(this.y+this.height,a.y+a.height);return new ve(e,t,n-e,i-t)},unite:function(){var a=ve.read(arguments),e=V(this.x,a.x),t=V(this.y,a.y),n=Ae(this.x+this.width,a.x+a.width),i=Ae(this.y+this.height,a.y+a.height);return new ve(e,t,n-e,i-t)},include:function(){var a=we.read(arguments),e=V(this.x,a.x),t=V(this.y,a.y),n=Ae(this.x+this.width,a.x),i=Ae(this.y+this.height,a.y);return new ve(e,t,n-e,i-t)},expand:function(){var a=ye.read(arguments),e=a.width,t=a.height;return new ve(this.x-e/2,this.y-t/2,this.width+e,this.height+t)},scale:function(n,e){return this.expand(this.width*n-this.width,this.height*(e===ce?n:e)-this.height)}},he.each([["Top","Left"],["Top","Right"],["Bottom","Left"],["Bottom","Right"],["Left","Center"],["Top","Center"],["Right","Center"],["Bottom","Center"]],function(s,e){var t=s.join(""),n=/^[RL]/.test(t);4<=e&&(s[1]+=n?"Y":"X");var i=s[n?0:1],r=s[n?1:0],a="set"+t;this["get"+t]=function(t){return new(t?we:o)(this["get"+i](),this["get"+r](),this,a)},this[a]=function(){var t=we.read(arguments);this["set"+i](t.x),this["set"+r](t.y)}},{beans:!0})),d=ve.extend({initialize:function(o,e,t,n,i,r){this.set(o,e,t,n,!0),this._owner=i,this._setter=r},set:function(a,e,t,n,i){return this._x=a,this._y=e,this._width=t,this._height=n,i||this._owner[this._setter](this),this}},new function(){var t=ve.prototype;return he.each(["x","y","width","height"],function(a){var e=he.capitalize(a),t="_"+a;this["get"+e]=function(){return this[t]},this["set"+e]=function(n){this[t]=n,this._dontNotify||this._owner[this._setter](this)}},he.each(["Point","Size","Center","Left","Top","Right","Bottom","CenterX","CenterY","TopLeft","TopRight","BottomLeft","BottomRight","LeftCenter","TopCenter","RightCenter","BottomCenter"],function(e){var a="set"+e;this[a]=function(){this._dontNotify=!0,t[a].apply(this,arguments),this._dontNotify=!1,this._owner[this._setter](this)}},{isSelected:function(){return this._owner._boundsSelected},setSelected:function(n){var e=this._owner;e.setSelected&&(e._boundsSelected=n,e.setSelected(n||0arguments.length?this._transformPoint(we.read(arguments)):this._transformCoordinates(a,e,t)},_transformPoint:function(a,e,o){var n=a.x,i=a.y;return e||(e=new we),e.set(n*this._a+i*this._b+this._tx,n*this._c+i*this._d+this._ty,o)},_transformCoordinates:function(a,e,t){for(var n=0,l=0;n<2*t;){var d=a[n++],s=a[n++];e[l++]=d*this._a+s*this._b+this._tx,e[l++]=d*this._c+s*this._d+this._ty}return e},_transformCorners:function(o){var e=o.x,t=o.y,n=e+o.width,i=t+o.height,r=[e,t,n,t,n,i,e,i];return this._transformCoordinates(r,r,4)},_transformBounds:function(d,e,c){for(var n=this._transformCorners(d),i=n.slice(0,2),r=i.slice(),a=2;8>a;a++){var h=n[a],o=1&a;hr[o]&&(r[o]=h)}return e||(e=new ve),e.set(i[0],i[1],r[0]-i[0],r[1]-i[1],c)},inverseTransform:function(){return this._inverseTransform(we.read(arguments))},_getDeterminant:function(){var t=this._a*this._d-this._b*this._c;return isFinite(t)&&!ge.isZero(t)&&isFinite(this._tx)&&isFinite(this._ty)?t:null},_inverseTransform:function(o,e,s){var n=this._getDeterminant();if(!n)return null;var i=o.x-this._tx,r=o.y-this._ty;return e||(e=new we),e.set((i*this._d-r*this._b)/n,(r*this._a-i*this._c)/n,s)},decompose:function(){var o=this._a,l=this._b,d=this._c,c=this._d;if(ge.isZero(o*c-l*d))return null;var h=je(o*o+l*l),u=(o/=h)*d+(l/=h)*c;d-=o*u,c-=l*u;var m=je(d*d+c*c);return u/=m,o*(c/=m)=f?0:1<=f?1:f),new we(d+f*t,e+f*m)}},getSide:function(d,e,t,h,u,r,a,s){a||(t-=d,h-=e);var o=u-d,l=o*h-(r-e)*t;return 0!=l||s||0<=(l=(o*t+o*t)/(t*t+h*h))&&1>=l&&(l=0),0>l?-1:0t?r-e:e-r:((d-o)*l-(r-e)*t)/je(t*t+l*l)}}}),w=i.extend({_class:"Project",_list:"projects",_reference:"project",initialize:function(t){i.call(this,!0),this.layers=[],this._activeLayer=null,this.symbols=[],this._currentStyle=new I(null,null,this),this._view=q.create(this,t||X.getCanvas(1,1)),this._selectedItems={},this._selectedItemCount=0,this._updateVersion=0},_serialize:function(n,e){return he.serialize(this.layers,n,!0,e)},clear:function(){for(var t=this.layers.length-1;0<=t;t--)this.layers[t].remove();this.symbols=[]},isEmpty:function(){return 0===this.layers.length},remove:function t(){return!!t.base.call(this)&&(this._view&&this._view.remove(),!0)},getView:function(){return this._view},getCurrentStyle:function(){return this._currentStyle},setCurrentStyle:function(t){this._currentStyle.initialize(t)},getIndex:function(){return this._index},getOptions:function(){return this._scope.settings},getActiveLayer:function(){return this._activeLayer||new c({project:this})},getSelectedItems:function(){var a=[];for(var e in this._selectedItems){var t=this._selectedItems[e];t.isInserted()&&a.push(t)}return a},insertChild:function(a,e,i){return e instanceof c?(e._remove(!1,!0),he.splice(this.layers,[e],a,0),e._setProject(this,!0),this._changes&&e._changed(5),this._activeLayer||(this._activeLayer=e)):e instanceof _?(this._activeLayer||this.insertChild(a,new c(_.NO_INSERT))).insertChild(a,e,i):e=null,e},addChild:function(n,e){return this.insertChild(ce,n,e)},_updateSelection:function(a){var e=a._id,t=this._selectedItems;a._selected?t[e]!==a&&(this._selectedItemCount++,t[e]=a):t[e]===a&&(this._selectedItemCount--,delete t[e])},selectAll:function(){for(var a=this.layers,e=0,i=a.length;e=o.subtract(n).divide(a).length)return new T(e,c,{name:he.hyphenate(t),point:n})}if(this._locked||!this._visible||this._guide&&!g.guides||this.isEmpty())return null;var u=this._matrix,n=g._totalMatrix,i=this.getView(),r=g._totalMatrix=n?n.chain(u):this.getGlobalMatrix().preConcatenate(i._matrix),a=g._tolerancePadding=new ye(C._getPenPadding(1,r.inverted())).multiply(Ae(g.tolerance,1e-6));if(o=u._inverseTransform(o),!this._children&&!this.getInternalRoughBounds().expand(a.multiply(2))._containsPoint(o))return null;var s=!(g.guides&&!this._guide||g.selected&&!this._selected||g.type&&g.type!==he.hyphenate(this._class)||g.class&&!(this instanceof g.class)),c=this,h;if(s&&(g.center||g.bounds)&&this._parent){var w=this.getInternalBounds();if(g.center&&(h=t("center","Center")),!h&&g.bounds)for(var d=["TopLeft","TopRight","BottomLeft","BottomRight","LeftCenter","TopCenter","RightCenter","BottomCenter"],f=0;8>f&&!h;f++)h=t("bounds",d[f])}var y=!h&&this._children;if(y){var p=this._getChildHitTestOptions(g);for(f=y.length-1;0<=f&&!h;f--)h=y[f]._hitTest(o,p)}return!h&&s&&(h=this._hitTestSelf(o,g)),h&&h.point&&(h.point=u.transform(h.point)),g._totalMatrix=n,h},_getChildHitTestOptions:function(t){return t},_hitTestSelf:function(n,e){if(e.fill&&this.hasFill()&&this._contains(n))return new T("fill",this)},matches:function(a,e){var t=typeof a;if("object"==t){for(var n in a)if(a.hasOwnProperty(n)&&!this.matches(n,a[n]))return!1;}else{if("function"==t)return a(this);var i=/^(empty|editable)$/.test(a)?this["is"+he.capitalize(a)]():"type"===a?he.hyphenate(this._class):this[a];if(/^(constructor|class)$/.test(a)){if(!(this instanceof e))return!1;}else if(e instanceof RegExp){if(!e.test(i))return!1;}else if("function"==typeof e){if(!e(i))return!1;}else if(he.isPlainObject(e)){if(!function o(e,t){for(var n in e)if(e.hasOwnProperty(n)){var i=e[n],r=t[n];if(he.isPlainObject(i)&&he.isPlainObject(r)){if(!o(i,r))return!1;}else if(!he.equals(i,r))return!1}return!0}(e,i))return!1;}else if(!he.equals(i,e))return!1}return!0},getItems:function(t){return _._getItems(this._children,t,this._matrix)},getItem:function(t){return _._getItems(this._children,t,this._matrix,null,!0)[0]||null},statics:{_getItems:function o(e,t,w,y,v){if(!y&&"object"==typeof t){var a=t.overlapping,s=t.inside;y={items:[],inside:!!s,overlapping:!!a,rect:h=(_=a||s)&&ve.read([_]),path:a&&new C.Rectangle({rectangle:h,insert:!1})},_&&(t=he.set({},t,{inside:!0,overlapping:!0}))}var l=y&&y.items,h;w=(h=y&&y.rect)&&(w||new be);for(var b=0,x=e&&e.length;bi:nu)&&this._canComposite(),p=C.pixelRatio||1,g,k,S;if(!m){var z=this.getStrokeBounds(n(s));if(!z.width||!z.height)return;S=C.offset,k=C.offset=z.getTopLeft().floor(),g=E,E=X.getContext(z.getSize().ceil().add(1).multiply(p)),1!==p&&E.scale(p,p)}E.save();var v=t?t.chain(a):!this.getStrokeScaling(!0)&&n(s),w=!m&&C.clipItem,y=!v||w;if(m?(E.globalAlpha=u,f&&(E.globalCompositeOperation=o)):y&&E.translate(-k.x,-k.y),y&&(m?a:n(s)).applyToContext(E),w&&C.clipItem.draw(E,C.extend({clip:!0})),v){E.setTransform(p,0,0,p,0,0);var b=C.offset;b&&E.translate(-b.x,-b.y)}this._draw(E,C,v),E.restore(),i.pop(),C.clip&&!C.dontFinish&&E.clip(),m||(H.process(o,E,g,u,k.subtract(S).multiply(p)),X.release(E),C.offset=S)}}},_isUpdated:function(a){var e=this._parent;if(e instanceof k)return e._isUpdated(a);var t=this._updateVersion===a;return!t&&e&&e._visible&&e._isUpdated(a)&&(this._updateVersion=a,t=!0),t},_drawSelection:function(d,e,t,n,i){if((this._drawSelected||this._boundsSelected)&&this._isUpdated(i)){var r=this.getSelectedColor(!0)||this.getLayer().getSelectedColor(!0),a=e.chain(this.getGlobalMatrix(!0));if(d.strokeStyle=d.fillStyle=r?r.toCanvasStyle(d):"#009dec",this._drawSelected&&this._drawSelected(d,a,n),this._boundsSelected){var s=t/2,o=a._transformCorners(this.getInternalBounds());d.beginPath();for(var l=0;8>l;l++)d[0==l?"moveTo":"lineTo"](o[l],o[++l]);for(d.closePath(),d.stroke(),l=0;8>l;l++)d.fillRect(o[l]-s,o[++l]-s,t,t)}}},_canComposite:function(){return!1}},he.each(["down","drag","up","move"],function(n){this["removeOn"+he.capitalize(n)]=function(){var e={};return e[n]=!0,this.removeOn(e)}},{removeOn:function(a){for(var e in a)if(a[e]){var t="mouse"+e,n=this._project,i=n._removeSets=n._removeSets||{};i[t]=i[t]||{},i[t][this._id]=this}return this}})),y=_.extend({_class:"Group",_selectChildren:!0,_serializeFields:{children:[]},initialize:function(t){this._children=[],this._namedChildren={},this._initialize(t)||this.addChildren(Array.isArray(t)?t:arguments)},_changed:function n(e){n.base.call(this,e),1026&e&&(this._clipItem=ce)},_getClipItem:function(){var a=this._clipItem;if(a===ce){a=null;for(var r=0,o=this._children.length,n;rr;r++){var h=new we(1&r?1:-1,1=t.subtract(n).divide(this._radius).getLength():e.base.call(this,t)}return .5>=t.divide(this.size).getLength()},_hitTestSelf:function t(n,i){var r=!1;if(this.hasStroke()){var m=this._type,s=this._radius,p=this.getStrokeWidth()+2*i.tolerance;if("rectangle"===m){var l=a(this,n,p);if(l){var c=n.subtract(l);r=2*Me(c.getLength()-e(c,s))<=p}else{var h=new ve(this._size).setCenter(0,0),u=h.expand(p),d=h.expand(-p);r=u._containsPoint(n)&&!d._containsPoint(n)}}else"ellipse"===m&&(s=e(n,s)),r=2*Me(n.getLength()-s)<=p}return r?new T("stroke",this):t.base.apply(this,arguments)}}},{statics:new function(){function a(o,e,t,n,i){var r=new m(he.getNamed(i));return r._type=o,r._size=t,r._radius=n,r.translate(e)}return{Circle:function(){var e=we.readNamed(arguments,"center"),t=he.readNamed(arguments,"radius");return a("circle",e,new ye(2*t),t,arguments)},Rectangle:function(){var e=ve.readNamed(arguments,"rectangle"),t=ye.min(ye.readNamed(arguments,"radius"),e.getSize(!0).divide(2));return a("rectangle",e.getCenter(!0),e.getSize(!0),t,arguments)},Ellipse:function(){var e=m._readEllipse(arguments),t=e.radius;return a("ellipse",e.center,t.multiply(2),t,arguments)},_readEllipse:function(a){var e,r;if(he.hasNamed(a,"radius"))e=we.readNamed(a,"center"),r=ye.readNamed(a,"radius");else{var o=ve.readNamed(a,"rectangle");e=o.getCenter(!0),r=o.getSize(!0).divide(2)}return{center:e,radius:r}}}}}),v=_.extend({_class:"Raster",_applyMatrix:!1,_canApplyMatrix:!1,_boundsGetter:"getBounds",_boundsSelected:!0,_serializeFields:{crossOrigin:null,source:null},initialize:function(n,e){this._initialize(n,e!==ce&&we.read(arguments,1))||("string"==typeof n?this.setSource(n):this.setImage(n)),this._size||(this._size=new ye,this._loaded=!1)},_equals:function(t){return this.getSource()===t.getSource()},clone:function(a){var e=new v(_.NO_INSERT),t=this._image,n=this._canvas;if(t)e.setImage(t);else if(n){var i=X.getCanvas(this._size);i.getContext("2d").drawImage(n,0,0),e.setImage(i)}return e._crossOrigin=this._crossOrigin,this._clone(e,a)},getSize:function(){var t=this._size;return new r(t?t.width:0,t?t.height:0,this,"setSize")},setSize:function(){var n=ye.read(arguments);if(!n.equals(this._size))if(0_;_++)h[_]/=u;return u?P.read(h):null},getPixel:function(){var n=we.read(arguments),e=this.getContext().getImageData(n.x,n.y,1,1).data;return new P("rgb",[e[0]/255,e[1]/255,e[2]/255],e[3]/255)},setPixel:function(){var o=we.read(arguments),e=P.read(arguments),t=e._convert("rgb"),n=e._alpha,i=this.getContext(!0),r=i.createImageData(1,1),a=r.data;a[0]=255*t[0],a[1]=255*t[1],a[2]=255*t[2],a[3]=null==n?255:255*n,i.putImageData(r,o.x,o.y)},createImageData:function(){var t=ye.read(arguments);return this.getContext().createImageData(t.width,t.height)},getImageData:function(){var t=ve.read(arguments);return t.isEmpty()&&(t=new ve(this._size)),this.getContext().getImageData(t.x,t.y,t.width,t.height)},setImageData:function(n){var e=we.read(arguments,1);this.getContext(!0).putImageData(n,e.x,e.y)},_getBounds:function(a,e){var t=new ve(this._size).setCenter(0,0);return e?e._transformBounds(t):t},_hitTestSelf:function(n){if(this._contains(n)){var e=this;return new T("pixel",e,{offset:n.add(e._size.divide(2)).round(),color:{get:function(){return e.getPixel(this.offset)}}})}},_draw:function(n){var e=this.getElement();e&&(n.globalAlpha=this._opacity,n.drawImage(e,-this._size.width/2,-this._size.height/2))},_canComposite:function(){return!0}}),h=_.extend({_class:"PlacedSymbol",_applyMatrix:!1,_canApplyMatrix:!1,_boundsGetter:{getBounds:"getStrokeBounds"},_boundsSelected:!0,_serializeFields:{symbol:null},initialize:function(n,e){this._initialize(n,e!==ce&&we.read(arguments,1))||this.setSymbol(n instanceof g?n:new g(n))},_equals:function(t){return this._symbol===t._symbol},getSymbol:function(){return this._symbol},setSymbol:function(t){this._symbol=t,this._changed(9)},clone:function(n){var e=new h(_.NO_INSERT);return e.setSymbol(this._symbol),this._clone(e,n)},isEmpty:function(){return this._symbol._definition.isEmpty()},_getBounds:function(a,e,t){var n=this.symbol._definition;return n._getCachedBounds(a,e&&e.chain(n._matrix),t)},_hitTestSelf:function(a,e){var t=this._symbol._definition._hitTest(a,e);return t&&(t.item=this),t},_draw:function(n,e){this.symbol._definition.draw(n,e)}}),T=he.extend({_class:"HitResult",initialize:function(a,e,t){this.type=a,this.item=e,t&&(t.enumerable=!0,this.inject(t))},statics:{getOptions:function(t){return new he({type:null,tolerance:le.settings.hitTolerance,fill:!t,stroke:!t,segments:!t,handles:!1,ends:!1,center:!1,bounds:!1,guides:!1,selected:!1},t)}}}),E=he.extend({_class:"Segment",beans:!0,initialize:function(s,e,t,n,i,r){var a=arguments.length,d,h,m;0===a||(1===a?"point"in s?(d=s.point,h=s.handleIn,m=s.handleOut):d=s:2===a&&"number"==typeof s?d=arguments:3>=a?(d=s,h=e,m=t):(d=s===ce?null:[s,e],h=t===ce?null:[t,n],m=i===ce?null:[i,r])),new u(d,this,"_point"),new u(h,this,"_handleIn"),new u(m,this,"_handleOut")},_serialize:function(t){return he.serialize(this.hasHandles()?[this._point,this._handleIn,this._handleOut]:this._point,t,!0)},_changed:function(a){var e=this._path;if(e){var t=e._curves,i=this._index,r;t&&(a&&a!==this._point&&a!==this._handleIn||!(r=0t;t+=2)e.push(new we(a[t],a[t+1]));return e},getLength:function(){return null==this._length&&(this._length=_e.getLength(this.getValues(),0,1)),this._length},getArea:function(){return _e.getArea(this.getValues())},getLine:function(){return new xe(this._segment1._point,this._segment2._point)},getPart:function(n,e){return new _e(_e.getPart(this.getValues(),n,e))},getPartLength:function(n,e){return _e.getLength(this.getValues(),n,e)},getIntersections:function(t){return _e._getIntersections(this.getValues(),t&&t!==this?t.getValues():null,this,t,[],{})},_getParameter:function(n,e){return e?n:n&&n.curve===this?n.parameter:n===ce&&e===ce?.5:this.getParameterAt(n,0)},divide:function(m,e,t){var n=this._getParameter(m,e),i=null;if(4e-7<=n&&n<=1-4e-7){var g=_e.subdivide(this.getValues(),n),a=g[0],s=g[1],o=t||this.hasHandles(),l=this._segment1,c=this._segment2,h=this._path;o&&(l._handleOut.set(a[2]-a[0],a[3]-a[1]),c._handleIn.set(s[4]-s[6],s[5]-s[7]));var u=a[6],d=a[7],f=new E(new we(u,d),o&&new we(a[4]-u,a[5]-d),o&&new we(s[2]-u,s[3]-d));h?(h.insert(l._index+1,f),i=this.getNext()):(this._segment2=f,i=new _e(f,c))}return i},split:function(n,e){return this._path?this._path.split(this._segment1._index,this._getParameter(n,e)):null},reversed:function(){return new _e(this._segment2.reversed(),this._segment1.reversed())},clearHandles:function(){this._segment1._handleOut.set(0,0),this._segment2._handleIn.set(0,0)},statics:{getValues:function(l,e,t){var n=l._point,i=l._handleOut,r=e._handleIn,a=e._point,s=[n._x,n._y,n._x+i._x,n._y+i._y,a._x+r._x,a._y+r._y,a._x,a._y];return t&&t._transformCoordinates(s,s,4),s},subdivide:function(s,e){var C=s[0],n=s[1],i=s[2],r=s[3],a=s[4],o=s[5],l=s[6],c=s[7];e===ce&&(e=.5);var h=1-e,u=h*C+e*i,d=h*n+e*r,f=h*i+e*a,m=h*r+e*o,p=h*a+e*l,g=h*o+e*c,v=h*u+e*f,w=h*d+e*m,y=h*f+e*p,b=h*m+e*g,x=h*v+e*y,_=h*w+e*b;return[[C,n,u,d,v,w,x,_],[x,_,y,b,p,g,l,c]]},solveCubic:function(d,e,t,n,i,r){var a=d[e],s=d[e+2],o=3*(s-a),l=3*(d[e+4]-s)-o,c=d[e+6]-a-o-l;return ge.solveCubic(c,l,o,a-t,n,i,r)},getParameterOf:function(d,e){var t=new we(d[0],d[1]),n=new we(d[6],d[7]),i=e.isClose(t,1e-12)?0:e.isClose(n,1e-12)?1:null;if(null!==i)return i;for(var h=[e.x,e.y],a=[],s=0;2>s;s++)for(var u=_e.solveCubic(d,s,h[s],a,0,1),l=0;l=t){var n=e.getDistance(_e.getPoint(m,t),!0);if(ns?0:.999999999999=g;g++)t(g/100);for(var f=.005;4e-7s;if(l){var i=o;o=s,s=i}return 0s&&(a=_e.subdivide(a,(s-o)/(1-o))[0]),l?[a[6],a[7],a[4],a[5],a[2],a[3],a[0],a[1]]:a},hasHandles:function(n){var e=ge.isZero;return!(e(n[0]-n[2])&&e(n[1]-n[3])&&e(n[4]-n[6])&&e(n[5]-n[7]))},isFlatEnough:function(m,e){var t=m[0],n=m[1],i=m[2],r=m[3],a=m[4],s=m[5],o=m[6],l=m[7],c=3*i-2*t-o,h=3*r-2*n-l,u=3*a-2*o-t,d=3*s-2*l-n;return Ae(c*c,u*u)+Ae(h*h,d*d)<10*e*e},getArea:function(d){var e=d[0],t=d[1],n=d[6],i=d[7],r=(d[2]+e)/2,a=(d[3]+t)/2,s=(d[4]+d[6])/2,o=(d[5]+d[7])/2;return 6*((e-r)*(a+t)+(r-s)*(o+a)+(s-n)*(i+o))/10},getBounds:function(a){for(var e=a.slice(0,2),t=e.slice(),n=[0,0],i=0;2>i;i++)_e._addBounds(a[i],a[i+2],a[i+4],a[i+6],i,0,e,t,n);return new ve(e[0],e[1],t[0]-e[0],t[1]-e[1])},_addBounds:function(d,e,t,n,h,i,a,r,o){function s(o,e){var t=o-e,n=o+e;tr[h]&&(r[h]=n)}var l=ge.solveQuadratic(3*(e-t)-d+n,2*(d+t)-4*e,e-d,o);s(n,0);for(var c=0;c=i&&0>=r&&-1<=r}return!1},isLinear:function(a,e,t){var n=a.divide(3);return e.equals(n)&&t.negate().equals(n)}},function(o,e){this[e]=function(){var e=this._segment1,t=this._segment2;return o(t._point.subtract(e._point),e._handleOut,t._handleIn)},this.statics[e]=function(e){var t=e[0],n=e[1],i=e[6],r=e[7];return o(new we(i-t,r-n),new we(e[2]-t,e[3]-n),new we(e[4]-i,e[5]-r))}},{statics:{},hasHandles:function(){return!this._segment1._handleOut.isZero()||!this._segment2._handleIn.isZero()},isCollinear:function(t){return t&&this.isStraight()&&t.isStraight()&&this.getLine().isCollinear(t.getLine())},isHorizontal:function(){return this.isStraight()&&1e-7>Me(this.getTangentAt(.5,!0).y)},isVertical:function(){return this.isStraight()&&1e-7>Me(this.getTangentAt(.5,!0).x)}}),{beans:!1,getParameterAt:function(n,e){return _e.getParameterAt(this.getValues(),n,e)},getParameterOf:function(){return _e.getParameterOf(this.getValues(),we.read(arguments))},getLocationAt:function(a,e){var t=e?a:this.getParameterAt(a);return null!=t&&0<=t&&1>=t?new b(this,t):null},getLocationOf:function(){return this.getLocationAt(this.getParameterOf(we.read(arguments)),!0)},getOffsetOf:function(){var t=this.getLocationOf.apply(this,arguments);return t?t.getOffset():null},getNearestLocation:function(){var a=we.read(arguments),e=this.getValues(),t=_e.getNearestParameter(e,a),n=_e.getPoint(e,t);return new b(this,t,n,null,a.getDistance(n))},getNearestPoint:function(){return this.getNearestLocation.apply(this,arguments).getPoint()}},new function(){var t=["getPoint","getTangent","getNormal","getWeightedTangent","getWeightedNormal","getCurvature"];return he.each(t,function(a){this[a+"At"]=function(e,t){var n=this.getValues();return _e[a](n,t?e:_e.getParameterAt(n,e,0))}},{statics:{evaluateMethods:t}})},new function(){function d(l){var e=l[0],t=l[1],d=l[2],i=l[3],r=l[4],a=l[5],s=9*(d-r)+3*(l[6]-e),o=9*(i-a)+3*(l[7]-t);return function(l){var e=(s*l+(6*(e+r)-12*d))*l+3*(d-e),t=(o*l+(6*(t+a)-12*i))*l+3*(i-t);return je(e*e+t*t)}}function p(n,e){return Ae(2,V(16,s(32*Me(e-n))))}function a(m,e,t,n){if(null==e||0>e||1e||e>1-4e-7)){var C=4e-7>e;f=C?i:u,E=C?s:d}else{var p=3*(o-i),g=3*(c-o)-p,v=u-i-p-g,w=3*(l-s),y=3*(h-l)-w,b=d-s-w-y;if(0===t)f=((v*e+g)*e+p)*e+i,E=((b*e+y)*e+w)*e+s;else{if(4e-7>e?(f=p,E=w):e>1-4e-7?(f=3*(u-c),E=3*(d-h)):(f=(3*v*e+2*g)*e+p,E=(3*b*e+2*y)*e+w),n){0===f&&0===E&&(4e-7>e||e>1-4e-7)&&(f=c-o,E=h-l);var x=je(f*f+E*E);x&&(f/=x,E/=x)}if(3===t){var _=qe(f*f+E*E,1.5);f=0===_?0:(f*(6*b*e+2*y)-E*(6*v*e+2*g))/_,E=0}}}return 2===t?new we(E,-f):new we(f,E)}return{statics:{getLength:function(e,t,n){if(t===ce&&(t=0),n===ce&&(n=1),0===t&&1===n&&_e.isStraight(e)){var s=e[6]-e[0],a=e[7]-e[1];return je(s*s+a*a)}var o=d(e);return ge.integrate(o,t,n,p(t,n))},getParameterAt:function(e,t,n){if(n===ce&&(n=0>t?1:0),0===t)return n;var i=Me,a=0i(t-c))return a?s:o;if(i(t)>c)return null;var h=0;return ge.findRoot(function(a){return h+=ge.integrate(l,n,a,p(n,a)),n=a,h-t},l,n+t/c,o,s,32,1e-12)},getPoint:function(n,e){return a(n,e,0,!1)},getTangent:function(n,e){return a(n,e,1,!0)},getWeightedTangent:function(n,e){return a(n,e,1,!1)},getNormal:function(n,e){return a(n,e,2,!0)},getWeightedNormal:function(n,e){return a(n,e,2,!1)},getCurvature:function(n,e){return a(n,e,3,!1).x}}}},new function(){function x(y,e,t,n,i,x,a,s,o,_,c){var h=e.startConnected,u=e.endConnected;if(null==i&&(i=_e.getParameterOf(t,x)),null!==i&&i>=(h?4e-7:0)&&i<=(u?1-4e-7:1)&&(null==o&&(o=_e.getParameterOf(a,_)),null!==o&&o>=(u?4e-7:0)&&o<=(h?1-4e-7:1))){var d=e.renormalize;if(d){var f=d(i,o);i=f[0],o=f[1]}var m=new b(n,i,x||_e.getPoint(t,i),c),p=new b(s,o,_||_e.getPoint(a,o),c),g=m.getPath()===p.getPath()&&m.getIndex()>p.getIndex()?p:m,v=e.include;m._intersection=p,p._intersection=m,v&&!v(g)||b.insert(y,g,!0)}}function e(n,e,t,i){return n[0][1]i?a(e,!1,i):n[0][0]}function a(d,e,t){for(var n=d[0][0],c=d[0][1],h=1,u=d.length;h=t:o<=t)return o===t?s:n+(t-c)*(s-n)/(o-c);n=s,c=o}return null}return{statics:{_getIntersections:function(t,n,i,r,a,s){if(!n)return _e._getSelfIntersection(t,i,a,s);var o=t[0],l=t[1],d=t[6],c=t[7],h=n[0],u=n[1],m=n[6],p=n[7],g=(3*t[2]+o)/4,f=(3*t[3]+l)/4,w=(3*t[4]+d)/4,y=(3*t[5]+c)/4,v=(3*n[2]+h)/4,b=(3*n[3]+u)/4,_=(3*n[4]+m)/4,E=(3*n[5]+p)/4,C=V,k=Ae;if(!(k(o,g,w,d)>=C(h,v,_,m)&&C(o,g,w,d)<=k(h,v,_,m)&&k(l,f,y,c)>=C(u,b,E,p)&&C(l,f,y,c)<=k(u,b,E,p)))return a;if(!s.startConnected&&!s.endConnected){var S=_e.getOverlaps(t,n);if(S){for(var z=0,T;2>z;z++)T=S[z],x(a,s,t,i,T[0],null,n,r,T[1],null,!0);return a}}var P=_e.isStraight(t),L=_e.isStraight(n),I=P&&L,A=a.length;if((I?function(e,t,n,i,r,a){var s=xe.intersect(e[0],e[1],e[6],e[7],t[0],t[1],t[6],t[7]);s&&x(r,a,e,n,null,s,t,i,null,s)}:P||L?function(e,t,n,i,r,a){for(var s=_e.isStraight(e),o=s?t:e,l=s?e:t,d=l[0],c=l[1],h=l[6]-d,u=l[7]-c,m=Oe(-u,h),p=Ge(m),g=Ve(m),f=[],w=0;8>w;w+=2){var v=o[w]-d,b=o[w+1]-c;f.push(v*g-b*p,v*p+b*g)}var B=[],_=_e.solveCubic(f,1,0,B,0,1);for(w=0;w<_;w++){var E=B[w],C=_e.getPoint(o,E),k=_e.getParameterOf(l,C);if(null!==k){var S=_e.getPoint(l,k),z=s?k:E,T=s?E:k;(!a.endConnected||T>ge.CURVETIME_EPSILON)&&x(r,a,e,n,z,s?S:C,t,i,T,s?C:S)}}}:function t(n,G,M,a,s,o,l,c,h,u,d,f,m){if(!(24<=++m)){var F=G[0],w=G[1],y=G[6],b=G[7],_=xe.getSignedDistance,E=_(F,w,y,b,G[2],G[3]),C=_(F,w,y,b,G[4],G[5]),k=0l*c)h=[[i,a,o],[i,s,o]];else{var m=l/c;h=[2<=m?[i,a,o]:.5>=m?[i,s,o]:[i,a,s,o],[i,o]]}return 0>(l||c)?h.reverse():h}(_(F,w,y,b,n[0],n[1]),_(F,w,y,b,n[2],n[3]),_(F,w,y,b,n[4],n[5]),_(F,w,y,b,n[6],n[7])),P=T[0],N=T[1],B,W;if(null!=(B=e(P,N,S,z))&&null!=(W=e(P.reverse(),N.reverse(),S,z))){n=_e.getPart(n,B,W);var R=W-B,L=l+(c-l)*B,I=l+(c-l)*W;if(.5u-h){var A=L+(I-L)/2;t(G,(X=_e.subdivide(n,.5))[0],a,M,s,o,h,u,L,A,R,!f,m),t(G,X[1],a,M,s,o,h,u,A,I,R,!f,m)}else{var X;A=h+(u-h)/2,t((X=_e.subdivide(G,.5))[0],n,a,M,s,o,h,A,L,I,R,!f,m),t(X[1],n,a,M,s,o,A,u,L,I,R,!f,m)}}else if(1e-7>Ae(u-h,I-L)){var H=L+(I-L)/2,q=h+(u-h)/2;n=M.getValues(),G=a.getValues(),x(s,o,f?G:n,f?a:M,f?q:H,null,f?n:G,f?M:a,f?H:q,null)}else 1e-12A)return a;var O=new we(o,l),j=new we(d,c),q=new we(h,u),D=new we(m,p);return O.isClose(q,1e-12)&&x(a,s,t,i,0,O,n,r,0,q),!s.startConnected&&O.isClose(D,1e-12)&&x(a,s,t,i,0,O,n,r,1,D),!s.endConnected&&j.isClose(q,1e-12)&&x(a,s,t,i,1,j,n,r,0,q),j.isClose(D,1e-12)&&x(a,s,t,i,1,j,n,r,1,D),a},_getSelfIntersection:function(d,e,t,n){var i=d[0],r=d[1],a=d[2],s=d[3],o=d[4],l=d[5],c=d[6],h=d[7],u=new xe(i,r,c,h,!1),m=u.getSide(new we(a,s),!0);if(m===u.getSide(new we(o,l),!0)&&0<((i-o)*(s-h)+(a-c)*(l-r))*m)return t;var p=c-3*o+3*a-i,g=o-2*a+i,f=a-i,w=h-3*l+3*s-r,y=l-2*s+r,v=s-r,b=w*f-p*v;if(0>b*b-4*(w*g-p*y)*(y*f-g*v)){var x=[],_=ge.solveCubic(p*p+w*w,3*(p*g+w*y),2*(g*g+y*y)+p*f+w*v,g*f+y*v,x,0,1),E;if(0<_){for(var k=0,S=0,B;k<_;k++)B=Me(e.getCurvatureAt(x[k],!0)),B>S&&(S=B,E=x[k]);var L=_e.subdivide(d,E);n.endConnected=!0,n.renormalize=function(n,e){return[n*E,e*(1-E)+E]},_e._getIntersections(L[0],L[1],e,e,t,n)}}return t},getOverlaps:function(m,e){function t(a){var e=a[6]-a[0],t=a[7]-a[1];return e*e+t*t}var s=Me,n=_e.isStraight(m),i=_e.isStraight(e),r=n&&i;if(r){var a=t(m)b&&2>u.length;b+=0==x?0:1,x^=1){if(_=_e.getParameterOf(h[1^b],new we(h[b][0==x?0:6],h[b][0==x?1:7])),null!=_){var E=0==b?[x,_]:[_,x];(0===u.length||4e-7a||2e-7>(a=r(this.getOffset()-o.getOffset()))||2e-7>r(this.getPath().getLength()-a))&&(e||!this._intersection&&!o._intersection||this._intersection&&this._intersection.equals(o._intersection,!0))}return t},toString:function(){var a=[],e=this.getPoint(),t=pe.instance;e&&a.push("point: "+e);var n=this.getIndex();null!=n&&a.push("index: "+n);var i=this.getParameter();return null!=i&&a.push("parameter: "+t.number(i)),null!=this._distance&&a.push("distance: "+t.number(this._distance)),"{ "+a.join(", ")+" }"},isTouching:function(){var a=this._intersection;if(a&&this.getTangent().isCollinear(a.getTangent())){var e=this.getCurve(),t=a.getCurve();return!(e.isStraight()&&t.isStraight()&&e.getLine().intersect(t.getLine()))}return!1},isCrossing:function(){function m(a,e,t){return ee&&ae&&a<=s||a>=-s&&a>>1,l=d[p],c;if(t&&(c=e.equals(l)?l:n(p,-1)||n(p,1)))return e._overlap&&(c._overlap=c._intersection._overlap=!0),c;var g=e.getPath(),h=l.getPath();0>(g===h?e.getIndex()+e.getParameter()-(l.getIndex()+l.getParameter()):g._id-h._id)?s=p-1:i=p+1}return d.splice(i,0,e),e}return{statics:{insert:a,expand:function(e){for(var t=e.slice(),n=0,o=e.length;n=1-4e-7&&(o++,s--);var d=this.getCurves();if(0<=o&&o=m.subtract(e).divide(t).length}function t(t,e,a){if(!B.selected||e.isSelected()){var i=t._point;if(e!==i&&(e=e.add(i)),P(e,f))return new T(a,_,{segment:t,point:e})}}function e(a,e){return(e||B.segments)&&t(a,a._point,"segment")||!e&&B.handles&&(t(a,a._handleIn,"handle-in")||t(a,a._handleOut,"handle-out"))}function b(t){I.add(t)}function x(e){var t;return("round"!==y||"round"!==L)&&(I=new C({internal:!0,closed:!0}),u||0d)return l.getLocationAt(d-s)}return 0=t)){n&&(y=V(t,4),i+=2*V(t,y));for(var b=[],s=0;s=he.remain(arguments))H=m,m=we.read(arguments);else{var U=ye.read(arguments);if(U.isZero())return this.lineTo(m);var u=he.read(arguments),d=!!he.read(arguments),Q=!!he.read(arguments),p=a.add(m).divide(2),K=(te=a.subtract(p).rotate(-u)).x,w=te.y,y=Me,_=y(U.width),Y=y(U.height),Z=_*_,J=Y*Y,$=K*K,z=w*w,T=je($/Z+z/J);if(1y(T=(Z*J-Z*z-J*$)/(Z*z+J*$))&&(T=0),0>T)throw new Error("Cannot create an arc with the given arguments");c=new we(_*w/Y,-Y*K/_).multiply((Q===d?-1:1)*je(T)).rotate(u).add(p),b=(x=(B=new be().translate(c).rotate(u).scale(_,Y))._inverseTransform(a)).getDirectedAngle(B._inverseTransform(m)),!d&&0b&&(b+=360)}if(H){var ee=new xe(a.add(H).divide(2),H.subtract(a).rotate(90),!0),N=new xe(H.add(m).divide(2),m.subtract(H).rotate(90),!0),L=new xe(a,m),M=L.getSide(H);if(!(c=ee.intersect(N,!0))){if(!M)return this.lineTo(m);throw new Error("Cannot create an arc with the given arguments")}b=(x=a.subtract(c)).getDirectedAngle(m.subtract(c));var I=L.getSide(c);0===I?b=M*Me(b):M===I&&(b+=0>b?360:-360)}for(var A=Me(b),O=360<=A?4:s(A/90),j=b/O,q=j*De/360,D=4/3*Ge(q)/(1+Ve(q)),G=[],V=0;V<=O;V++){var te=m,ne=null;if(Ve;e++)_e._addBounds(u[e],u[e+4],a[e+2],a[e],e,n?n[e]:0,g,l,c);var r=u;u=a,a=r}var r=m[0];if(!r)return new ve;for(var a=[,,,,,,],u=r._transformCoordinates(p,[,,,,,,],!1),g=u.slice(0,2),l=g.slice(),c=[,,],h=1,w=m.length;hl.getDirectedAngle(c)?-t:t;if(l.setLength(h),c.setLength(h),r&&(i(o),i(o.add(l))),"miter"===e){var u=new xe(o.add(l),new we(-l.y,l.x),!0).intersect(new xe(o.add(c),new we(-c.y,c.x),!0),!0);if(u&&o.getDistance(u)<=n&&(i(u),!r))return}r||i(o.add(l)),i(o.add(c))},_addSquareCap:function(l,e,t,n,i){var r=l._point,d=l.getLocation(),s=d.getNormal().multiply(t);i&&(n(r.subtract(s)),n(r.add(s))),"square"===e&&(r=r.add(s.rotate(0===d.getParameter()?-90:90))),n(r.add(s)),n(r.subtract(s))},getHandleBounds:function(w,e,t,n,i,r){for(var a=[,,,,,,],s=1/0,C=-s,k=s,S=C,z=0,T=w.length;zd;d+=2){var B=0==d?r:i,m=B?B[0]:0,p=B?B[1]:0,g=a[d],v=a[d+1],y=g-m,b=g+m,x=v-p,_=v+p;yC&&(C=b),xS&&(S=_)}}return new ve(s,k,C-s,S-k)},getRoughBounds:function(o,e,t,n){var i=t.hasStroke()?t.getStrokeWidth()/2:0,r=i;return 0a;a++)l=r[a],i[a]=new E(l._point.multiply(e).add(t),l._handleIn.multiply(e),l._handleOut.multiply(e));return p(i,!0,n)}var g=.5522847498307936,r=[new E([-1,0],[0,g],[0,-g]),new E([0,-1],[-g,0],[g,0]),new E([1,0],[0,-g],[0,g]),new E([0,1],[g,0],[-g,0])];return{Line:function(){return p([new E(we.readNamed(arguments,"from")),new E(we.readNamed(arguments,"to"))],!1,arguments)},Circle:function(){var a=we.readNamed(arguments,"center"),e=he.readNamed(arguments,"radius");return n(a,new ye(e),arguments)},Rectangle:function(){var e=ve.readNamed(arguments,"rectangle"),n=ye.readNamed(arguments,"radius",0,{readNull:!0}),i=e.getBottomLeft(!0),a=e.getTopLeft(!0),s=e.getTopRight(!0),o=e.getBottomRight(!0),l;if(!n||n.isZero())l=[new E(i),new E(a),new E(s),new E(o)];else{var m=(n=ye.min(n,e.getSize(!0).divide(2))).width,c=n.height,h=m*g,u=c*g;l=[new E(i.add(m,0),null,[-h,0]),new E(i.subtract(0,c),[0,u]),new E(a.add(0,c),null,[0,-u]),new E(a.add(m,0),[-h,0],null),new E(s.subtract(m,0),null,[h,0]),new E(s.add(0,c),[0,-u],null),new E(o.subtract(0,c),null,[0,u]),new E(o.subtract(m,0),[h,0])]}return p(l,!0,arguments)},RoundRectangle:"#Rectangle",Ellipse:function(){var t=m._readEllipse(arguments);return n(t.center,t.radius,arguments)},Oval:"#Ellipse",Arc:function(){var a=we.readNamed(arguments,"from"),e=we.readNamed(arguments,"through"),t=we.readNamed(arguments,"to"),n=he.getNamed(arguments),i=new C(n&&!1===n.insert&&_.NO_INSERT);return i.moveTo(a),i.arcTo(e,t),i.set(n)},RegularPolygon:function(){for(var n=we.readNamed(arguments,"center"),e=he.readNamed(arguments,"sides"),t=he.readNamed(arguments,"radius"),i=!(e%3),a=new we(0,i?-t:t),r=i?-1:.5,o=Array(e),s=0;sc?u=l._segment1:c>1-4e-7?u=l._segment2:(u=l.divide(c,!0,!0)._segment1,e&&g.push(u)),v._setSegment(u);var x=u._intersection,d=v._intersection;if(x){n(x,d);for(var f=x;f;)n(f._intersection,x),f=f._next}else u._intersection=d;w=l,y=b}a=0;for(var _=g.length;a<_;a++)g[a].clearHandles()}function d(s,e,t,n){var i=s.x,r=s.y,a=0,m=0,p=[],c=Me;if(t){for(var h=-1/0,g=1/0,I=0,A=e.length,D;Ih?h=j:j>r+2e-7&&j-1/0&&(a=d(new we(i,h),e,!1,n)),g<1/0&&(m=d(new we(i,g),e,!1,n))}else{var O=i-2e-7,C=i+2e-7,k=!1,G,V;for(I=0,A=e.length;I=D[1]&&r<=D[7]||r>=D[7]&&r<=D[1])&&1===_e.solveCubic(D,1,r,p,0,1)){var T=p[0];if(!(T>1-4e-7&&k&&M.next!==e[I+1]||4e-7>T&&V>1-4e-7&&M.previous===G)){var P=_e.getPoint(D,T).x,N=_e.getTangent(D,T).y,B=!1;ge.isZero(N)&&!_e.isStraight(D)||4e-7>T&&0>N*_e.getTangent(M.previous.values,1).y||T>1-4e-7&&0>N*_e.getTangent(M.next.values,0).y?n&&P>=O&&P<=C&&(++a,++m,B=!0):P<=O?(a+=z,B=!0):P>=C&&(m+=z,B=!0),M.previous!==e[I-1]&&(k=4e-7>T&&B)}G=M,V=T}}}return Ae(c(a),c(m))}function a(s,E,t,n,i){var r=[],a=s,o=0,C=0;do{var S=(b=s.getCurve()).getLength();r.push({segment:s,curve:b,length:S}),o+=S,s=s.getNext()}while(s&&!s._intersection&&s!==a);for(var z=0;3>z;z++){S=o*(z+1)/4;for(var T=0,B=r.length;TS||2e-7>m-S)&&(S=m/2);var p=(b=f.curve)._path,P=p._parent,w=b.getPointAt(S),y=b.isHorizontal(),b;P instanceof k&&(p=P),C+="subtract"===i&&t&&(p===E&&t._getWinding(w,y)||p===t&&!E._getWinding(w,y))?0:d(w,n,y);break}S-=m}}for(var L=Ie(C/3),x=r.length-1;0<=x;x--)r[x].segment._winding=L}function o(e,t){function d(r,e){if(r._visited)return!1;if(!a)return!0;var t=r._winding,o=r._intersection;return o&&e&&s&&o.isOverlap()&&(t=s[t]||t),a(t)}function l(t){return t===m||t===k}function n(o,s){if(!o._next)return o;for(;o;){var t=o._segment,n=t.getNext(),i=n._intersection;if(l(n)||!t._visited&&!n._visited&&(!a||(!s||d(t))&&(!(s&&i&&i.isOverlap())&&d(n)||!s&&i&&d(i._segment))))return o;o=o._next}return null}function c(a,i){for(;a;){var t=a._segment;if(l(t))return t;a=a[i?"_next":"_prev"]}}for(var h=[],a=i[t],s={unite:{1:2},intersect:{2:1}}[t],o=0,u=e.length,m,k;on?-1:1,previous:y,next:null};y&&(y.next=i),w.push(i),y=i}function n(n){if(0!==_e.getLength(n)){var e=n[1],t=n[3],i=n[5],r=n[7];if(_e.isStraight(n))d(n);else{var a=[],o=ge.solveQuadratic(3*(t-i)-e+r,2*(e+i)-4*t,t-e,a,4e-7,1-4e-7);if(0===o)d(n);else{a.sort();var s=a[0],l=_e.subdivide(n,s);d(l[0]),1=s[1]&&n<=s[7]||n>=s[7]&&n<=s[1])&&0<_e.solveCubic(s,1,n,t,0,1))for(var h=t.length-1;0<=h;h--)i.push(_e.getPoint(s,t[h]).x);if(1w&&!_e.isFlatEnough(e,p||.25)){var a=_e.subdivide(e,.5),o=(i+r)/2;n(a[0],t,i,o),n(a[1],t,o,r)}else{var l=e[6]-e[0],c=e[7]-e[1],d=je(l*l+c*c);1e-6=l){this.index=d;var i=this.parts[d-1],r=i&&i.index==s.index?i.value:0,a=i?i.offset:0;return{value:r+(s.value-r)*(l-a)/(s.offset-a),index:s.index}}var s;return{value:1,index:(s=this.parts[this.parts.length-1]).index}},drawPart:function(a,e,o){e=this.getParameterAt(e),o=this.getParameterAt(o);for(var s=e.index,l;s<=o.index;s++)l=_e.getPart(this.curves[s],s==e.index?e.value:0,s==o.index?o.value:1),s==e.index&&a.moveTo(l[0],l[1]),a.bezierCurveTo.apply(a,l.slice(2))}},he.each(_e.evaluateMethods,function(a){this[a+"At"]=function(e,t){var n=this.getParameterAt(e);return _e[a](this.curves[n.index],n.value,t)}},{})),f=he.extend({initialize:function(l,e){for(var t=this.points=[],i=l._segments,r=0,d=i.length,s,c;r=v;v++){var x=this.generateBezier(w,e,i,t,n),c=this.findMaxError(w,e,x,i);if(c.error=a)break;y=this.reparameterize(w,e,i,x),a=c.error}var h=this.points[b-1].subtract(this.points[b]),u=this.points[b].subtract(this.points[b+1]),d=h.add(u).divide(2).normalize();this.fitCubic(w,b,t,d),this.fitCubic(b,e,d.negate(),n)}else{var f=this.points[w],m=this.points[e],p=f.getDistance(m)/3;this.addCurve([f,f.add(t.normalize(p)),m.add(n.normalize(p)),m])}},addCurve:function(t){this.segments[this.segments.length-1].setHandleOut(t[1].subtract(t[0])),this.segments.push(new E(t[3],t[2].subtract(t[3])))},generateBezier:function(h,e,t,n,i){for(var r=this.points[h],a=this.points[e],s=[[0,0],[0,0]],o=[0,0],l=0;lS*S&&(b=E=S/3,N=I=null)}return[r,r.add(N||n.normalize(b)),a.add(I||i.normalize(E)),a]},reparameterize:function(o,e,t,n){for(var i=o;i<=e;i++)t[i-o]=this.findRoot(n,this.points[i],t[i-o]);i=1;for(var s=t.length;i=r;r++)n[r]=d[r+1].subtract(d[r]).multiply(3);for(r=0;1>=r;r++)i[r]=n[r+1].subtract(n[r]).multiply(2);var u=this.evaluate(3,d,t),s=this.evaluate(2,n,t),o=this.evaluate(1,i,t),l=u.subtract(e),c=s.dot(s)+l.dot(o);return 1e-6>Me(c)?t:t-l.dot(s)/c},evaluate:function(o,e,t){for(var n=e.slice(),i=1;i<=o;i++)for(var s=0;s<=o-i;s++)n[s]=n[s].multiply(1-t).add(n[s+1].multiply(t));return n[0]},chordLengthParameterize:function(a,e){for(var t=[0],n=a+1;n<=e;n++)t[n-a]=t[n-a-1]+this.points[n].getDistance(this.points[n-1]);n=1;for(var o=e-a;n<=o;n++)t[n]/=t[o];return t},findMaxError:function(d,e,t,n){for(var i=Le((e-d+1)/2),c=0,h=d+1;h=c&&(c=o,i=h)}return{error:c,index:i}}}),z=_.extend({_class:"TextItem",_boundsSelected:!0,_applyMatrix:!1,_canApplyMatrix:!1,_serializeFields:{content:null},_boundsGetter:"getBounds",initialize:function(n){this._content="",this._lines=[];var e=n&&he.isPlainObject(n)&&n.x===ce&&n.y===ce;this._initialize(e&&n,!e&&we.read(arguments))},_equals:function(t){return this._content===t._content},_clone:function a(e,t,n){return e.setContent(this._content),a.base.call(this,e,t,n)},getContent:function(){return this._content},setContent:function(t){this._content=""+t,this._lines=this._content.split(/\r\n|\n|\r/gm),this._changed(265)},isEmpty:function(){return!this._content},getCharacterStyle:"#getStyle",setCharacterStyle:"#setStyle",getParagraphStyle:"#getStyle",setParagraphStyle:"#setStyle"}),B=z.extend({_class:"PointText",initialize:function(){z.apply(this,arguments)},clone:function(t){return this._clone(new B(_.NO_INSERT),t)},getPoint:function(){var t=this._matrix.getTranslation();return new o(t.x,t.y,this,"setPoint")},setPoint:function(){var t=we.read(arguments);this.translate(t.subtract(this._matrix.getTranslation()))},_draw:function(l){if(this._content){this._setStyles(l);var e=this._style,t=this._lines,n=e.getLeading(),i=l.shadowColor;l.font=e.getFontStyle(),l.textAlign=e.getJustification();for(var r=0,d=t.length;rs?r/(n+i):r/(2-n-i),s]},"hsl-rgb":function(d,c,t){if(d=(d/360%1+1)%1,0===c)return[t,t,t];for(var n=[d+1/3,d,d-1/3],i=.5>t?t*(1+c):t+c-t*c,r=2*t-i,a=[],s=0,h;3>s;s++)h=n[s],0>h&&(h+=1),16*h?r+6*(i-r)*h:1>2*h?i:2>3*h?r+6*((i-r)*(2/3-h)):r;return a},"rgb-gray":function(a,e,t){return[.2989*a+.587*e+.114*t]},"gray-rgb":function(t){return[t,t,t]},"gray-hsb":function(t){return[0,0,t]},"gray-hsl":function(t){return[0,0,t]},"gradient-rgb":function(){return[]},"rgb-gradient":function(){return[]}},a;return he.each(f,function(n,o){t[o]=[],he.each(n,function(n,i){var e=he.capitalize(n),a=/^(hue|saturation)$/.test(n),r=t[o][i]="gradient"===n?function(n){var a=this._components[0];return a!==(n=L.read(Array.isArray(n)?n:arguments,0,{readNull:!0}))&&(a&&a._removeOwner(this),n&&n._addOwner(this)),n}:"gradient"===o?function(){return we.read(arguments,0,{readNull:"highlight"===n,clone:!0})}:function(t){return null==t||isNaN(t)?0:t};this["get"+e]=function(){return this._type===o||a&&/^hs[bl]$/.test(this._type)?this._components[i]:this._convert(o)[i]},this["set"+e]=function(t){this._type===o||a&&/^hs[bl]$/.test(this._type)||(this._components=this._convert(o),this._properties=f[o],this._type=o),this._components[i]=r.call(this,t),this._changed()}},this)},{_class:"Color",_readIndex:!0,initialize:function e(i){var r=Array.prototype.slice,h=arguments,_=0,E,C,k,S;Array.isArray(i)&&(i=(h=i)[0]);var z=null!=i&&typeof i;if("string"===z&&i in f&&(E=i,i=h[1],Array.isArray(i)?(C=i,k=h[2]):(this.__read&&(_=1),h=r.call(h,1),z=typeof i)),!C){if(S="number"===z?h:"object"===z&&null!=i.length?i:null){E||(E=3<=S.length?"rgb":"gray");var T=f[E].length;k=S[T],this.__read&&(_+=S===arguments?T+(null==k?0:1):1),S.length>T&&(S=r.call(S,0,T))}else if("string"===z)E="rgb",4===(C=function(e){var t=e.match(/^#(\w{1,2})(\w{1,2})(\w{1,2})$/),i;if(t){i=[0,0,0];for(var d=0,h;3>d;d++)h=t[d+1],i[d]=parseInt(1==h.length?h+h:h,16)/255}else if(t=e.match(/^rgba?\((.*)\)$/)){d=0;for(var u=(i=t[1].split(",")).length;dd?h/255:h}else{var o=n[e];if(!o){a||((a=X.getContext(1,1)).globalCompositeOperation="copy"),a.fillStyle="rgba(0,0,0,0)",a.fillStyle=e,a.fillRect(0,0,1,1);var m=a.getImageData(0,0,1,1).data;o=n[e]=[m[0]/255,m[1]/255,m[2]/255]}i=o.slice()}return i}(i)).length&&(k=C[3],C.length--);else if("object"===z)if(i.constructor===e){if(E=i._type,C=i._components.slice(),k=i._alpha,"gradient"===E)for(var p=1,B=C.length,P;pt?0:1r&&i.push(0>r?0:r),a?"#"+(16777216+(i[0]<<16)+(i[1]<<8)+i[2]).toString(16).slice(1):(4==i.length?"rgba(":"rgb(")+i.join(",")+")"},toCanvasStyle:function(m){if(this._canvasStyle)return this._canvasStyle;if("gradient"!==this._type)return this._canvasStyle=this.toCSS();var e=this._components,n=e[0],i=n._stops,r=e[1],a=e[2],s;if(n._radial){var p=a.getDistance(r),o=e[3];if(o){var g=o.subtract(r);g.getLength()>p&&(o=r.add(g.normalize(p-.1)))}var c=o||r;s=m.createRadialGradient(c.x,c.y,0,r.x,r.y,p)}else s=m.createLinearGradient(r.x,r.y,a.x,a.y);for(var h=0,w=i.length,d;ha.length)throw new Error("Gradient stop list needs to contain at least two stops.");for(this._stops=N.readAll(a,0,{clone:!0}),e=0,r=this._stops.length;ea;a++){var c=i[a],o=c?c+r:e;if(o in d){if(!t)return d[o];d[o]=n;break}}}return{getStyles:function(a){var e=a&&9!==a.nodeType?a.ownerDocument:a,t=e&&e.defaultView;return t&&t.getComputedStyle(a,"")},getBounds:function(d,e){var t=d.ownerDocument,i=t.body,r=t.documentElement,a;try{a=d.getBoundingClientRect()}catch(t){a={left:0,top:0,width:0,height:0}}var c=a.left-(r.clientLeft||i.clientLeft||0),h=a.top-(r.clientTop||i.clientTop||0);if(!e){var u=t.defaultView;c+=u.pageXOffset||r.scrollLeft||i.scrollLeft,h+=u.pageYOffset||r.scrollTop||i.scrollTop}return new ve(c,h,a.width,a.height)},getViewportBounds:function(a){var e=a.ownerDocument,t=e.defaultView,n=e.documentElement;return new ve(0,0,t.innerWidth||n.clientWidth,t.innerHeight||n.clientHeight)},getOffset:function(n,e){return A.getBounds(n,e).getPoint()},getSize:function(t){return A.getBounds(t,!0).getSize()},isInvisible:function(t){return A.getSize(t).equals(new ye(0,0))},isInView:function(t){return!A.isInvisible(t)&&A.getViewportBounds(t).intersects(A.getBounds(t,!0))},getPrefixed:function(e,t){return a(e,t)},setPrefixed:function(e,t,n){if("object"==typeof t)for(var i in t)a(e,i,!0,t[i]);else a(e,t,!0,n)}}},D={add:function(o,e){for(var t in e)for(var n=e[t],i=t.split(/[\s,]+/g),r=0,l=i.length;rDate.now()-E,y=v=i,c=f=w=t,x=!r&&i;x&&!x.responds("mousedrag");)x=x._parent;break;case"mouseup":r=g(this,e,n,t,i,c),x&&(f&&!f.equals(t)&&g(this,"mousedrag",n,t,x,f),i!==x&&g(this,"mousemove",n,t,i,w=t)),!r&&i&&i===y&&(E=Date.now(),g(this,_&&y.responds("doubleclick")?"doubleclick":"click",n,c,i),_=!1),y=x=null;break;case"mousemove":x&&(r=g(this,"mousedrag",n,t,x,f)),r||(i!==b&&(w=t),r=g(this,e,n,t,i,w)),f=w=t,i!==b&&(g(this,"mouseleave",n,t,b),b=i,g(this,"mouseenter",n,t,i));}return r}}}}),O=he.extend({_class:"Event",initialize:function(t){this.event=t},isPrevented:!1,isStopped:!1,preventDefault:function(){this.isPrevented=!0,this.event.preventDefault()},stopPropagation:function(){this.isStopped=!0,this.event.stopPropagation()},stop:function(){this.stopPropagation(),this.preventDefault()},getModifiers:function(){return M.modifiers}}),G=O.extend({_class:"KeyEvent",initialize:function(a,e,t,n){O.call(this,n),this.type=a?"keydown":"keyup",this.key=e,this.character=t},toString:function(){return"{ type: '"+this.type+"', key: '"+this.key+"', character: '"+this.character+"', modifiers: "+this.getModifiers()+" }"}}),M=new function(){function o(e,t,n,i){var l=n?String.fromCharCode(n):"",h=c[t],u=h||l.toLowerCase(),m=e?"keydown":"keyup",p=q._focused,g=p&&p.isVisible()&&p._scope,f=g&&g.tool,w;if(r[u]=e,e?a[t]=n:delete a[t],h&&(w=he.camelize(h))in _){_[w]=e;var y=le.browser;if("command"===w&&y&&y.mac)if(e)s={};else{for(var v in s)v in a&&o(!1,v,s[v],i);s=null}}else e&&s&&(s[t]=n);f&&f.responds(m)&&(le=g,f.emit(m,new G(e,u,l,i)),p&&p.update())}var c={8:"backspace",9:"tab",13:"enter",16:"shift",17:"control",18:"option",19:"pause",20:"caps-lock",27:"escape",32:"space",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",46:"delete",91:"command",93:"command",224:"command"},n={9:!0,13:!0,32:!0},_=new he({shift:!1,control:!1,option:!1,command:!1,capsLock:!1,space:!1}),a={},r={},s,i;return D.add(document,{keydown:function(t){var e=t.which||t.keyCode;e in c||_.command?o(!0,e,e in n||_.command?e:0,t):i=e},keypress:function(t){null!=i&&(o(!0,i,t.which||t.keyCode,t),i=null)},keyup:function(n){var e=n.which||n.keyCode;e in a&&o(!1,e,a[e],n)}}),D.add(window,{blur:function(n){for(var e in a)o(!1,e,a[e],n)}}),{modifiers:_,isDown:function(t){return!!r[t]}}},F=O.extend({_class:"MouseEvent",initialize:function(a,e,t,n,i){O.call(this,e),this.type=a,this.point=t,this.target=n,this.delta=i},toString:function(){return"{ type: '"+this.type+"', point: "+this.point+", target: "+this.target+(this.delta?", delta: "+this.delta:"")+", modifiers: "+this.getModifiers()+" }"}}),W=O.extend({_class:"ToolEvent",_item:null,initialize:function(a,e,t){this.tool=a,this.type=e,this.event=t},_choosePoint:function(n,e){return n||(e?e.clone():null)},getPoint:function(){return this._choosePoint(this._point,this.tool._point)},setPoint:function(t){this._point=t},getLastPoint:function(){return this._choosePoint(this._lastPoint,this.tool._lastPoint)},setLastPoint:function(t){this._lastPoint=t},getDownPoint:function(){return this._choosePoint(this._downPoint,this.tool._downPoint)},setDownPoint:function(t){this._downPoint=t},getMiddlePoint:function(){return!this._middlePoint&&this.tool._lastPoint?this.tool._point.add(this.tool._lastPoint).divide(2):this._middlePoint},setMiddlePoint:function(t){this._middlePoint=t},getDelta:function(){return!this._delta&&this.tool._lastPoint?this.tool._point.subtract(this.tool._lastPoint):this._delta},setDelta:function(t){this._delta=t},getCount:function(){return /^mouse(down|up)$/.test(this.type)?this.tool._downCount:this.tool._count},setCount:function(t){this.tool[/^mouse(down|up)$/.test(this.type)?"downCount":"count"]=t},getItem:function(){if(!this._item){var a=this.tool._scope.project.hitTest(this.getPoint());if(a){for(var e=a.item,i=e._parent;/^(Group|CompoundPath)$/.test(i._class);)e=i,i=i._parent;this._item=e}}return this._item},setItem:function(t){this._item=t},toString:function(){return"{ type: "+this.type+", point: "+this.getPoint()+", count: "+this.getCount()+", modifiers: "+this.getModifiers()+" }"}}),R=(i.extend({_class:"Tool",_list:"tools",_reference:"tool",_events:["onActivate","onDeactivate","onEditOptions","onMouseDown","onMouseUp","onMouseDrag","onMouseMove","onKeyDown","onKeyUp"],initialize:function(t){i.call(this),this._firstMove=!0,this._count=0,this._downCount=0,this._set(t)},getMinDistance:function(){return this._minDistance},setMinDistance:function(t){this._minDistance=t,null!=t&&null!=this._maxDistance&&t>this._maxDistance&&(this._maxDistance=t)},getMaxDistance:function(){return this._maxDistance},setMaxDistance:function(t){this._maxDistance=t,null!=this._minDistance&&null!=t&&tn)e=this._point.add(o.normalize(n));else if(a)return!1}if(r&&e.equals(this._point))return!1}switch(this._lastPoint=i&&"mousemove"==d?e:this._point,this._point=e,d){case"mousedown":this._lastPoint=this._downPoint,this._downPoint=this._point,this._downCount++;break;case"mouseup":this._lastPoint=this._downPoint;}return this._count=i?0:this._count+1,!0},_fireEvent:function(a,e){var t=le.project._removeSets;if(t){"mouseup"===a&&(t.mousedrag=null);var n=t[a];if(n){for(var i in n){var r=n[i];for(var s in t){var o=t[s];o&&o!=n&&delete o[r._id]}r.remove()}t[a]=null}}return this.responds(a)&&this.emit(a,new W(this,a,e))},_handleEvent:function(a,e,t){le=this._scope;var n=!1;switch(a){case"mousedown":this._updateEvent(a,e,null,null,!0,!1,!1),n=this._fireEvent(a,t);break;case"mousedrag":for(var o=!1,l=!1;this._updateEvent(a,e,this.minDistance,this.maxDistance,!1,o,l);)n=this._fireEvent(a,t)||n,o=!0,l=!0;break;case"mouseup":!e.equals(this._point)&&this._updateEvent("mousedrag",e,this.minDistance,this.maxDistance,!1,!1,!1)&&(n=this._fireEvent("mousedrag",t)),this._updateEvent(a,e,null,this.maxDistance,!1,!1,!1),n=this._fireEvent(a,t)||n,this._updateEvent(a,e,null,null,!0,!1,!1),this._firstMove=!0;break;case"mousemove":for(;this._updateEvent(a,e,this.minDistance,this.maxDistance,this._firstMove,!0,!1);)n=this._fireEvent(a,t)||n,this._firstMove=!1;}return n&&t.preventDefault(),n}}),{request:function(a,o,t,e){e=e===ce||e;var n=new(window.ActiveXObject||XMLHttpRequest)("Microsoft.XMLHTTP");return n.open(a.toUpperCase(),o,e),"overrideMimeType"in n&&n.overrideMimeType("text/plain"),n.onreadystatechange=function(){if(4===n.readyState){var a=n.status;if(0!==a&&200!==a)throw new Error("Could not load "+o+" (Error "+a+")");t.call(n,n.responseText)}},n.send(null)}}),X={canvases:[],getCanvas:function(a,r){var o;"object"==typeof a&&(r=a.height,a=a.width);var s=(o=this.canvases.length?this.canvases.pop():document.createElement("canvas")).getContext("2d");return o.width===a&&o.height===r?s.clearRect(0,0,a+1,r+1):(o.width=a,o.height=r),s.save(),o},getContext:function(n,e){return this.getCanvas(n,e).getContext("2d")},release:function(n){var e=n.canvas?n.canvas:n;e.getContext("2d").restore(),this.canvases.push(e)}},H=new function(){function _(a,e,t){return .2989*a+.587*e+.114*t}function o(c,e,t,n){var h=n-_(c,e,t),r=(n=_(I=c+h,A=e+h,D=t+h),w(I,A,D)),a=d(I,A,D);if(0>r){var s=n-r;I=n+(I-n)*n/s,A=n+(A-n)*n/s,D=n+(D-n)*n/s}if(255i[c]?(i[h]=(i[h]-i[c])*n/(i[a]-i[c]),i[a]=n):i[h]=i[a]=0,i[c]=0,I=i[0],A=i[1],D=i[2]}var w=V,d=Ae,f=Me,v={multiply:function(){I=B*b/255,A=P*x/255,D=L*k/255},screen:function(){I=B+b-B*b/255,A=P+x-P*x/255,D=L+k-L*k/255},overlay:function(){I=128>B?2*B*b/255:255-2*(255-B)*(255-b)/255,A=128>P?2*P*x/255:255-2*(255-P)*(255-x)/255,D=128>L?2*L*k/255:255-2*(255-L)*(255-k)/255},"soft-light":function(){var e=b*B/255;I=e+B*(255-(255-B)*(255-b)/255-e)/255,A=(e=x*P/255)+P*(255-(255-P)*(255-x)/255-e)/255,D=(e=k*L/255)+L*(255-(255-L)*(255-k)/255-e)/255},"hard-light":function(){I=128>b?2*b*B/255:255-2*(255-b)*(255-B)/255,A=128>x?2*x*P/255:255-2*(255-x)*(255-P)/255,D=128>k?2*k*L/255:255-2*(255-k)*(255-L)/255},"color-dodge":function(){I=0===B?0:255===b?255:w(255,255*B/(255-b)),A=0===P?0:255===x?255:w(255,255*P/(255-x)),D=0===L?0:255===k?255:w(255,255*L/(255-k))},"color-burn":function(){I=255===B?255:0===b?0:d(0,255-255*(255-B)/b),A=255===P?255:0===x?0:d(0,255-255*(255-P)/x),D=255===L?255:0===k?0:d(0,255-255*(255-L)/k)},darken:function(){I=Bb?B:b,A=P>x?P:x,D=L>k?L:k},difference:function(){0>(I=B-b)&&(I=-I),0>(A=P-x)&&(A=-A),0>(D=L-k)&&(D=-D)},exclusion:function(){I=B+b*(255-B-B)/255,A=P+x*(255-P-P)/255,D=L+k*(255-L-L)/255},hue:function(){g(b,x,k,p(B,P,L)),o(I,A,D,_(B,P,L))},saturation:function(){g(B,P,L,p(b,x,k)),o(I,A,D,_(B,P,L))},luminosity:function(){o(B,P,L,_(b,x,k))},color:function(){o(b,x,k,_(B,P,L))},add:function(){I=w(B+b,255),A=w(P+x,255),D=w(L+k,255)},subtract:function(){I=d(B-b,0),A=d(P-x,0),D=d(L-k,0)},average:function(){I=(B+b)/2,A=(P+x)/2,D=(L+k)/2},negation:function(){I=255-f(255-b-B),A=255-f(255-x-P),D=255-f(255-k-L)}},y=this.nativeModes=he.each(["source-over","source-in","source-out","source-atop","destination-over","destination-in","destination-out","destination-atop","lighter","darker","copy","xor"],function(t){this[t]=!0},{}),m=X.getContext(1,1),b,x,k,T,B,P,L,N,I,A,D;he.each(v,function(a,e){var t="darken"===e,n=!1;m.save();try{m.fillStyle=t?"#300":"#a00",m.fillRect(0,0,1,1),m.globalCompositeOperation=e,m.globalCompositeOperation===e&&(m.fillStyle=t?"#a00":"#300",m.fillRect(0,0,1,1),n=m.getImageData(0,0,1,1).data[0]===t?51:170)}catch(t){}m.restore(),y[e]=n}),X.release(m),this.process=function(e,t,n,a,i){var r=t.canvas,o="normal"===e;if(o||y[e])n.save(),n.setTransform(1,0,0,1,0,0),n.globalAlpha=a,o||(n.globalCompositeOperation=e),n.drawImage(r,i.x,i.y),n.restore();else{var s=v[e];if(!s)return;for(var l=n.getImageData(i.x,i.y,r.width,r.height),d=l.data,c=t.getImageData(0,0,r.width,r.height).data,h=0,u=d.length;hs&&(i[n.attribute+"-opacity"]=s)}i[n.attribute]=null==a?"none":"number"===r?p.number(a):"color"===r?a.gradient?function(n){var e=b(n,"color");if(!e){var h=n.getGradient(),r=h._radial,a=n.getOrigin().transform(),s=n.getDestination().transform(),o;if(r){o={cx:a.x,cy:a.y,r:a.getDistance(s)};var f=n.getHighlight();f&&(f=f.transform(),o.fx=f.x,o.fy=f.y)}else o={x1:a.x,y1:a.y,x2:s.x,y2:s.y};o.gradientUnits="userSpaceOnUse",e=v((r?"radial":"linear")+"Gradient",o);for(var w=h._stops,c=0,y=w.length;cp&&(o["stop-opacity"]=p),e.appendChild(v("stop",o))}x(n,e,"color")}return"url(#"+e.id+")"}(a):a.toCSS(!0):"array"===r?a.join(","):"lookup"===r?n.toSVG[a]:a}}),1===i.opacity&&delete i.opacity,e._visible||(i.visibility="hidden"),y(t,i)}function b(n,e){return l||(l={ids:{},svgs:{}}),n&&l.svgs[e+"-"+n._id]}function x(a,e,t){l||b();var n=l.ids[t]=(l.ids[t]||0)+1;e.id=t+"-"+n,l.svgs[t+"-"+a._id]=e}function d(n,e){var t=n,o=null;if(l){for(var s in t="svg"===n.nodeName.toLowerCase()&&n,l.svgs)o||(t||(t=v("svg")).appendChild(n),o=t.insertBefore(v("defs"),t.firstChild)),o.appendChild(l.svgs[s]);l=null}return e.asString?new XMLSerializer().serializeToString(t):t}function m(l,e,t){var n=c[l._class],i=n&&n(l,e);if(i){var d=e.onExport;d&&(i=d(l,i,e)||i);var a=JSON.stringify(l._data);a&&"{}"!==a&&"null"!==a&&i.setAttribute("data-paper-data",a)}return i&&o(l,i,t)}function u(e){return e||(e={}),p=new pe(e.precision),e}var c={Group:t,Layer:t,Raster:function(i,e){var t=n(i._matrix,!0),r=i.getSize(),a=i.getImage();return t.x-=r.width/2,t.y-=r.height/2,t.width=r.width,t.height=r.height,t.href=!1===e.embedImages&&a&&a.src||i.toDataURL(),v("image",t)},Path:function(e,t){var a=t.matchShapes;if(a){var r=e.toShape(!1);if(r)return i(r)}var o=e._segments,s=n(e._matrix),c;if(0===o.length)return null;if(!a||e.hasHandles())c="path",s.d=e.getPathData(null,t.precision);else if(3<=o.length){c=e._closed?"polygon":"polyline";for(var h=[],u=0,g=o.length;u and ending at the value listed on top of the \u03A3)."),h.createElement("div",{className:"howtocode"},h.createElement("h3",{id:"how-to-implement-the-basis-function"},"How to implement the basis function"),h.createElement("p",null,"We could naively implement the basis function as a mathematical construct, using the function as our guide, like this:"),h.createElement("pre",null,"function Bezier(n,t):\n sum = 0\n for(k=0; k= lut.length):\n s = lut.length\n nextRow = new array(size=s+1)\n nextRow[0] = 1\n for(i=1, prev=s-1; i