tuo-verb
Version:
A CAD library for the web
6 lines • 141 kB
JavaScript
/*! verb 2023-03-20 */
!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.verb=a()}}(function(){var a={},b=this,c=(new Function("try {return this===window;}catch(e){ return false;}"),new Function("try {return this===global;}catch(e){return false;}")),d=new Function("try {return typeof importScripts === 'function';}catch(e){return false;}");if(c()&&d(),c()||d()){var e=b;if(d()){var f=function(a,c){var d=b;return a.split(".").forEach(function(a){d&&(d=d[a])}),d?d[c]:null};onmessage=function(a){if(a.data.className&&a.data.methodName){var b=f(a.data.className,a.data.methodName);if(!b)return console.error("could not find "+a.data.className+"."+a.data.methodName);postMessage({result:b.apply(null,a.data.args),id:a.data.id})}}}}return function(a,b,c){"use strict";function d(a,b){function c(){}c.prototype=a;var d=new c;for(var e in b)d[e]=b[e];return b.toString!==Object.prototype.toString&&(d.toString=b.toString),d}function e(a){return a instanceof Array?function(){return i.iter(a)}:"function"==typeof a.iterator?f(a,a.iterator):a.iterator}function f(a,b){if(null==b)return null;null==b.__id__&&(b.__id__=ib++);var c;return null==a.hx__closures__?a.hx__closures__={}:c=a.hx__closures__[b.__id__],null==c&&(c=function(){return c.method.apply(c.scope,arguments)},c.scope=a,c.method=b,a.hx__closures__[b.__id__]=c),c}b.geom=b.geom||{},b.exe=b.exe||{},b.eval=b.eval||{},b.core=b.core||{},b.promhx=b.promhx||{};var g={},h=function(){return D.__string_rec(this,"")},i=function(){};g.HxOverrides=i,i.__name__=["HxOverrides"],i.strDate=function(a){switch(a.length){case 8:var b=a.split(":"),c=new Date;return c.setTime(0),c.setUTCHours(b[0]),c.setUTCMinutes(b[1]),c.setUTCSeconds(b[2]),c;case 10:var d=a.split("-");return new Date(d[0],d[1]-1,d[2],0,0,0);case 19:var e=a.split(" "),f=e[0].split("-"),g=e[1].split(":");return new Date(f[0],f[1]-1,f[2],g[0],g[1],g[2]);default:throw new C("Invalid date format : "+a)}},i.cca=function(a,b){var c=a.charCodeAt(b);if(c==c)return c},i.substr=function(a,b,c){return null!=b&&0!=b&&null!=c&&c<0?"":(null==c&&(c=a.length),b<0?(b=a.length+b)<0&&(b=0):c<0&&(c=a.length+c-b),a.substr(b,c))},i.iter=function(a){return{cur:0,arr:a,hasNext:function(){return this.cur<this.arr.length},next:function(){return this.arr[this.cur++]}}};var j=function(){};g.Lambda=j,j.__name__=["Lambda"],j.fold=function(a,b,c){for(var d=e(a)();d.hasNext();){c=b(d.next(),c)}return c};var k=function(){this.length=0};g.List=k,k.__name__=["List"],k.prototype={add:function(a){var b=[a];null==this.h?this.h=b:this.q[1]=b,this.q=b,this.length++},pop:function(){if(null==this.h)return null;var a=this.h[0];return this.h=this.h[1],null==this.h&&(this.q=null),this.length--,a},isEmpty:function(){return null==this.h},__class__:k},Math.__name__=["Math"];var l=function(){};g.Reflect=l,l.__name__=["Reflect"],l.field=function(a,b){try{return a[b]}catch(c){return c instanceof C&&(c=c.val),null}},l.callMethod=function(a,b,c){return b.apply(a,c)},l.fields=function(a){var b=[];if(null!=a){var c=Object.prototype.hasOwnProperty;for(var d in a)"__id__"!=d&&"hx__closures__"!=d&&c.call(a,d)&&b.push(d)}return b},l.isFunction=function(a){return"function"==typeof a&&!(a.__name__||a.__ename__)},l.deleteField=function(a,b){return!!Object.prototype.hasOwnProperty.call(a,b)&&(delete a[b],!0)};var m=function(){};g.Std=m,m.__name__=["Std"],m.string=function(a){return D.__string_rec(a,"")},m.parseFloat=function(a){return parseFloat(a)};var n=function(){this.b=""};g.StringBuf=n,n.__name__=["StringBuf"],n.prototype={add:function(a){this.b+=m.string(a)},__class__:n};var o=function(){};g.StringTools=o,o.__name__=["StringTools"],o.fastCodeAt=function(a,b){return a.charCodeAt(b)};var p=g.ValueType={__ename__:["ValueType"],__constructs__:["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"]};p.TNull=["TNull",0],p.TNull.toString=h,p.TNull.__enum__=p,p.TInt=["TInt",1],p.TInt.toString=h,p.TInt.__enum__=p,p.TFloat=["TFloat",2],p.TFloat.toString=h,p.TFloat.__enum__=p,p.TBool=["TBool",3],p.TBool.toString=h,p.TBool.__enum__=p,p.TObject=["TObject",4],p.TObject.toString=h,p.TObject.__enum__=p,p.TFunction=["TFunction",5],p.TFunction.toString=h,p.TFunction.__enum__=p,p.TClass=function(a){var b=["TClass",6,a];return b.__enum__=p,b.toString=h,b},p.TEnum=function(a){var b=["TEnum",7,a];return b.__enum__=p,b.toString=h,b},p.TUnknown=["TUnknown",8],p.TUnknown.toString=h,p.TUnknown.__enum__=p;var q=function(){};g.Type=q,q.__name__=["Type"],q.getClassName=function(a){var b=a.__name__;return null==b?null:b.join(".")},q.getEnumName=function(a){return a.__ename__.join(".")},q.resolveClass=function(a){var b=g[a];return null!=b&&b.__name__?b:null},q.resolveEnum=function(a){var b=g[a];return null!=b&&b.__ename__?b:null},q.createEmptyInstance=function(a){function b(){}return b.prototype=a.prototype,new b},q.createEnum=function(a,b,c){var d=l.field(a,b);if(null==d)throw new C("No such constructor "+b);if(l.isFunction(d)){if(null==c)throw new C("Constructor "+b+" need parameters");return l.callMethod(a,d,c)}if(null!=c&&0!=c.length)throw new C("Constructor "+b+" does not need parameters");return d},q.getEnumConstructs=function(a){return a.__constructs__.slice()},q.typeof=function(a){switch(typeof a){case"boolean":return p.TBool;case"string":return p.TClass(String);case"number":return Math.ceil(a)==a%2147483648?p.TInt:p.TFloat;case"object":if(null==a)return p.TNull;var b=a.__enum__;if(null!=b)return p.TEnum(b);var c=D.getClass(a);return null!=c?p.TClass(c):p.TObject;case"function":return a.__name__||a.__ename__?p.TObject:p.TFunction;case"undefined":return p.TNull;default:return p.TUnknown}};var r=function(){};g["haxe.IMap"]=r,r.__name__=["haxe","IMap"];var s=function(a,b){this.high=a,this.low=b};g["haxe._Int64.___Int64"]=s,s.__name__=["haxe","_Int64","___Int64"],s.prototype={__class__:s};var t=function(){this.buf=new n,this.cache=[],this.useCache=t.USE_CACHE,this.useEnumIndex=t.USE_ENUM_INDEX,this.shash=new y,this.scount=0};g["haxe.Serializer"]=t,t.__name__=["haxe","Serializer"],t.prototype={toString:function(){return this.buf.b},serializeString:function(a){var b=this.shash.get(a);if(null!=b)return this.buf.b+="R",void(this.buf.b+=null==b?"null":""+b);this.shash.set(a,this.scount++),this.buf.b+="y",a=encodeURIComponent(a),null==a.length?this.buf.b+="null":this.buf.b+=""+a.length,this.buf.b+=":",this.buf.b+=null==a?"null":""+a},serializeRef:function(a){for(var b=typeof a,c=0,d=this.cache.length;c<d;){var e=c++,f=this.cache[e];if(typeof f==b&&f==a)return this.buf.b+="r",this.buf.b+=null==e?"null":""+e,!0}return this.cache.push(a),!1},serializeFields:function(a){for(var b=0,c=l.fields(a);b<c.length;){var d=c[b];++b,this.serializeString(d),this.serialize(l.field(a,d))}this.buf.b+="g"},serialize:function(a){var b=q.typeof(a);switch(b[1]){case 0:this.buf.b+="n";break;case 1:var c=a;if(0==c)return void(this.buf.b+="z");this.buf.b+="i",this.buf.b+=null==c?"null":""+c;break;case 2:var d=a;isNaN(d)?this.buf.b+="k":isFinite(d)?(this.buf.b+="d",this.buf.b+=null==d?"null":""+d):this.buf.b+=d<0?"m":"p";break;case 3:this.buf.b+=a?"t":"f";break;case 6:var e=b[2];if(e==String)return void this.serializeString(a);if(this.useCache&&this.serializeRef(a))return;switch(e){case Array:var f=0;this.buf.b+="a";for(var g=a.length,h=0;h<g;){var i=h++;null==a[i]?f++:(f>0&&(1==f?this.buf.b+="n":(this.buf.b+="u",this.buf.b+=null==f?"null":""+f),f=0),this.serialize(a[i]))}f>0&&(1==f?this.buf.b+="n":(this.buf.b+="u",this.buf.b+=null==f?"null":""+f)),this.buf.b+="h";break;case k:this.buf.b+="l";for(var j=a,o=j.h,p=null;null!=o;){var r;p=o[0],o=o[1],r=p,this.serialize(r)}this.buf.b+="h";break;case Date:var s=a;this.buf.b+="v",this.buf.add(s.getTime());break;case y:this.buf.b+="b";for(var u=a,x=u.keys();x.hasNext();){var A=x.next();this.serializeString(A),this.serialize(null!=pb[A]?u.getReserved(A):u.h[A])}this.buf.b+="h";break;case v:this.buf.b+="q";for(var B=a,E=B.keys();E.hasNext();){var F=E.next();this.buf.b+=":",this.buf.b+=null==F?"null":""+F,this.serialize(B.h[F])}this.buf.b+="h";break;case w:this.buf.b+="M";for(var G=a,H=G.keys();H.hasNext();){var I=H.next(),J=l.field(I,"__id__");l.deleteField(I,"__id__"),this.serialize(I),I.__id__=J,this.serialize(G.h[I.__id__])}this.buf.b+="h";break;case z:for(var K=a,L=0,M=K.length-2,N=new n,O=t.BASE64;L<M;){var P=K.get(L++),Q=K.get(L++),R=K.get(L++);N.add(O.charAt(P>>2)),N.add(O.charAt(63&(P<<4|Q>>4))),N.add(O.charAt(63&(Q<<2|R>>6))),N.add(O.charAt(63&R))}if(L==M){var S=K.get(L++),T=K.get(L++);N.add(O.charAt(S>>2)),N.add(O.charAt(63&(S<<4|T>>4))),N.add(O.charAt(T<<2&63))}else if(L==M+1){var U=K.get(L++);N.add(O.charAt(U>>2)),N.add(O.charAt(U<<4&63))}var V=N.b;this.buf.b+="s",null==V.length?this.buf.b+="null":this.buf.b+=""+V.length,this.buf.b+=":",this.buf.b+=null==V?"null":""+V;break;default:this.useCache&&this.cache.pop(),null!=a.hxSerialize?(this.buf.b+="C",this.serializeString(q.getClassName(e)),this.useCache&&this.cache.push(a),a.hxSerialize(this),this.buf.b+="g"):(this.buf.b+="c",this.serializeString(q.getClassName(e)),this.useCache&&this.cache.push(a),this.serializeFields(a))}break;case 4:if(D.__instanceof(a,nb)){var W=q.getClassName(a);this.buf.b+="A",this.serializeString(W)}else if(D.__instanceof(a,ob))this.buf.b+="B",this.serializeString(q.getEnumName(a));else{if(this.useCache&&this.serializeRef(a))return;this.buf.b+="o",this.serializeFields(a)}break;case 7:var X=b[2];if(this.useCache){if(this.serializeRef(a))return;this.cache.pop()}this.useEnumIndex?this.buf.b+="j":this.buf.b+="w",this.serializeString(q.getEnumName(X)),this.useEnumIndex?(this.buf.b+=":",this.buf.b+=m.string(a[1])):this.serializeString(a[0]),this.buf.b+=":";var Y=a.length;this.buf.b+=m.string(Y-2);for(var Z=2;Z<Y;){var $=Z++;this.serialize(a[$])}this.useCache&&this.cache.push(a);break;case 5:throw new C("Cannot serialize function");default:throw new C("Cannot serialize "+m.string(a))}},__class__:t};var u=function(a){this.buf=a,this.length=a.length,this.pos=0,this.scache=[],this.cache=[];var b=u.DEFAULT_RESOLVER;null==b&&(b=q,u.DEFAULT_RESOLVER=b),this.setResolver(b)};g["haxe.Unserializer"]=u,u.__name__=["haxe","Unserializer"],u.initCodes=function(){for(var a=[],b=0,c=u.BASE64.length;b<c;){var d=b++;a[u.BASE64.charCodeAt(d)]=d}return a},u.prototype={setResolver:function(a){this.resolver=null==a?{resolveClass:function(a){return null},resolveEnum:function(a){return null}}:a},get:function(a){return this.buf.charCodeAt(a)},readDigits:function(){for(var a=0,b=!1,c=this.pos;;){var d=this.buf.charCodeAt(this.pos);if(d!=d)break;if(45!=d){if(d<48||d>57)break;a=10*a+(d-48),this.pos++}else{if(this.pos!=c)break;b=!0,this.pos++}}return b&&(a*=-1),a},readFloat:function(){for(var a=this.pos;;){var b=this.buf.charCodeAt(this.pos);if(!(b>=43&&b<58||101==b||69==b))break;this.pos++}return m.parseFloat(i.substr(this.buf,a,this.pos-a))},unserializeObject:function(a){for(;;){if(this.pos>=this.length)throw new C("Invalid object");if(103==this.buf.charCodeAt(this.pos))break;var b=this.unserialize();if("string"!=typeof b)throw new C("Invalid object key");var c=this.unserialize();a[b]=c}this.pos++},unserializeEnum:function(a,b){if(58!=this.get(this.pos++))throw new C("Invalid enum format");var c=this.readDigits();if(0==c)return q.createEnum(a,b);for(var d=[];c-- >0;)d.push(this.unserialize());return q.createEnum(a,b,d)},unserialize:function(){switch(this.get(this.pos++)){case 110:return null;case 116:return!0;case 102:return!1;case 122:return 0;case 105:return this.readDigits();case 100:return this.readFloat();case 121:var a=this.readDigits();if(58!=this.get(this.pos++)||this.length-this.pos<a)throw new C("Invalid string length");var b=i.substr(this.buf,this.pos,a);return this.pos+=a,b=decodeURIComponent(b.split("+").join(" ")),this.scache.push(b),b;case 107:return NaN;case 109:return-1/0;case 112:return 1/0;case 97:var c=(this.buf,[]);for(this.cache.push(c);;){var d=this.buf.charCodeAt(this.pos);if(104==d){this.pos++;break}if(117==d){this.pos++;var e=this.readDigits();c[c.length+e-1]=null}else c.push(this.unserialize())}return c;case 111:var f={};return this.cache.push(f),this.unserializeObject(f),f;case 114:var g=this.readDigits();if(g<0||g>=this.cache.length)throw new C("Invalid reference");return this.cache[g];case 82:var h=this.readDigits();if(h<0||h>=this.scache.length)throw new C("Invalid string reference");return this.scache[h];case 120:throw new C(this.unserialize());case 99:var j=this.unserialize(),l=this.resolver.resolveClass(j);if(null==l)throw new C("Class not found "+j);var m=q.createEmptyInstance(l);return this.cache.push(m),this.unserializeObject(m),m;case 119:var n=this.unserialize(),p=this.resolver.resolveEnum(n);if(null==p)throw new C("Enum not found "+n);var r=this.unserializeEnum(p,this.unserialize());return this.cache.push(r),r;case 106:var s=this.unserialize(),t=this.resolver.resolveEnum(s);if(null==t)throw new C("Enum not found "+s);this.pos++;var x=this.readDigits(),A=q.getEnumConstructs(t)[x];if(null==A)throw new C("Unknown enum index "+s+"@"+x);var B=this.unserializeEnum(t,A);return this.cache.push(B),B;case 108:var D=new k;for(this.cache.push(D),this.buf;104!=this.buf.charCodeAt(this.pos);)D.add(this.unserialize());return this.pos++,D;case 98:var E=new y;for(this.cache.push(E),this.buf;104!=this.buf.charCodeAt(this.pos);){var F=this.unserialize();E.set(F,this.unserialize())}return this.pos++,E;case 113:var G=new v;this.cache.push(G);for(var H=(this.buf,this.get(this.pos++));58==H;){var I=this.readDigits();G.set(I,this.unserialize()),H=this.get(this.pos++)}if(104!=H)throw new C("Invalid IntMap format");return G;case 77:var J=new w;for(this.cache.push(J),this.buf;104!=this.buf.charCodeAt(this.pos);){var K=this.unserialize();J.set(K,this.unserialize())}return this.pos++,J;case 118:var L;if(this.buf.charCodeAt(this.pos)>=48&&this.buf.charCodeAt(this.pos)<=57&&this.buf.charCodeAt(this.pos+1)>=48&&this.buf.charCodeAt(this.pos+1)<=57&&this.buf.charCodeAt(this.pos+2)>=48&&this.buf.charCodeAt(this.pos+2)<=57&&this.buf.charCodeAt(this.pos+3)>=48&&this.buf.charCodeAt(this.pos+3)<=57&&45==this.buf.charCodeAt(this.pos+4)){var M=i.substr(this.buf,this.pos,19);L=i.strDate(M),this.pos+=19}else{var N=this.readFloat(),O=new Date;O.setTime(N),L=O}return this.cache.push(L),L;case 115:var P=this.readDigits(),Q=this.buf;if(58!=this.get(this.pos++)||this.length-this.pos<P)throw new C("Invalid bytes length");var R=u.CODES;null==R&&(R=u.initCodes(),u.CODES=R);var S,T=this.pos,U=3&P;S=3*(P>>2)+(U>=2?U-1:0);for(var V=T+(P-U),W=z.alloc(S),X=0;T<V;){var Y=R[o.fastCodeAt(Q,T++)],Z=R[o.fastCodeAt(Q,T++)];W.set(X++,Y<<2|Z>>4);var $=R[o.fastCodeAt(Q,T++)];W.set(X++,Z<<4|$>>2);var _=R[o.fastCodeAt(Q,T++)];W.set(X++,$<<6|_)}if(U>=2){var aa=R[o.fastCodeAt(Q,T++)],ba=R[o.fastCodeAt(Q,T++)];if(W.set(X++,aa<<2|ba>>4),3==U){var ca=R[o.fastCodeAt(Q,T++)];W.set(X++,ba<<4|ca>>2)}}return this.pos+=P,this.cache.push(W),W;case 67:var da=this.unserialize(),ea=this.resolver.resolveClass(da);if(null==ea)throw new C("Class not found "+da);var fa=q.createEmptyInstance(ea);if(this.cache.push(fa),fa.hxUnserialize(this),103!=this.get(this.pos++))throw new C("Invalid custom data");return fa;case 65:var ga=this.unserialize(),ha=this.resolver.resolveClass(ga);if(null==ha)throw new C("Class not found "+ga);return ha;case 66:var ia=this.unserialize(),ja=this.resolver.resolveEnum(ia);if(null==ja)throw new C("Enum not found "+ia);return ja}throw this.pos--,new C("Invalid char "+this.buf.charAt(this.pos)+" at position "+this.pos)},__class__:u};var v=function(){this.h={}};g["haxe.ds.IntMap"]=v,v.__name__=["haxe","ds","IntMap"],v.__interfaces__=[r],v.prototype={set:function(a,b){this.h[a]=b},remove:function(a){return!!this.h.hasOwnProperty(a)&&(delete this.h[a],!0)},keys:function(){var a=[];for(var b in this.h)this.h.hasOwnProperty(b)&&a.push(0|b);return i.iter(a)},__class__:v};var w=function(){this.h={},this.h.__keys__={}};g["haxe.ds.ObjectMap"]=w,w.__name__=["haxe","ds","ObjectMap"],w.__interfaces__=[r],w.prototype={set:function(a,b){var c=a.__id__||(a.__id__=++w.count);this.h[c]=b,this.h.__keys__[c]=a},keys:function(){var a=[];for(var b in this.h.__keys__)this.h.hasOwnProperty(b)&&a.push(this.h.__keys__[b]);return i.iter(a)},__class__:w};var x=g["haxe.ds.Option"]={__ename__:["haxe","ds","Option"],__constructs__:["Some","None"]};x.Some=function(a){var b=["Some",0,a];return b.__enum__=x,b.toString=h,b},x.None=["None",1],x.None.toString=h,x.None.__enum__=x;var y=function(){this.h={}};g["haxe.ds.StringMap"]=y,y.__name__=["haxe","ds","StringMap"],y.__interfaces__=[r],y.prototype={set:function(a,b){null!=pb[a]?this.setReserved(a,b):this.h[a]=b},get:function(a){return null!=pb[a]?this.getReserved(a):this.h[a]},setReserved:function(a,b){null==this.rh&&(this.rh={}),this.rh["$"+a]=b},getReserved:function(a){return null==this.rh?null:this.rh["$"+a]},keys:function(){var a=this.arrayKeys();return i.iter(a)},arrayKeys:function(){var a=[];for(var b in this.h)this.h.hasOwnProperty(b)&&a.push(b);if(null!=this.rh)for(var b in this.rh)36==b.charCodeAt(0)&&a.push(b.substr(1));return a},__class__:y};var z=function(a){this.length=a.byteLength,this.b=new rb(a),this.b.bufferValue=a,a.hxBytes=this,a.bytes=this.b};g["haxe.io.Bytes"]=z,z.__name__=["haxe","io","Bytes"],z.alloc=function(a){return new z(new qb(a))},z.prototype={get:function(a){return this.b[a]},set:function(a,b){this.b[a]=255&b},__class__:z};var A=g["haxe.io.Error"]={__ename__:["haxe","io","Error"],__constructs__:["Blocked","Overflow","OutsideBounds","Custom"]};A.Blocked=["Blocked",0],A.Blocked.toString=h,A.Blocked.__enum__=A,A.Overflow=["Overflow",1],A.Overflow.toString=h,A.Overflow.__enum__=A,A.OutsideBounds=["OutsideBounds",2],A.OutsideBounds.toString=h,A.OutsideBounds.__enum__=A,A.Custom=function(a){var b=["Custom",3,a];return b.__enum__=A,b.toString=h,b};var B=function(){};g["haxe.io.FPHelper"]=B,B.__name__=["haxe","io","FPHelper"],B.i32ToFloat=function(a){var b=1-(a>>>31<<1),c=a>>>23&255,d=8388607&a;return 0==d&&0==c?0:b*(1+Math.pow(2,-23)*d)*Math.pow(2,c-127)},B.floatToI32=function(a){if(0==a)return 0;var b;b=a<0?-a:a;var c=Math.floor(Math.log(b)/.6931471805599453);c<-127?c=-127:c>128&&(c=128);var d=8388607&Math.round(8388608*(b/Math.pow(2,c)-1));return(a<0?-2147483648:0)|c+127<<23|d},B.i64ToDouble=function(a,b){var c=1-(b>>>31<<1),d=(b>>20&2047)-1023,e=4294967296*(1048575&b)+2147483648*(a>>>31)+(2147483647&a);return 0==e&&-1023==d?0:c*(1+Math.pow(2,-52)*e)*Math.pow(2,d)},B.doubleToI64=function(a){var b=B.i64tmp;if(0==a)b.low=0,b.high=0;else{var c;c=a<0?-a:a;var d,e=Math.floor(Math.log(c)/.6931471805599453),f=4503599627370496*(c/Math.pow(2,e)-1);d=Math.round(f);var g=0|d,h=d/4294967296|0;b.low=g,b.high=(a<0?-2147483648:0)|e+1023<<20|h}return b};var C=function(a){Error.call(this),this.val=a,this.message=String(a),Error.captureStackTrace&&Error.captureStackTrace(this,C)};g["js._Boot.HaxeError"]=C,C.__name__=["js","_Boot","HaxeError"],C.__super__=Error,C.prototype=d(Error.prototype,{__class__:C});var D=function(){};g["js.Boot"]=D,D.__name__=["js","Boot"],D.getClass=function(a){if(a instanceof Array&&null==a.__enum__)return Array;var b=a.__class__;if(null!=b)return b;var c=D.__nativeClassName(a);return null!=c?D.__resolveNativeClass(c):null},D.__string_rec=function(a,b){if(null==a)return"null";if(b.length>=5)return"<...>";var c=typeof a;switch("function"==c&&(a.__name__||a.__ename__)&&(c="object"),c){case"object":if(a instanceof Array){if(a.__enum__){if(2==a.length)return a[0];var d=a[0]+"(";b+="\t";for(var e=2,f=a.length;e<f;){var g=e++;d+=2!=g?","+D.__string_rec(a[g],b):D.__string_rec(a[g],b)}return d+")"}var h=a.length,i="[";b+="\t";for(var j=0;j<h;){var k=j++;i+=(k>0?",":"")+D.__string_rec(a[k],b)}return i+="]"}var l;try{l=a.toString}catch(q){return q instanceof C&&(q=q.val),"???"}if(null!=l&&l!=Object.toString&&"function"==typeof l){var m=a.toString();if("[object Object]"!=m)return m}var n=null,o="{\n";b+="\t";var p=null!=a.hasOwnProperty;for(var n in a)p&&!a.hasOwnProperty(n)||"prototype"!=n&&"__class__"!=n&&"__super__"!=n&&"__interfaces__"!=n&&"__properties__"!=n&&(2!=o.length&&(o+=", \n"),o+=b+n+" : "+D.__string_rec(a[n],b));return b=b.substring(1),o+="\n"+b+"}";case"function":return"<function>";case"string":return a;default:return String(a)}},D.__interfLoop=function(a,b){if(null==a)return!1;if(a==b)return!0;var c=a.__interfaces__;if(null!=c)for(var d=0,e=c.length;d<e;){var f=d++,g=c[f];if(g==b||D.__interfLoop(g,b))return!0}return D.__interfLoop(a.__super__,b)},D.__instanceof=function(a,b){if(null==b)return!1;switch(b){case jb:return(0|a)===a;case lb:return"number"==typeof a;case mb:return"boolean"==typeof a;case String:return"string"==typeof a;case Array:return a instanceof Array&&null==a.__enum__;case kb:return!0;default:if(null==a)return!1;if("function"==typeof b){if(a instanceof b)return!0;if(D.__interfLoop(D.getClass(a),b))return!0}else if("object"==typeof b&&D.__isNativeObj(b)&&a instanceof b)return!0;return b==nb&&null!=a.__name__||(b==ob&&null!=a.__ename__||a.__enum__==b)}},D.__nativeClassName=function(a){var b=D.__toStr.call(a).slice(8,-1);return"Object"==b||"Function"==b||"Math"==b||"JSON"==b?null:b},D.__isNativeObj=function(a){return null!=D.__nativeClassName(a)},D.__resolveNativeClass=function(a){return c[a]};var E=function(a){if(a instanceof Array&&null==a.__enum__)this.a=a,this.byteLength=a.length;else{var b=a;this.a=[];for(var c=0;c<b;){var d=c++;this.a[d]=0}this.byteLength=b}};g["js.html.compat.ArrayBuffer"]=E,E.__name__=["js","html","compat","ArrayBuffer"],E.sliceImpl=function(a,b){var c=new rb(this,a,null==b?null:b-a),d=new qb(c.byteLength);return new rb(d).set(c),d},E.prototype={slice:function(a,b){return new E(this.a.slice(a,b))},__class__:E};var F=function(a,b,c){if(this.buf=a,this.offset=null==b?0:b,this.length=null==c?a.byteLength-this.offset:c,this.offset<0||this.length<0||this.offset+this.length>a.byteLength)throw new C(A.OutsideBounds)};g["js.html.compat.DataView"]=F,F.__name__=["js","html","compat","DataView"],F.prototype={getInt8:function(a){var b=this.buf.a[this.offset+a];return b>=128?b-256:b},getUint8:function(a){return this.buf.a[this.offset+a]},getInt16:function(a,b){var c=this.getUint16(a,b);return c>=32768?c-65536:c},getUint16:function(a,b){return b?this.buf.a[this.offset+a]|this.buf.a[this.offset+a+1]<<8:this.buf.a[this.offset+a]<<8|this.buf.a[this.offset+a+1]},getInt32:function(a,b){var c=this.offset+a,d=this.buf.a[c++],e=this.buf.a[c++],f=this.buf.a[c++],g=this.buf.a[c++];return b?d|e<<8|f<<16|g<<24:g|f<<8|e<<16|d<<24},getUint32:function(a,b){var c=this.getInt32(a,b);return c<0?c+4294967296:c},getFloat32:function(a,b){return B.i32ToFloat(this.getInt32(a,b))},getFloat64:function(a,b){var c=this.getInt32(a,b),d=this.getInt32(a+4,b);return B.i64ToDouble(b?c:d,b?d:c)},setInt8:function(a,b){this.buf.a[a+this.offset]=b<0?b+128&255:255&b},setUint8:function(a,b){this.buf.a[a+this.offset]=255&b},setInt16:function(a,b,c){this.setUint16(a,b<0?b+65536:b,c)},setUint16:function(a,b,c){var d=a+this.offset;c?(this.buf.a[d]=255&b,this.buf.a[d++]=b>>8&255):(this.buf.a[d++]=b>>8&255,this.buf.a[d]=255&b)},setInt32:function(a,b,c){this.setUint32(a,b,c)},setUint32:function(a,b,c){var d=a+this.offset;c?(this.buf.a[d++]=255&b,this.buf.a[d++]=b>>8&255,this.buf.a[d++]=b>>16&255,this.buf.a[d++]=b>>>24):(this.buf.a[d++]=b>>>24,this.buf.a[d++]=b>>16&255,this.buf.a[d++]=b>>8&255,this.buf.a[d++]=255&b)},setFloat32:function(a,b,c){this.setUint32(a,B.floatToI32(b),c)},setFloat64:function(a,b,c){var d=B.doubleToI64(b);c?(this.setUint32(a,d.low),this.setUint32(a,d.high)):(this.setUint32(a,d.high),this.setUint32(a,d.low))},__class__:F};var G=function(){};g["js.html.compat.Uint8Array"]=G,G.__name__=["js","html","compat","Uint8Array"],G._new=function(a,b,c){var d;if("number"==typeof a){d=[];for(var e=0;e<a;){d[e++]=0}d.byteLength=d.length,d.byteOffset=0,d.buffer=new E(d)}else if(D.__instanceof(a,E)){var f=a;null==b&&(b=0),null==c&&(c=f.byteLength-b),d=0==b?f.a:f.a.slice(b,b+c),d.byteLength=d.length,d.byteOffset=b,d.buffer=f}else{if(!(a instanceof Array&&null==a.__enum__))throw new C("TODO "+m.string(a));d=a.slice(),d.byteLength=d.length,d.byteOffset=0,d.buffer=new E(d)}return d.subarray=G._subarray,d.set=G._set,d},G._set=function(a,b){var c=this;if(D.__instanceof(a.buffer,E)){var d=a;if(a.byteLength+b>c.byteLength)throw new C("set() outside of range");for(var e=0,f=a.byteLength;e<f;){var g=e++;c[g+b]=d[g]}}else{if(!(a instanceof Array&&null==a.__enum__))throw new C("TODO");var h=a;if(h.length+b>c.byteLength)throw new C("set() outside of range");for(var i=0,j=h.length;i<j;){var k=i++;c[k+b]=h[k]}}},G._subarray=function(a,b){var c=this,d=G._new(c.slice(a,b));return d.byteOffset=a,d};var H=function(a){this._resolved=!1,this._pending=!1,this._errorPending=!1,this._fulfilled=!1,this._update=[],this._error=[],this._errored=!1,null!=a&&H.link(a,this,function(a){return a})};g["promhx.base.AsyncBase"]=H,H.__name__=["promhx","base","AsyncBase"],H.link=function(a,b,c){a._update.push({async:b,linkf:function(a){b.handleResolve(c(a))}}),H.immediateLinkUpdate(a,b,c)},H.immediateLinkUpdate=function(a,b,c){if(!a._errored||a._errorPending||a._error.length>0||b.handleError(a._errorVal),a._resolved&&!a._pending)try{b.handleResolve(c(a._val))}catch(d){d instanceof C&&(d=d.val),b.handleError(d)}},H.linkAll=function(a,b){for(var c=function(c,d,f){if(0==c.length||H.allFulfilled(c)){for(var g,h=[],i=e(a)();i.hasNext();){var j=i.next();h.push(j==d?f:j._val)}g=h,b.handleResolve(g)}},d=e(a)();d.hasNext();){var f=d.next();f._update.push({async:b,linkf:function(a,b,c){return function(d){a(b,c,d)}}(c,function(b){for(var c=[],d=e(a)();d.hasNext();){var g=d.next();g!=f&&c.push(g)}return c}(),f)})}H.allFulfilled(a)&&b.handleResolve(function(b){for(var c=[],d=e(a)();d.hasNext();){var f=d.next();c.push(f._val)}return c}())},H.pipeLink=function(a,b,c){var d=!1,e=function(a){if(!d){d=!0;var e=c(a);e._update.push({async:b,linkf:f(b,b.handleResolve)}),H.immediateLinkUpdate(e,b,function(a){return a})}};if(a._update.push({async:b,linkf:e}),a._resolved&&!a._pending)try{e(a._val)}catch(g){g instanceof C&&(g=g.val),b.handleError(g)}},H.allResolved=function(a){for(var b=e(a)();b.hasNext();){if(!b.next()._resolved)return!1}return!0},H.allFulfilled=function(a){for(var b=e(a)();b.hasNext();){if(!b.next()._fulfilled)return!1}return!0},H.prototype={catchError:function(a){return this._error.push(a),this},errorThen:function(a){return this._errorMap=a,this},isResolved:function(){return this._resolved},isErrored:function(){return this._errored},isErrorHandled:function(){return this._error.length>0},isErrorPending:function(){return this._errorPending},isFulfilled:function(){return this._fulfilled},isPending:function(){return this._pending},handleResolve:function(a){this._resolve(a)},_resolve:function(a){var b=this;this._pending?M.enqueue(function(a,b){return function(){a(b)}}(f(this,this._resolve),a)):(this._resolved=!0,this._pending=!0,M.queue.add(function(){b._val=a;for(var c=0,d=b._update;c<d.length;){var e=d[c];++c;try{e.linkf(a)}catch(f){f instanceof C&&(f=f.val),e.async.handleError(f)}}b._fulfilled=!0,b._pending=!1}),M.continueOnNextLoop())},handleError:function(a){this._handleError(a)},_handleError:function(a){var b=this,c=function(a){if(b._error.length>0)for(var c=0,d=b._error;c<d.length;){var e=d[c];++c,e(a)}else{if(!(b._update.length>0))throw new C(a);for(var f=0,g=b._update;f<g.length;){var h=g[f];++f,h.async.handleError(a)}}b._errorPending=!1};this._errorPending||(this._errorPending=!0,this._errored=!0,this._errorVal=a,M.queue.add(function(){if(null!=b._errorMap)try{b._resolve(b._errorMap(a))}catch(d){d instanceof C&&(d=d.val),c(d)}else c(a)}),M.continueOnNextLoop())},then:function(a){var b=new H(null);return H.link(this,b,a),b},unlink:function(a){var b=this;M.queue.add(function(){b._update=b._update.filter(function(b){return b.async!=a})}),M.continueOnNextLoop()},isLinked:function(a){for(var b=!1,c=0,d=this._update;c<d.length;){var e=d[c];if(++c,e.async==a)return!0}return b},__class__:H};var I=b.promhx.Deferred=function(){H.call(this)};g["promhx.Deferred"]=I,I.__name__=["promhx","Deferred"],I.__super__=H,I.prototype=d(H.prototype,{resolve:function(a){this.handleResolve(a)},throwError:function(a){this.handleError(a)},promise:function(){return new J(this)},stream:function(){return new K(this)},publicStream:function(){return new L(this)},__class__:I});var J=b.promhx.Promise=function(a){H.call(this,a),this._rejected=!1};g["promhx.Promise"]=J,J.__name__=["promhx","Promise"],J.whenAll=function(a){var b=new J(null);return H.linkAll(a,b),b},J.promise=function(a){var b=new J;return b.handleResolve(a),b},J.__super__=H,J.prototype=d(H.prototype,{isRejected:function(){return this._rejected},reject:function(a){this._rejected=!0,this.handleError(a)},handleResolve:function(a){if(this._resolved){throw new C(N.AlreadyResolved("Promise has already been resolved"))}this._resolve(a)},then:function(a){var b=new J(null);return H.link(this,b,a),b},unlink:function(a){var b=this;M.queue.add(function(){if(b._fulfilled)b._update=b._update.filter(function(b){return b.async!=a});else{b.handleError(N.DownstreamNotFullfilled("Downstream Promise is not fullfilled"))}}),M.continueOnNextLoop()},handleError:function(a){this._rejected=!0,this._handleError(a)},pipe:function(a){var b=new J(null);return H.pipeLink(this,b,a),b},errorPipe:function(a){var b=new J;return this.catchError(function(c){a(c).then(f(b,b._resolve))}),this.then(f(b,b._resolve)),b},__class__:J});var K=b.promhx.Stream=function(a){H.call(this,a),this._end_promise=new J};g["promhx.Stream"]=K,K.__name__=["promhx","Stream"],K.foreach=function(a){for(var b=new K(null),c=e(a)();c.hasNext();){var d=c.next();b.handleResolve(d)}return b.end(),b},K.wheneverAll=function(a){var b=new K(null);return H.linkAll(a,b),b},K.concatAll=function(a){for(var b=new K(null),c=e(a)();c.hasNext();){var d=c.next();b.concat(d)}return b},K.mergeAll=function(a){for(var b=new K(null),c=e(a)();c.hasNext();){var d=c.next();b.merge(d)}return b},K.stream=function(a){var b=new K(null);return b.handleResolve(a),b},K.__super__=H,K.prototype=d(H.prototype,{then:function(a){var b=new K(null);return H.link(this,b,a),this._end_promise._update.push({async:b._end_promise,linkf:function(a){b.end()}}),b},detachStream:function(a){for(var b=[],c=!1,d=0,e=this._update;d<e.length;){var f=e[d];++d,f.async==a?(this._end_promise._update=this._end_promise._update.filter(function(b){return b.async!=a._end_promise}),c=!0):b.push(f)}return this._update=b,c},first:function(){var a=new J(null);return this.then(function(b){a._resolved||a.handleResolve(b)}),a},handleResolve:function(a){this._end||this._pause||this._resolve(a)},pause:function(a){null==a&&(a=!this._pause),this._pause=a},pipe:function(a){var b=new K(null);return H.pipeLink(this,b,a),this._end_promise.then(function(a){b.end()}),b},errorPipe:function(a){var b=new K(null);return this.catchError(function(c){var d=a(c);d.then(f(b,b._resolve)),d._end_promise.then((hb=b._end_promise,f(hb,hb._resolve)))}),this.then(f(b,b._resolve)),this._end_promise.then(function(a){b.end()}),b},handleEnd:function(){if(this._pending)M.queue.add(f(this,this.handleEnd)),M.continueOnNextLoop();else{if(this._end_promise._resolved)return;this._end=!0;var a;a=this._resolved?x.Some(this._val):x.None,this._end_promise.handleResolve(a),this._update=[],this._error=[]}},end:function(){return M.queue.add(f(this,this.handleEnd)),M.continueOnNextLoop(),this},endThen:function(a){return this._end_promise.then(a)},filter:function(a){var b=new K(null);return this._update.push({async:b,linkf:function(c){a(c)&&b.handleResolve(c)}}),H.immediateLinkUpdate(this,b,function(a){return a}),b},concat:function(a){var b=new K(null);return this._update.push({async:b,linkf:f(b,b.handleResolve)}),H.immediateLinkUpdate(this,b,function(a){return a}),
this._end_promise.then(function(c){a.pipe(function(a){return b.handleResolve(a),b}),a._end_promise.then(function(a){b.end()})}),b},merge:function(a){var b=new K(null);return this._update.push({async:b,linkf:f(b,b.handleResolve)}),a._update.push({async:b,linkf:f(b,b.handleResolve)}),H.immediateLinkUpdate(this,b,function(a){return a}),H.immediateLinkUpdate(a,b,function(a){return a}),b},__class__:K});var L=b.promhx.PublicStream=function(a){K.call(this,a)};g["promhx.PublicStream"]=L,L.__name__=["promhx","PublicStream"],L.publicstream=function(a){var b=new L(null);return b.handleResolve(a),b},L.__super__=K,L.prototype=d(K.prototype,{resolve:function(a){this.handleResolve(a)},throwError:function(a){this.handleError(a)},update:function(a){this.handleResolve(a)},__class__:L});var M=function(){};g["promhx.base.EventLoop"]=M,M.__name__=["promhx","base","EventLoop"],M.enqueue=function(a){M.queue.add(a),M.continueOnNextLoop()},M.set_nextLoop=function(a){if(null!=M.nextLoop)throw new C("nextLoop has already been set");return M.nextLoop=a,M.nextLoop},M.queueEmpty=function(){return M.queue.isEmpty()},M.finish=function(a){null==a&&(a=1e3);for(var b=null;a-- >0&&null!=(b=M.queue.pop());)b();return M.queue.isEmpty()},M.clear=function(){M.queue=new k},M.f=function(){var a=M.queue.pop();null!=a&&a(),M.queue.isEmpty()||M.continueOnNextLoop()},M.continueOnNextLoop=function(){null!=M.nextLoop?M.nextLoop(M.f):setImmediate(M.f)};var N=g["promhx.error.PromiseError"]={__ename__:["promhx","error","PromiseError"],__constructs__:["AlreadyResolved","DownstreamNotFullfilled"]};N.AlreadyResolved=function(a){var b=["AlreadyResolved",0,a];return b.__enum__=N,b.toString=h,b},N.DownstreamNotFullfilled=function(a){var b=["DownstreamNotFullfilled",1,a];return b.__enum__=N,b.toString=h,b};var O=function(){};g["verb.Verb"]=O,O.__name__=["verb","Verb"],O.main=function(){};var P=function(){};g["verb.core.ArrayExtensions"]=P,P.__name__=["verb","core","ArrayExtensions"],P.alloc=function(a,b){if(!(b<0))for(;a.length<b;)a.push(null)},P.reversed=function(a){var b=a.slice();return b.reverse(),b},P.last=function(a){return a[a.length-1]},P.first=function(a){return a[0]},P.spliceAndInsert=function(a,b,c,d){a.splice(b,c),a.splice(b,0,d)},P.left=function(a){if(0==a.length)return[];var b=Math.ceil(a.length/2);return a.slice(0,b)},P.right=function(a){if(0==a.length)return[];var b=Math.ceil(a.length/2);return a.slice(b)},P.rightWithPivot=function(a){if(0==a.length)return[];var b=Math.ceil(a.length/2);return a.slice(b-1)},P.unique=function(a,b){if(0==a.length)return[];for(var c=[a.pop()];a.length>0;){for(var d=a.pop(),e=!0,f=0;f<c.length;){var g=c[f];if(++f,b(d,g)){e=!1;break}}e&&c.push(d)}return c};var Q=function(){};g["verb.core.Binomial"]=Q,Q.__name__=["verb","core","Binomial"],Q.get=function(a,b){if(0==b)return 1;if(0==a||b>a)return 0;if(b>a-b&&(b=a-b),Q.memo_exists(a,b))return Q.get_memo(a,b);for(var c=1,d=a,e=1,f=b+1;e<f;){var g=e++;Q.memo_exists(d,g)?(a--,c=Q.get_memo(d,g)):(c*=a--,c/=g,Q.memoize(d,g,c))}return c},Q.get_no_memo=function(a,b){if(0==b)return 1;if(0==a||b>a)return 0;b>a-b&&(b=a-b);for(var c=1,d=1,e=b+1;d<e;){var f=d++;c*=a--,c/=f}return c},Q.memo_exists=function(a,b){return Q.memo.h.hasOwnProperty(a)&&Q.memo.h[a].h.hasOwnProperty(b)},Q.get_memo=function(a,b){return Q.memo.h[a].h[b]},Q.memoize=function(a,b,c){Q.memo.h.hasOwnProperty(a)||Q.memo.set(a,new v),Q.memo.h[a].h[b]=c};var R=b.core.BoundingBox=function(a){this.max=null,this.min=null,this.dim=3,this.initialized=!1,null!=a&&this.addRange(a)};g["verb.core.BoundingBox"]=R,R.__name__=["verb","core","BoundingBox"],R.intervalsOverlap=function(a,b,c,d,e){null==e&&(e=-1);var f;f=e<-.5?S.TOLERANCE:e;var g=Math.min(a,b)-f,h=Math.max(a,b)+f,i=Math.min(c,d)-f,j=Math.max(c,d)+f;return g>=i&&g<=j||h>=i&&h<=j||i>=g&&i<=h||j>=g&&j<=h},R.prototype={fromPoint:function(a){return new R([a])},add:function(a){if(!this.initialized)return this.dim=a.length,this.min=a.slice(0),this.max=a.slice(0),this.initialized=!0,this;for(var b=0,c=this.dim;b<c;){var d=b++;a[d]>this.max[d]&&(this.max[d]=a[d]),a[d]<this.min[d]&&(this.min[d]=a[d])}return this},addRange:function(a){for(var b=a.length,c=0;c<b;){var d=c++;this.add(a[d])}return this},contains:function(a,b){return null==b&&(b=-1),!!this.initialized&&this.intersects(new R([a]),b)},intersects:function(a,b){if(null==b&&(b=-1),!this.initialized||!a.initialized)return!1;for(var c=this.min,d=this.max,e=a.min,f=a.max,g=0,h=this.dim;g<h;){var i=g++;if(!R.intervalsOverlap(c[i],d[i],e[i],f[i],b))return!1}return!0},clear:function(){return this.initialized=!1,this},getLongestAxis:function(){for(var a=0,b=0,c=0,d=this.dim;c<d;){var e=c++,f=this.getAxisLength(e);f>a&&(a=f,b=e)}return b},getAxisLength:function(a){return a<0||a>this.dim-1?0:Math.abs(this.min[a]-this.max[a])},intersect:function(a,b){if(!this.initialized)return null;var c=this.min,d=this.max,e=a.min,f=a.max;if(!this.intersects(a,b))return null;for(var g=[],h=[],i=0,j=this.dim;i<j;){var k=i++;g.push(Math.min(d[k],f[k])),h.push(Math.max(c[k],e[k]))}return new R([h,g])},__class__:R};var S=b.core.Constants=function(){};g["verb.core.Constants"]=S,S.__name__=["verb","core","Constants"];var T=b.core.SerializableBase=function(){};g["verb.core.SerializableBase"]=T,T.__name__=["verb","core","SerializableBase"],T.prototype={serialize:function(){var a=new t;return a.serialize(this),a.toString()},__class__:T};var U=b.core.Plane=function(a,b){this.origin=a,this.normal=b};g["verb.core.Plane"]=U,U.__name__=["verb","core","Plane"],U.__super__=T,U.prototype=d(T.prototype,{__class__:U});var V=b.core.Ray=function(a,b){this.origin=a,this.dir=b};g["verb.core.Ray"]=V,V.__name__=["verb","core","Ray"],V.__super__=T,V.prototype=d(T.prototype,{__class__:V});var W=b.core.NurbsCurveData=function(a,b,c){this.degree=a,this.controlPoints=c,this.knots=b};g["verb.core.NurbsCurveData"]=W,W.__name__=["verb","core","NurbsCurveData"],W.__super__=T,W.prototype=d(T.prototype,{__class__:W});var X=b.core.NurbsSurfaceData=function(a,b,c,d,e){this.degreeU=a,this.degreeV=b,this.knotsU=c,this.knotsV=d,this.controlPoints=e};g["verb.core.NurbsSurfaceData"]=X,X.__name__=["verb","core","NurbsSurfaceData"],X.__super__=T,X.prototype=d(T.prototype,{__class__:X});var Y=b.core.MeshData=function(a,b,c,d){this.faces=a,this.points=b,this.normals=c,this.uvs=d};g["verb.core.MeshData"]=Y,Y.__name__=["verb","core","MeshData"],Y.empty=function(){return new Y([],[],[],[])},Y.__super__=T,Y.prototype=d(T.prototype,{__class__:Y});var Z=b.core.PolylineData=function(a,b){this.points=a,this.params=b};g["verb.core.PolylineData"]=Z,Z.__name__=["verb","core","PolylineData"],Z.__super__=T,Z.prototype=d(T.prototype,{__class__:Z});var $=b.core.VolumeData=function(a,b,c,d,e,f,g){this.degreeU=a,this.degreeV=b,this.degreeW=c,this.knotsU=d,this.knotsV=e,this.knotsW=f,this.controlPoints=g};g["verb.core.VolumeData"]=$,$.__name__=["verb","core","VolumeData"],$.__super__=T,$.prototype=d(T.prototype,{__class__:$});var _=b.core.Pair=function(a,b){this.item0=a,this.item1=b};g["verb.core.Pair"]=_,_.__name__=["verb","core","Pair"],_.prototype={__class__:_};var aa=b.core.Interval=function(a,b){this.min=a,this.max=b};g["verb.core.Interval"]=aa,aa.__name__=["verb","core","Interval"],aa.prototype={__class__:aa};var ba=b.core.CurveCurveIntersection=function(a,b,c,d){this.point0=a,this.point1=b,this.u0=c,this.u1=d};g["verb.core.CurveCurveIntersection"]=ba,ba.__name__=["verb","core","CurveCurveIntersection"],ba.prototype={__class__:ba};var ca=b.core.CurveSurfaceIntersection=function(a,b,c,d){this.u=a,this.uv=b,this.curvePoint=c,this.surfacePoint=d};g["verb.core.CurveSurfaceIntersection"]=ca,ca.__name__=["verb","core","CurveSurfaceIntersection"],ca.prototype={__class__:ca};var da=b.core.MeshIntersectionPoint=function(a,b,c,d,e){this.visited=!1,this.adj=null,this.opp=null,this.uv0=a,this.uv1=b,this.point=c,this.faceIndex0,this.faceIndex1};g["verb.core.MeshIntersectionPoint"]=da,da.__name__=["verb","core","MeshIntersectionPoint"],da.prototype={__class__:da};var ea=b.core.PolylineMeshIntersection=function(a,b,c,d,e){this.point=a,this.u=b,this.uv=c,this.polylineIndex=d,this.faceIndex=e};g["verb.core.PolylineMeshIntersection"]=ea,ea.__name__=["verb","core","PolylineMeshIntersection"],ea.prototype={__class__:ea};var fa=b.core.SurfaceSurfaceIntersectionPoint=function(a,b,c,d){this.uv0=a,this.uv1=b,this.point=c,this.dist=d};g["verb.core.SurfaceSurfaceIntersectionPoint"]=fa,fa.__name__=["verb","core","SurfaceSurfaceIntersectionPoint"],fa.prototype={__class__:fa};var ga=b.core.TriSegmentIntersection=function(a,b,c,d){this.point=a,this.s=b,this.t=c,this.p=d};g["verb.core.TriSegmentIntersection"]=ga,ga.__name__=["verb","core","TriSegmentIntersection"],ga.prototype={__class__:ga};var ha=b.core.CurveTriPoint=function(a,b,c){this.u=a,this.point=b,this.uv=c};g["verb.core.CurveTriPoint"]=ha,ha.__name__=["verb","core","CurveTriPoint"],ha.prototype={__class__:ha};var ia=function(a,b,c,d,e){null==e&&(e=!1),null==d&&(d=-1),this.uv=c,this.point=a,this.normal=b,this.id=d,this.degen=e};g["verb.core.SurfacePoint"]=ia,ia.__name__=["verb","core","SurfacePoint"],ia.fromUv=function(a,b){return new ia(null,null,[a,b])},ia.prototype={__class__:ia};var ja=b.core.CurvePoint=function(a,b){this.u=a,this.pt=b};g["verb.core.CurvePoint"]=ja,ja.__name__=["verb","core","CurvePoint"],ja.prototype={__class__:ja};var ka=b.core.KdTree=function(a,b){this.dim=3,this.points=a,this.distanceFunction=b,this.dim=a[0].point.length,this.root=this.buildTree(a,0,null)};g["verb.core.KdTree"]=ka,ka.__name__=["verb","core","KdTree"],ka.prototype={buildTree:function(a,b,c){var d,e,f=b%this.dim;return 0==a.length?null:1==a.length?new na(a[0],f,c):(a.sort(function(a,b){var c=a.point[f]-b.point[f];return 0==c?0:c>0?1:-1}),d=Math.floor(a.length/2),e=new na(a[d],f,c),e.left=this.buildTree(a.slice(0,d),b+1,e),e.right=this.buildTree(a.slice(d+1),b+1,e),e)},nearest:function(a,b,c){var d,e=this,f=new la(function(a){return-a.item1}),g=null;g=function(c){for(var d,h,i=c.dimension,j=e.distanceFunction(a,c.kdPoint.point),k=[],l=0,m=e.dim;l<m;){l++;k.push(0)}h=k;for(var n,o,p=function(a,c){f.push(new _(a,c)),f.size()>b&&f.pop()},q=0,r=e.dim;q<r;){var s=q++;s==c.dimension?h[s]=a[s]:h[s]=c.kdPoint.point[s]}if(n=e.distanceFunction(h,c.kdPoint.point),null==c.right&&null==c.left)return void((f.size()<b||j<f.peek().item1)&&p(c,j));d=null==c.right?c.left:null==c.left?c.right:a[i]<c.kdPoint.point[i]?c.left:c.right,g(d),(f.size()<b||j<f.peek().item1)&&p(c,j),(f.size()<b||Math.abs(n)<f.peek().item1)&&null!=(o=d==c.left?c.right:c.left)&&g(o)},d=g;for(var h=0;h<b;){h++;f.push(new _(null,c))}d(this.root);for(var i=[],j=0;j<b;){var k=j++;null!=f.content[k].item0&&i.push(new _(f.content[k].item0.kdPoint,f.content[k].item1))}return i},__class__:ka};var la=function(a){this.content=[],this.scoreFunction=a};g["verb.core.BinaryHeap"]=la,la.__name__=["verb","core","BinaryHeap"],la.prototype={push:function(a){this.content.push(a),this.bubbleUp(this.content.length-1)},pop:function(){var a=this.content[0],b=this.content.pop();return this.content.length>0&&(this.content[0]=b,this.sinkDown(0)),a},peek:function(){return this.content[0]},remove:function(a){for(var b=this.content.length,c=0;c<b;){var d=c++;if(this.content[d]==a){var e=this.content.pop();return void(d!=b-1&&(this.content[d]=e,this.scoreFunction(e)<this.scoreFunction(a)?this.bubbleUp(d):this.sinkDown(d)))}}throw new C("Node not found.")},size:function(){return this.content.length},bubbleUp:function(a){for(var b=this.content[a];a>0;){var c=Math.floor((a+1)/2)-1,d=this.content[c];if(!(this.scoreFunction(b)<this.scoreFunction(d)))break;this.content[c]=b,this.content[a]=d,a=c}},sinkDown:function(a){for(var b=this.content.length,c=this.content[a],d=this.scoreFunction(c);;){var e=2*(a+1),f=e-1,g=-1,h=0;if(f<b){var i=this.content[f];h=this.scoreFunction(i),h<d&&(g=f)}if(e<b){var j=this.content[e];this.scoreFunction(j)<(-1==g?d:h)&&(g=e)}if(-1==g)break;this.content[a]=this.content[g],this.content[g]=c,a=g}},__class__:la};var ma=b.core.KdPoint=function(a,b){this.point=a,this.obj=b};g["verb.core.KdPoint"]=ma,ma.__name__=["verb","core","KdPoint"],ma.prototype={__class__:ma};var na=b.core.KdNode=function(a,b,c){this.kdPoint=a,this.left=null,this.right=null,this.parent=c,this.dimension=b};g["verb.core.KdNode"]=na,na.__name__=["verb","core","KdNode"],na.prototype={__class__:na};var oa=function(){};g["verb.eval.IBoundingBoxTree"]=oa,oa.__name__=["verb","eval","IBoundingBoxTree"],oa.prototype={__class__:oa};var pa=b.core.LazyCurveBoundingBoxTree=function(a,b){this._boundingBox=null,this._curve=a,null==b&&(b=Ca.domain(this._curve.knots)/64),this._knotTol=b};g["verb.core.LazyCurveBoundingBoxTree"]=pa,pa.__name__=["verb","core","LazyCurveBoundingBoxTree"],pa.__interfaces__=[oa],pa.prototype={split:function(){var a=P.first(this._curve.knots),b=P.last(this._curve.knots),c=b-a,d=Ga.curveSplit(this._curve,(b+a)/2+.1*c*Math.random());return new _(new pa(d[0],this._knotTol),new pa(d[1],this._knotTol))},boundingBox:function(){return null==this._boundingBox&&(this._boundingBox=new R(Ia.dehomogenize1d(this._curve.controlPoints))),this._boundingBox},yield:function(){return this._curve},indivisible:function(a){return Ca.domain(this._curve.knots)<this._knotTol},empty:function(){return!1},__class__:pa};var qa=b.core.LazyMeshBoundingBoxTree=function(a,b){if(this._boundingBox=null,this._mesh=a,null==b){for(var c=[],d=0,e=a.faces.length;d<e;){var f=d++;c.push(f)}b=c}this._faceIndices=b};g["verb.core.LazyMeshBoundingBoxTree"]=qa,qa.__name__=["verb","core","LazyMeshBoundingBoxTree"],qa.__interfaces__=[oa],qa.prototype={split:function(){var a=va.sortTrianglesOnLongestAxis(this.boundingBox(),this._mesh,this._faceIndices),b=P.left(a),c=P.right(a);return new _(new qa(this._mesh,b),new qa(this._mesh,c))},boundingBox:function(){return null==this._boundingBox&&(this._boundingBox=va.makeMeshAabb(this._mesh,this._faceIndices)),this._boundingBox},yield:function(){return this._faceIndices[0]},indivisible:function(a){return 1==this._faceIndices.length},empty:function(){return 0==this._faceIndices.length},__class__:qa};var ra=b.core.LazyPolylineBoundingBoxTree=function(a,b){this._boundingBox=null,this._polyline=a,null==b&&(b=new aa(0,0!=a.points.length?a.points.length-1:0)),this._interval=b};g["verb.core.LazyPolylineBoundingBoxTree"]=ra,ra.__name__=["verb","core","LazyPolylineBoundingBoxTree"],ra.__interfaces__=[oa],ra.prototype={split:function(){var a=this._interval.min,b=this._interval.max,c=a+Math.ceil((b-a)/2),d=new aa(a,c),e=new aa(c,b);return new _(new ra(this._polyline,d),new ra(this._polyline,e))},boundingBox:function(){return null==this._boundingBox&&(this._boundingBox=new R(this._polyline.points)),this._boundingBox},yield:function(){return this._interval.min},indivisible:function(a){return this._interval.max-this._interval.min==1},empty:function(){return this._interval.max-this._interval.min==0},__class__:ra};var sa=b.core.LazySurfaceBoundingBoxTree=function(a,b,c,d){null==b&&(b=!1),this._boundingBox=null,this._surface=a,this._splitV=b,null==c&&(c=Ca.domain(a.knotsU)/16),null==d&&(d=Ca.domain(a.knotsV)/16),this._knotTolU=c,this._knotTolV=d};g["verb.core.LazySurfaceBoundingBoxTree"]=sa,sa.__name__=["verb","core","LazySurfaceBoundingBoxTree"],sa.__interfaces__=[oa],sa.prototype={split:function(){var a,b;this._splitV?(a=P.first(this._surface.knotsV),b=P.last(this._surface.knotsV)):(a=P.first(this._surface.knotsU),b=P.last(this._surface.knotsU));var c=(a+b)/2,d=Ga.surfaceSplit(this._surface,c,this._splitV);return new _(new sa(d[0],!this._splitV,this._knotTolU,this._knotTolV),new sa(d[1],!this._splitV,this._knotTolU,this._knotTolV))},boundingBox:function(){if(null==this._boundingBox){this._boundingBox=new R;for(var a=0,b=this._surface.controlPoints;a<b.length;){var c=b[a];++a,this._boundingBox.addRange(Ia.dehomogenize1d(c))}}return this._boundingBox},yield:function(){return this._surface},indivisible:function(a){return Ca.domain(this._surface.knotsV)<this._knotTolV&&Ca.domain(this._surface.knotsU)<this._knotTolU},empty:function(){return!1},__class__:sa};var ta=b.core.Mat=function(){};g["verb.core.Mat"]=ta,ta.__name__=["verb","core","Mat"],ta.mul=function(a,b){for(var c=[],d=0,e=b.length;d<e;){var f=d++;c.push(Ca.mul(a,b[f]))}return c},ta.mult=function(a,b){var c,d,e,f,g,h,i,j;c=a.length,d=b.length,e=b[0].length,f=[];for(var k=c-1,l=0,m=0;k>=0;){for(g=[],h=a[k],m=e-1;m>=0;){for(i=h[d-1]*b[d-1][m],l=d-2;l>=1;)j=l-1,i+=h[l]*b[l][m]+h[j]*b[j][m],l-=2;0==l&&(i+=h[0]*b[0][m]),g[m]=i,m--}f[k]=g,k--}return f},ta.add=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(Ca.add(a[f],b[f]))}return c},ta.div=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(Ca.div(a[f],b))}return c},ta.sub=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(Ca.sub(a[f],b[f]))}return c},ta.dot=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(Ca.dot(a[f],b))}return c},ta.identity=function(a){for(var b=Ca.zeros2d(a,a),c=0;c<a;){var d=c++;b[d][d]=1}return b},ta.transpose=function(a){if(0==a.length)return[];for(var b=[],c=0,d=a[0].length;c<d;){var e=c++;b.push(function(b){for(var c=[],d=0,f=a.length;d<f;){var g=d++;c.push(a[g][e])}return c}())}return b},ta.solve=function(a,b){return ta.LUsolve(ta.LU(a),b)},ta.LUsolve=function(a,b){var c,d,e,f,g,h=a.LU,i=h.length,j=b.slice(),k=a.P;for(c=i-1;-1!=c;)j[c]=b[c],--c;for(c=0;c<i;){for(e=k[c],k[c]!=c&&(g=j[c],j[c]=j[e],j[e]=g),f=h[c],d=0;d<c;)j[c]-=j[d]*f[d],++d;++c}for(c=i-1;c>=0;){for(f=h[c],d=c+1;d<i;)j[c]-=j[d]*f[d],++d;j[c]/=f[c],--c}return j},ta.LU=function(a){for(var b,c,d,e,f,g,h,i,j,k=(Math.abs,[]),l=0,m=a.length;l<m;){var n=l++;k.push(a[n].slice())}a=k;var o=a.length,p=o-1,q=[];for(d=0;d<o;){for(h=d,g=a[d],j=Math.abs(g[d]),c=d+1;c<o;)e=Math.abs(a[c][d]),j<e&&(j=e,h=c),++c;for(q[d]=h,h!=d&&(a[d]=a[h],a[h]=g,g=a[d]),f=g[d],b=d+1;b<o;)a[b][d]/=f,++b;for(b=d+1;b<o;){for(i=a[b],c=d+1;c<p;)i[c]-=i[d]*g[c],++c,i[c]-=i[d]*g[c],++c;c==p&&(i[c]-=i[d]*g[c]),++b}++d}return new ua(a,q)};var ua=function(a,b){this.LU=a,this.P=b};g["verb.core._Mat.LUDecomp"]=ua,ua.__name__=["verb","core","_Mat","LUDecomp"],ua.prototype={__class__:ua};var va=b.core.Mesh=function(){};g["verb.core.Mesh"]=va,va.__name__=["verb","core","Mesh"],va.getTriangleNorm=function(a,b){var c=a[b[0]],d=a[b[1]],e=a[b[2]],f=Ca.sub(d,c),g=Ca.sub(e,c),h=Ca.cross(f,g);return Ca.mul(1/Ca.norm(h),h)},va.makeMeshAabb=function(a,b){for(var c=new R,d=0;d<b.length;){var e=b[d];++d,c.add(a.points[a.faces[e][0]]),c.add(a.points[a.faces[e][1]]),c.add(a.points[a.faces[e][2]])}return c},va.sortTrianglesOnLongestAxis=function(a,b,c){for(var d=a.getLongestAxis(),e=[],f=0;f<c.length;){var g=c[f];++f;var h=va.getMinCoordOnAxis(b.points,b.faces[g],d);e.push(new _(h,g))}e.sort(function(a,b){var c=a.item0,d=b.item0;return c==d?0:c>d?1:-1});for(var i=[],j=0,k=e.length;j<k;){var l=j++;i.push(e[l].item1)}return i},va.getMinCoordOnAxis=function(a,b,c){for(var d=1/0,e=0;e<3;){var f=e++,g=a[b[f]][c];g<d&&(d=g)}return d},va.getTriangleCentroid=function(a,b){for(var c=[0,0,0],d=0;d<3;)for(var e=d++,f=0;f<3;){var g=f++;c[g]+=a[b[e]][g]}for(var h=0;h<3;){c[h++]/=3}return c},va.triangleUVFromPoint=function(a,b,c){var d=a.faces[b],e=a.points[d[0]],f=a.points[d[1]],g=a.points[d[2]],h=a.uvs[d[0]],i=a.uvs[d[1]],j=a.uvs[d[2]],k=Ca.sub(e,c),l=Ca.sub(f,c),m=Ca.sub(g,c),n=Ca.norm(Ca.cross(Ca.sub(e,f),Ca.sub(e,g))),o=Ca.norm(Ca.cross(l,m))/n,p=Ca.norm(Ca.cross(m,k))/n,q=Ca.norm(Ca.cross(k,l))/n;return Ca.add(Ca.mul(o,h),Ca.add(Ca.mul(p,i),Ca.mul(q,j)))};var wa=function(a,b){if(this._empty=!1,this._face=-1,null==b){for(var c=[],d=0,e=a.faces.length;d<e;){var f=d++;c.push(f)}b=c}if(this._boundingBox=va.makeMeshAabb(a,b),b.length<1)return void(this._empty=!0);if(b.length<2)return void(this._face=b[0]);var g=va.sortTrianglesOnLongestAxis(this._boundingBox,a,b),h=P.left(g),i=P.right(g);this._children=new _(new wa(a,h),new wa(a,i))};g["verb.core.MeshBoundingBoxTree"]=wa,wa.__name__=["verb","core","MeshBoundingBoxTree"],wa.__interfaces__=[oa],wa.prototype={split:function(){return this._children},boundingBox:function(){return this._boundingBox},yield:function(){return this._face},indivisible:function(a){return null==this._children},empty:function(){return this._empty},__class__:wa};var xa=b.core.Minimizer=function(){};g["verb.core.Minimizer"]=xa,xa.__name__=["verb","core","Minimizer"],xa.uncmin=function(a,b,c,d,e){null==c&&(c=1e-8),null==d&&(d=function(b){return xa.numericalGradient(a,b)}),null==e&&(e=1e3),b=b.slice(0);var f,g=b.length,h=a(b),i=h;if(isNaN(h))throw new C("uncmin: f(x0) is a NaN!");c=Math.max(c,S.EPSILON);var j,k,l,m,n,o,p,q,r,s=ta.identity(g),t=0,u=[],v="";for(k=d(b);t<e;){if(!Ca.all(Ca.finite(k))){v="Gradient has Infinity or NaN";break}if(j=Ca.neg(ta.dot(s,k)),!Ca.all(Ca.finite(j))){v="Search direction has Infinity or NaN";break}if((r=Ca.norm(j))<c){v="Newton step smaller than tol";break}for(q=1,f=Ca.dot(k,j),m=b;t<e&&!(q*r<c)&&(u=Ca.mul(q,j),m=Ca.add(b,u),(i=a(m))-h>=.1*q*f||isNaN(i));)q*=.5,++t;if(q*r<c){v="Line search step size smaller than tol";break}if(t==e){v="maxit reached during line search";break}l=d(m),n=Ca.sub(l,k),p=Ca.dot(n,u),o=ta.dot(s,n),s=ta.sub(ta.add(s,ta.mul((p+Ca.dot(n,o))/(p*p),xa.tensor(u,u))),ta.div(ta.add(xa.tensor(o,u),xa.tensor(u,o)),p)),b=m,h=i,k=l,++t}return new ya(b,h,k,s,t,v)},xa.numericalGradient=function(a,b){var c=b.length,d=a(b);if(NaN==d)throw new C("gradient: f(x) is a NaN!");for(var e,f,g,h,i,j,k,l,m=b.slice(0),n=[],o=.001,p=0,q=0;q<c;)for(var r=q++,s=Math.max(1e-6*d,1e-8);;){if(++p>20)throw new C("Numerical gradient fails");if(m[r]=b[r]+s,e=a(m),m[r]=b[r]-s,f=a(m),m[r]=b[r],isNaN(e)||isNaN(f))s/=16;else{if(n[r]=(e-f)/(2*s),g=b[r]-s,h=b[r],i=b[r]+s,j=(e-d)/s,k=(d-f)/s,l=Ca.max([Math.abs(n[r]),Math.abs(d),Math.abs(e),Math.abs(f),Math.abs(g),Math.abs(h),Math.abs(i),1e-8]),!(Math.min(Ca.max([Math.abs(j-n[r]),Math.abs(k-n[r]),Math.abs(j-k)])/l,s/l)>o))break;s/=16}}return n},xa.tensor=function(a,b){for(var c,d,e=a.length,f=b.length,g=[],h=e-1;h>=0;){c=[],d=a[h];for(var i=f-1;i>=3;)c[i]=d*b[i],--i,c[i]=d*b[i],--i,c[i]=d*b[i],--i,c[i]=d*b[i],--i;for(;i>=0;)c[i]=d*b[i],--i;g[h]=c,h--}return g};var ya=function(a,b,c,d,e,f){this.solution=a,this.value=b,this.gradient=c,this.invHessian=d,this.iterations=e,this.message=f};g["verb.core.MinimizationResult"]=ya,ya.__name__=["verb","core","MinimizationResult"],ya.prototype={__class__:ya};var za=function(){};g["verb.core.ISerializable"]=za,za.__name__=["verb","core","ISerializable"],za.prototype={__class__:za};var Aa=b.core.Deserializer=function(){};g["verb.core.Deserializer"]=Aa,Aa.__name__=["verb","core","Deserializer"],Aa.deserialize=function(a){return new u(a).unserialize()};var Ba=b.core.Trig=function(){};g["verb.core.Trig"]=Ba,Ba.__name__=["verb","core","Trig"],Ba.isPointInPlane=function(a,b,c){return Math.abs(Ca.dot(Ca.sub(a,b.origin),b.normal))<c},Ba.distToSegment=function(a,b,c){var d=Ba.segmentClosestPoint(b,a,c,0,1);return Ca.dist(b,d.pt)},Ba.rayClosestPoint=function(a,b,c){var d=Ca.sub(a,b),e=Ca.dot(d,c);return Ca.add(b,Ca.mul(e,c))},Ba.distToRay=function(a,b,c){var d=Ba.rayClosestPoint(a,b,c),e=Ca.sub(d,a);return Ca.norm(e)},Ba.threePointsAreFlat=function(a,b,c,d){var e=Ca.sub(b,a),f=Ca.sub(c,a),g=Ca.cross(e,f);return Ca.dot(g,g)<d},Ba.segmentClosestPoint=function(a,b,c,d,e){var f=Ca.sub(c,b),g=Ca.norm(f);if(g<S.EPSILON)return{u:d,pt:b};var h=b,i=Ca.mul(1/g,f),j=Ca.sub(a,h),k=Ca.dot(j,i);return k<0?{u:d,pt:b}:k>g?{u:e,pt:c}:{u:d+(e-d)*k/g,pt:Ca.add(h,Ca.mul(k,i))}};var Ca=b.core.Vec=function(){};g["verb.core.Vec"]=Ca,Ca.__name__=["verb","core","Vec"],Ca.angleBetween=function(a,b){return Math.acos(Ca.dot(a,b)/(Ca.norm(a)*Ca.norm(b)))},Ca.positiveAngleBetween=function(a,b,c){var d=Ca.cross(a,b),e=Ca.norm(a),f=Ca.norm(b),g=e*f,h=Ca.dot(a,b),i=Ca.norm(d)/g,j=h/g,k=Math.atan2(i,j),l=Ca.dot(c,d);return Math.abs(l)<S.EPSILON?k:l>0?k:-k},Ca.signedAngleBetween=function(a,b,c){var d=Ca.cross(a,b),e=Ca.norm(a),f=Ca.norm(b),g=e*f,h=Ca.dot(a,b),i=Ca.norm(d)/g,j=h/g,k=Math.atan2(i,j);return Ca.dot(c,d)>0?k:2*Math.PI-k},Ca.angleBetweenNormalized2d=function(a,b){var c=a[0]*b[1]-a[1]*b[0];return Math.atan2(c,Ca.dot(a,b))},Ca.domain=function(a){return P.last(a)-P.first(a)},Ca.range=function(a){for(var b=[],c=0,d=0;d<a;){d++;b.push(c),c+=1}return b},Ca.span=function(a,b,c){if(null==c)return[];if(c<S.EPSILON)return[];if(a>b&&c>0)return[];if(b>a&&c<0)return[];for(var d=[],e=a;e<=b;)d.push(e),e+=c;return d},Ca.neg=function(a){return a.map(function(a){return-a})},Ca.min=function(a){return j.fold(a,function(a,b){return Math.min(a,b)},1/0)},Ca.max=function(a){return j.fold(a,function(a,b){return Math.max(a,b)},-1/0)},Ca.all=function(a){return j.fold(a,function(a,b){return b&&a},!0)},Ca.finite=function(a){return a.map(function(a){return isFinite(a)})},Ca.onRay=function(a,b,c){return Ca.add(a,Ca.mul(c,b))},Ca.lerp=function(a,b,c){return Ca.add(Ca.mul(a,b),Ca.mul(1-a,c))},Ca.normalized=function(a){return Ca.div(a,Ca.norm(a))},Ca.cross=function(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]},Ca.dist=function(a,b){return Ca.norm(Ca.sub(a,b))},Ca.distSquared=function(a,b){return Ca.normSquared(Ca.sub(a,b))},Ca.sum=function(a){return j.fold(a,function(a,b){return b+a},0)},Ca.addAll=function(a){var b=e(a)();if(!b.hasNext())return null;var c=b.next().length;return j.fold(a,function(a,b){return Ca.add(b,a)},Ca.rep(c,0))},Ca.addAllMutate=function(a){for(var b=a[0],c=1,d=a.length;c<d;){var e=c++;Ca.addMutate(b,a[e])}},Ca.addMulMutate=function(a,b,c){for(var d=0,e=a.length;d<e;){var f=d++;a[f]=a[f]+b*c[f]}},Ca.subMulMutate=function(a,b,c){for(var d=0,e=a.length;d<e;){var f=d++;a[f]=a[f]-b*c[f]}},Ca.addMutate=function(a,b){for(var c=0,d=a.length;c<d;){var e=c++;a[e]=a[e]+b[e]}},Ca.subMutate=function(a,b){for(var c=0,d=a.length;c<d;){var e=c++;a[e]=a[e]-b[e]}},Ca.mulMutate=function(a,b){for(var c=0,d=b.length;c<d;){var e=c++;b[e]=b[e]*a}},Ca.norm=function(a){var b=Ca.normSquared(a);return 0!=b?Math.sqrt(b):b},Ca.normSquared=function(a){return j.fold(a,function(a,b){return b+a*a},0)},Ca.rep=function(a,b){for(var c=[],d=0;d<a;){d++;c.push(b)}return c},Ca.zeros1d=function(a){for(var b=[],c=0;c<a;){c++;b.push(0)}return b},Ca.zeros2d=function(a,b){for(var c=[],d=0;d<a;){d++;c.push(Ca.zeros1d(b))}return c},Ca.zeros3d=function(a,b,c){for(var d=[],e=0;e<a;){e++;d.push(Ca.zeros2d(b,c))}return d},Ca.dot=function(a,b){for(var c=0,d=0,e=a.length;d<e;){var f=d++;c+=a[f]*b[f]}return c},Ca.add=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(a[f]+b[f])}return c},Ca.mul=function(a,b){for(var c=[],d=0,e=b.length;d<e;){var f=d++;c.push(a*b[f])}return c},Ca.div=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(a[f]/b)}return c},Ca.sub=function(a,b){for(var c=[],d=0,e=a.length;d<e;){var f=d++;c.push(a[f]-b[f])}return c},Ca.isZero=function(a){for(var b=0,c=a.length;b<c;){var d=b++;if(Math.abs(a[d])>S.TOLERANCE)return!1}return!0},Ca.sortedSetUnion=function(a,b){for(var c=[],d=0,e=0;d<a.length||e<b.length;)if(d>=a.length)c.push(b[e]),e++;else if(e>=b.length)c.push(a[d]),d++;else{var f=a[d]-b[e];Math.abs(f)<S.EPSILON?(c.push(a[d]),d++,e++):f>0?(c.push(b[e]),e++):(c.push(a[d]),d++)}return c},Ca.sortedSetSub=function(a,b){for(var c=[],d=0,e=0;d<a.length;)e>=b.length?(c.push(a[d]),d++):Math.abs(a[d]-b[e])<S.EPSILON?(d++,e++):(c.push(a[d]),d++);return c};var Da=b.eval.Analyze=function(){};g["verb.eval.Analyze"]=Da,Da.__name__=["verb","eval","Analyze"],Da.knotMultiplicities=function(a){for(var b=[new Ea(a[0],0)],c=b[0],d=0;d<a.length;){var e=a[d];++d,Math.abs(e-c.knot)>S.EPSILON&&(c=new Ea(e,0),b.push(c)),c.inc()}return b},Da.isRationalSurfaceClosed=function(a,b){null==b&&(b=!0);var c;c=b?a.controlPoints:ta.transpose(a.controlPoints);for(var d=0,e=c[0].length;d<e;){var f=d++;if(!(Ca.dist(P.first(c)[f],P.last(c)[f])<S.EPSILON))return!1}return!0},Da.rationalSurfaceClosestPoint=function(a,b){var c=Da.rationalSurfaceClosestParam(a,b);return Ia.rationalSurfacePoint(a,c[0],c[1])},Da.rationalSurfaceClosestParam=function(a,b){for(var c,d,e,f=5,g=0,h=1e-4,i=5e-4,j=a.knotsU[0],k=P.last(a.knotsU),l=a.knotsV[0],m=P.last(a.knotsV),n=Da.isRationalSurfaceClosed(a),o=Da.isRationalSurfaceClosed(a,!1),p=Ma.rationalSurfaceAdaptive(a,new Na),q=1/0,r=0,s=p.points.length;r<s;){var t=r++,u=p.points[t],v=Ca.normSquared(Ca.sub(b,u));v<q&&(q=v,e=p.uvs[t])}for(var w=function(b){return Ia.rationalSurfaceDerivatives(a,b[0],b[1],2)},x=function(a,b,c){var d=b[1][0],e=b[0][1],f=b[2][0],g=b[0][2],h=b[1][1],i=b[1][1],j=Ca.dot(d,c),k=Ca.dot(e,c),l=[-j,-k],m=Ca.dot(d,d)+Ca.dot(f,c),n=Ca.dot(d,e)+Ca.dot(h,c),o=Ca.dot(d,e)+Ca.dot(i,c),p=Ca.dot(e,e)+Ca.dot(g,c),q=[[m,n],[o,p]],r=ta.solve(q,l);return Ca.add(r,a)};g<f;){c=w(e),d=Ca.sub(c[0][0],b);var y=Ca.norm(d),z=Ca.dot(c[1][0],d),A=Ca.norm(c[1][0])*y,B=Ca.dot(c[0][1],d),C=Ca.norm(c[0][1])*y,D=z/A,E=B/C,F=y<h,G=D<i,H=E<i;if(F&&G&&H)return e;var I=x(e,c,d);I[0]<j?I=n?[k-(I[0]-j),I[1]]:[j+S.EPSILON,I[1]]:I[0]>k&&(I=n?[j+(I[0]-k),I[1]]:[k-S.EPSILON,I[1]]),I[1]<l?I=o?[I[0],m-(I[1]-l)]:[I[0],l+S.EPSILON]:I[1]>m&&(I=o?[I[0],l+(I[0]-m)]:[I[0],m-S.EPSILON]);if(Ca.norm(Ca.mul(I[0]-e[0],c[1][0]))+Ca.norm(Ca.mul(I[1]-e[1],c[0][1]))<h)return e;e=I,g++}return e},Da.rationalCurveClosestPoint=function(a,b){return Ia.rationalCurvePoint(a,Da.rationalCurveClosestParam(a,b))},Da.rationalCurveClosestParam=function(a,b){for(var c=1/0,d=0,e=Ma.rationalCurveRegularSample(a,a.controlPoints.length*a.degree,!0),f=0,g=e.length-1;f<g;){var h=f++,i=e[h][0],j=e[h+1][0],k=e[h].slice(1),l=e[h+1].slice(1),m=Ba.segmentClosestPoint(b,k,l,i,j),n=Ca.norm(Ca.sub(b,m.pt));n<c&&(c=n,d=m.u)}for(var o,p,q=5,r=0,s=1e-4,t=5e-4,u=a.knots[0],v=P.last(a.knots),w=Ca.normSquared(Ca.sub(a.controlPoints[0],P.last(a.controlPoints)))<S.EPSILON,x=d,y=function(b){return Ia.rationalCurveDerivatives(a,b,2)},z=function(a,b,c){return a-Ca.dot(b[1],c)/(Ca.dot(b[2],c)+Ca.dot(b[1],b[1]))};r<q;){o=y(x),p=Ca.sub(o[0],b);var A=Ca.norm(p),B=Ca.dot(o[1],p),C=Ca.norm(o[1])*A,D=B/C,E=A<s,F=Math.abs(D)<t;if(E&&F)return x;var G=z(x,o,p);G<u?G=w?v-(G-u):u:G>v&&(G=w?u+(G-v):v);if(Ca.norm(Ca.mul(G-x,o[1]))<s)return x;x=G,r++}return x},Da.rationalCurveParamAtArcLength=function(a,b,c,d,e){if(null==c&&(c=.001),b<S.EPSILON)return a.knots[0];var f;f=null!=d?d:La.decomposeCurveIntoBeziers(a);var g,h=0,i=(f[h],-S.EPSILON);for(g=null!=e?e:[];i<b&&h<f.length;){if(h<g.length?g[h]=g[h]:g[h]=Da.rationalBezierCurveArcLength(a),i+=g[h],b<i+S.EPSILON)return Da.rationalBezierCurveParamAtArcLength(a,b,c,g[h]);h++}return-1},Da.rationalBezierCurveParamAtArcLength=function(a,b,c,d){if(b<0)return a.knots[0];var e;if(e=null!=d?d:Da.rationalBezierCurveArcLength(a),b>e)return P.last(a.knots);var f,g=a.knots[0],h=0,i=P.last(a.knots),j=e,k=0,l=0;for(f=null!=c?c:2*S.TOLERANCE;j-h>f;)k=(g+i)/2,l=Da.rationalBezierCurveArcLength(a,k),l>b?(i=k,j=l):(g=k,h=l);return(g+i)/2},Da.rationalCurveArcLength=function(a,b,c){null==c&&(c=16),b=null==b?P.last(a.knots):b;for(var d=La.decomposeCurveIntoBeziers(a),e=0,f=d[0],g=0;e<d.length&&f.knots[0]+S.EPSILON<b;){var h=Math.min(P.last(f.knots),b);g+=Da.rationalBezierCurveArcLength(f,h,c),f=d[++e]}return g},Da.rationalBezierCurveArcLength=function(a,b,c){null==c&&(c=16);var d;d=null==b?P.last(a.knots):b;for(var e,f,g=(d-a.knots[0])/2,h=0,i=a.degree+c,j=0;j<i;){var k=j++;e=g*Da.Tvalues[i][k]+g+a.knots[0],f=Ia.rationalCurveDerivatives(a,e,1),h+=Da.Cvalues[i][k]*Ca.norm(f[1])}return g*h};var Ea=b.eval.KnotMultiplicity=function(a,b){this.knot=a,this.mult=b};g["verb.eval.KnotMultiplicity"]=Ea,Ea.__name__=["verb","eval","KnotMultiplicity"],Ea.prototype={inc:function(){this.mult++},__class__:Ea};var Fa=b.eval.Check=function(){};g["verb.eval.Check"]=Fa,Fa.__name__=["verb","eval","Check"],Fa.isValidKnotVector=function(a,b){if(0==a.length)return!1;if(a.length<2*(b+1))return!1;for(var c=P.first(a),d=0,e=b+1;d<e;){var f=d++;if(Math.abs(a[f]-c)>S.EPSILON)return!1}c=P.last(a);for(var g=a.length-b-1,h=a.length;g<h;){var i=g++;if(Math.abs(a[i]-c)>S.EPSILON)return!1}
return Fa.isNonDecreasing(a)},Fa.isNonDecreasing=function(a){for(var b=P.first(a),c=0,d=a.length;c<d;){var e=c++;if(a[e]<b-S.EPSILON)return!1;b=a[e]}return!0},Fa.isValidNurbsCurveData=function(a){if(null==a.controlPoints)throw new C("Control points array cannot be null!");if(null==a.degree)throw new C("Degree cannot be null!");if(a.degree<1)throw new C("Degree must be greater than 1!");if(null==a.knots)throw new C("Knots cannot be null!");if(a.knots.length!=a.controlPoints.length+a.degree+1)throw new C("controlPoints.length + degree + 1 must equal knots.length!");if(!Fa.isValidKnotVector(a.knots,a.degree))throw new C("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return a},Fa.isValidNurbsSurfaceData=function(a){if(null==a.controlPoints)throw new C("Control points array cannot be null!");if(null==a.degreeU)throw new C("DegreeU cannot be null!");if(null==a.degreeV)throw new C("DegreeV cannot be null!");if(a.degreeU<1)throw new C("DegreeU must be greater than 1!");if(a.degreeV<1)throw new C("DegreeV must be greater than 1!");if(null==a.knotsU)throw new C("KnotsU cannot be null!");if(null==a.knotsV)throw new C("KnotsV cannot be null!");if(a.knotsU.length!=a.controlPoints.length+a.degreeU+1)throw new C("controlPointsU.length + degreeU + 1 must equal knotsU.length!");if(a.knotsV.length!=a.controlPoints[0].length+a.degreeV+1)throw new C("controlPointsV.length + degreeV + 1 must equal knotsV.length!");if(!Fa.isValidKnotVector(a.knotsU,a.degreeU)||!Fa.isValidKnotVector(a.knotsV,a.degreeV))throw new C("Invalid knot vector format! Should begin with degree + 1 repeats and end with degree + 1 repeats!");return a};var Ga=b.eval.Divide=function(){};g["verb.eval.Divide"]=Ga,Ga.__name__=["verb","eval","Divide"],Ga.surfaceSplit=function(a,b,c){null==c&&(c=!1);var d,e,f;c?(f=a.controlPoints,d=a.knotsV,e=a.degreeV):(f=ta.transpose(a.controlPoints),d=a.knotsU,e=a.degreeU);for(var g,h=[],i=0,j=e+1;i<j;){i++;h.push(b)}g=h;for(var k=[],l=[],m=Ia.knotSpan(e,b,d),n=null,o=0;o<f.length;){var p=f[o];++o,n=La.curveKnotRefine(new W(e,d,p),g),k.push(n.controlPoints.slice(0,m+1)),l.push(n.controlPoints.slice(m+1))}var q=n.knots.slice(0,m+e+2),r=n.knots.slice(m+1);return c?[new X(a.degreeU,e,a.knotsU.slice(),q,k),new X(a.degreeU,e,a.knotsU.slice(),r,l)]:(k=ta.transpose(k),l=ta.transpose(l),[new X(e,a.degreeV,q,a.knotsV.slice(),k),new X(e,a.degreeV,r,a.knotsV.slice(),l)])},Ga.curveSplit=function(a,b){for(var c,d=a.degree,e=(a.controlPoints,a.knots),f=[],g=0,h=d+1;g<h;){g++;f.push(b)}c=f;var i=La.curveKnotRefine(a,c),j=Ia.knotSpan(d,b,e),k=i.knots.slice(0,j+d+2),l=i.knots.slice(j+1),m=i.controlPoints.slice(0,j+1),n=i.controlPoints.slice(j+1);return[new W(d,k,m),new W(d,l,n)]},Ga.rationalCurveByEqualArcLength=function(a,b){var c=Da.rationalCurveArcLength(a),d=c/b;return Ga.rationalCurveByArcLength(a,d)},Ga.rationalCurveByArcLength=function(a,b){var c=La.decomposeCurveIntoBeziers(a),d=c.map(function(a){return Da.rationalBezierCurveArcLength(a)}),e=Ca.sum(d),f=[new Ha(a.knots[0],0)];if(b>e)return f;for(var g,h=b,i=0,j=h,k=0,l=0;i<c.length;){for(k+=d[i];j<k+S.EPSILON;)g=Da.rationalBezierCurveParamAtArcLength(c[i],j-l,S.TOLERANCE,d[i]),f.push(new Ha(g,j)),j+=h;l+=d[i],i++}return f};var Ha=b.eval.CurveLengthSample=function(a,b){this.u=a,this.len=b};g["verb.eval.CurveLengthSample"]=Ha,Ha.__name__=["verb","eval","CurveLengthSample"],Ha.prototype={__class__:Ha};var Ia=b.eval.Eval=function(){};g["verb.eval.Eval"]=Ia,Ia.__name__=["verb","eval","Eval"],Ia.rationalCurveTangent=function(a,b){return Ia.rationalCurveDerivatives(a,b,1)[1]},Ia.rationalSurfaceNormal=function(a,b,c){var d=Ia.rationalSurfaceDerivatives(a,b,c,1);return Ca.cross(d[1][0],d[0][1])},Ia.rationalSurfaceDerivatives=function(a,b,c,d){null==d&&(d=1);for(var e=Ia.surfaceDerivatives(a,b,c,d),f=Ia.rational2d(e),g=Ia.weight2d(e),h=[],i=f[0][0].length,j=0,k=d+1;j<k;){var l=j++;h.push([]);for(var m=0,n=d-l+1;m<n;){for(var o=m++,p=f[l][o],q=1,r=o+1;q<r;){var s=q++;Ca.subMulMutate(p,Q.get(o,s)*g[0][s],h[l][o-s])}for(var t=1,u=l+1;t<u;){var v=t++;Ca.subMulMutate(p,Q.get(l,v)*g[v][0],h[l-v][o]);for(var w=Ca.zeros1d(i),x=1,y=o+1;x<y;){var z=x++;Ca.addMulMutate(w,Q.get(o,z)*g[v][z],h[l-v][o-z])}Ca.subMulMutate(p,Q.get(l,v),w)}Ca.mulMutate(1/g[0][0],p),h[l].push(p)}}return h},Ia.rationalSurfacePoint=function(a,b,c){return Ia.dehomogenize(Ia.surfacePoint(a,b,c))},Ia.rationalCurveDerivatives=function(a,b,c){null==c&&(c=1);for(var d=Ia.curveDerivatives(a,b,c),e=Ia.rational1d(d),f=Ia.weight1d(d),g=[],h=0,i=c+1;h<i;){for(var j=h++,k=e[j],l=1,m=j+1;l<m;){var n=l++;Ca.subMulMutate(k,Q.get(j,n)*f[n],g[j-n])}Ca.mulMutate(1/f[0],k),g.push(k)}return g},Ia.rationalCurvePoint=function(a,b){return Ia.dehomogenize(Ia.curvePoint(a,b))},Ia.surfaceDerivatives=function(a,b,c,d){var e=a.knotsU.length-a.degreeU-2,f=a.knotsV.length-a.degreeV-2;return Ia.surfaceDerivativesGivenNM(e,f,a,b,c,d)},Ia.surfaceDerivativesGivenNM=function(a,b,c,d,e,f){var g=c.degreeU,h=c.degreeV,i=c.controlPoints,j=c.knotsU,k=c.knotsV;if(!Ia.areValidRelations(g,i.length,j.length)||!Ia.areValidRelations(h,i[0].length,k.length))throw new C("Invalid relations between control points, knot vector, and n");var l,m=i[0][0].length;l=f<g?f:g;var n;n=f<h?f:h;for(var o=Ca.zeros3d(f+1,f+1,m),p=Ia.knotSpanGivenN(a,g,d,j),q=Ia.knotSpanGivenN(b,h,e,k),r=Ia.derivativeBasisFunctionsGivenNI(p,d,g,a,j),s=Ia.derivativeBasisFunctionsGivenNI(q,e,h,b,k),t=Ca.zeros2d(h+1,m),u=0,v=0,w=l+1;v<w;){for(var x=v++,y=0,z=h+1;y<z;){var A=y++;t[A]=Ca.zeros1d(m);for(var B=0,D=g+1;B<D;){var E=B++;Ca.addMulMutate(t[A],r[x][E],i[p-g+E][q-h+A])}}var F=f-x;u=F<n?F:n;for(var G=0,H=u+1;G<H;){var I=G++;o[x][I]=Ca.zeros1d(m);for(var J=0,K=h+1;J<K;){var L=J++;Ca.addMulMutate(o[x][I],s[I][L],t[L])}}}return o},Ia.surfacePoint=function(a,b,c){var d=a.knotsU.length-a.degreeU-2,e=a.knotsV.length-a.degreeV-2;return Ia.surfacePointGivenNM(d,e,a,b,c)},Ia.surfacePointGivenNM=function(a,b,c,d,e){var f=c.degreeU,g=c.degreeV,h=c.controlPoints,i=c.knotsU,j=c.knotsV;if(!Ia.areValidRelations(f,h.length,i.length)||!Ia.areValidRelations(g,h[0].length,j.length))throw new C("Invalid relations between control points, knot vector, and n");for(var k=h[0][0].length,l=Ia.knotSpanGivenN(a,f,d,i),m=Ia.knotSpanGivenN(b,g,e,j),n=Ia.basisFunctionsGivenKnotSpanIndex(l,d,f,i),o=Ia.basisFunctionsGivenKnotSpanIndex(m,e,g,j),p=l-f,q=m,r=Ca.zeros1d(k),s=Ca.zeros1d(k),t=0,u=g+1;t<u;){var v=t++;s=Ca.zeros1d(k),q=m-g+v;for(var w=0,x=f+1;w<x;){var y=w++;Ca.addMulMutate(s,n[y],h[p+y][q])}Ca.addMulMutate(r,o[v],s)}return r},Ia.curveRegularSamplePoints=function(a,b){for(var c=Ia.curveDerivatives(a,a.knots[0],a.degree),d=1/b,e=d*d,f=c[0],g=Ca.mul(d,c[1]),h=Ca.mul(.5*e,c[2]),i=Ca.mul(e*d*.5,c[3]),j=Ca.add(h,h),k=Ca.add(i,i),l=Ca.mul(.3333333333333333,i),m=[],n=0,o=b+1;n<o;){n++;m.push(Ia.dehomogenize(f)),Ca.addAllMutate([f,g,h,l]),Ca.addAllMutate([g,j,i]),Ca.addAllMutate([j,k]),Ca.addAllMutate([h,i])}return m},Ia.curveRegularSamplePoints2=function(a,b){for(var c=Ia.curveDerivatives(a,a.knots[0],a.degree),d=1/b,e=d*d,f=c[0],g=Ca.mul(d,c[1]),h=Ca.mul(.5*e,c[2]),i=Ca.mul(e*d*.5,c[3]),j=Ca.add(h,h),k=Ca.add(i,i),l=Ca.mul(.3333333333333333,i),m=[],n=0,o=b+1;n<o;){n++;m.push(Ia.dehomogenize(f)),Ca.addAllMutate([f,g,h,l]),Ca.addAllMutate([g,j,i]),Ca.addAllMutate([j,k]),Ca.addAllMutate([h,i])}return m},Ia.rationalSurfaceRegularSampleDerivatives=function(a,b,c,d){for(var e=Ia.surfaceRegularSampleDerivatives(a,b,c,d),f=[],g=b+1,h=c+1,i=d+1,j=0;j<g;){var k=j++,l=[];f.push(l);for(var m=0;m<h;){for(var n=m++,o=e[k][n],p=Ia.rational2d(o),q=Ia.weight2d(o),r=[],s=p[0][0].length,t=0;t<i;){var u=t++;r.push([]);for(var v=0,w=i-u;v<w;){for(var x=v++,y=p[u][x],z=1,A=x+1;z<A;){var B=z++;Ca.subMulMutate(y,Q.get(x,B)*q[0][B],r[u][x-B])}for(var C=1,D=u+1;C<D;){var E=C++;Ca.subMulMutate(y,Q.get(u,E)*q[E][0],r[u-E][x]);for(var F=Ca.zeros1d(s),G=1,H=x+1;G<H;){var I=G++;Ca.addMulMutate(F,Q.get(x,I)*q[E][I],r[u-E][x-I])}Ca.subMulMutate(y,Q.get(u,E),F)}Ca.mulMutate(1/q[0][0],y),r[u].push(y)}}l.push(r)}}return f},Ia.surfaceRegularSampleDerivatives=function(a,b,c,d){for(var e=a.degreeU,f=a.degreeV,g=a.controlPoints,h=a.knotsU,i=a.knotsV,j=g[0][0].length,k=(P.last(h),h[0],P.last(i),i[0],Ia.regularlySpacedDerivativeBasisFunctions(e,h,b)),l=k.item0,m=k.item1,n=Ia.regularlySpacedDerivativeBasisFunctions(f,i,c),o=n.item0,p=n.item1,q=[],r=b+1,s=c+1,t=0;t<r;){var u=t++,v=[];q.push(v);for(var w=0;w<s;){var x=w++;v.push(Ia.surfaceDerivativesGivenBasesKnotSpans(e,f,g,l[u],o[x],m[u],p[x],j,d))}}return q},Ia.rationalSurfaceRegularSamplePoints=function(a,b,c){return Ia.dehomogenize2d(Ia.surfaceRegularSamplePoints(a,b,c))},Ia.surfaceRegularSamplePoints=function(a,b,c){for(var d=a.degreeU,e=a.degreeV,f=a.controlPoints,g=a.knotsU,h=a.knotsV,i=f[0][0].length,j=(P.last(g),g[0],P.last(h),h[0],Ia.regularlySpacedBasisFunctions(d,g,b)),k=j.item0,l=j.item1,m=Ia.regularlySpacedBasisFunctions(e,h,c),n=m.item0,o=m.item1,p=[],q=b+1,r=c+1,s=0;s<q;){var t=s++,u=[];p.push(u);for(var v=0;v<r;){var w=v++;u.push(Ia.surfacePointGivenBasesKnotSpans(d,e,f,k[t],n[w],l[t],o[w],i))}}return p},Ia.regularlySpacedBasisFunctions=function(a,b,c){for(var d=b.length-a-2,e=(P.last(b)-b[0])/c,f=[],g=[],h=b[0],i=Ia.knotSpanGivenN(d,a,h,b),j=c+1,k=0;k<j;){for(k++;h>=b[i+1];)i++;g.push(i),f.push(Ia.basisFunctionsGivenKnotSpanIndex(i,h,a,b)),h+=e}return new _(g,f)},Ia.regularlySpacedDerivativeBasisFunctions=function(a,b,c){for(var d=b.length-a-2,e=(P.last(b)-b[0])/c,f=[],g=[],h=b[0],i=Ia.knotSpanGivenN(d,a,h,b),j=c+1,k=0;k<j;){for(k++;h>=b[i+1];)i++;g.push(i),f.push(Ia.derivativeBasisFunctionsGivenNI(i,h,a,d,b)),h+=e}return new _(g,f)},Ia.surfacePointGivenBasesKnotSpans=function(a,b,c,d,e,f,g,h){for(var i,j=Ca.zeros1d(h),k=d-a,l=e-b,m=0,n=b+1;m<n;){var o=m++;i=Ca.zeros1d(h);for(var p=0,q=a+1;p<q;){var r=p++;Ca.addMulMutate(i,f[r],c[k+r][l])}l++,Ca.addMulMutate(j,g[o],i)}return j},Ia.surfaceDerivativesGivenBasesKnotSpans=function(a,b,c,d,e,f,g,h,i){var j,k=c[0][0].length;j=i<a?i:a;var l;l=i<b?i:b;for(var m=Ca.zeros3d(j+1,l+1,k),n=Ca.zeros2d(b+1,k),o=0,p=0,q=j+1;p<q;){for(var r=p++,s=0,t=b+1;s<t;){var u=s++;n[u]=Ca.zeros1d(k);for(var v=0,w=a+1;v<w;){var x=v++;Ca.addMulMutate(n[u],f[r][x],c[d-a+x][e-b+u])}}var y=i-r;o=y<l?y:l;for(var z=0,A=o+1;z<A;){var B=z++;m[r][B]=Ca.zeros1d(k);for(var C=0,D=b+1;C<D;){var E=C++;Ca.addMulMutate(m[r][B],g[B][E],n[E])}}}return m},Ia.curveDerivatives=function(a,b,c){var d=a.knots.length-a.degree-2;return Ia.curveDerivativesGivenN(d,a,b,c)},Ia.curveDerivativesGivenN=function(a,b,c,d){var e=b.degree,f=b.controlPoints,g=b.knots;if(!Ia.areValidRelations(e,f.length,g.length))throw new C("Invalid relations between control points, knot vector, and n");var h,i=f[0].length;h=d<e?d:e;for(var j=Ca.zeros2d(d+1,i),k=Ia.knotSpanGivenN(a,e,c,g),l=Ia.derivativeBasisFunctionsGivenNI(k,c,e,h,g),m=0,n=h+1;m<n;)for(var o=m++,p=0,q=e+1;p<q;){var r=p++;Ca.addMulMutate(j[o],l[o][r],f[k-e+r])}return j},Ia.curvePoint=function(a,b){var c=a.knots.length-a.degree-2;return Ia.curvePointGivenN(c,a,b)},Ia.areValidRelations=function(a,b,c){return b+a+1-c==0},Ia.curvePointGivenN=function(a,b,c){var d=b.degree,e=b.controlPoints,f=b.knots;if(!Ia.areValidRelations(d,e.length,f.length))throw new C("Invalid relations between control points, knot Array, and n");for(var g=Ia.knotSpanGivenN(a,d,c,f),h=Ia.basisFunctionsGivenKnotSpanIndex(g,c,d,f),i=Ca.zeros1d(e[0].length),j=0,k=d+1;j<k;){var l=j++;Ca.addMulMutate(i,h[l],e[g-d+l])}return i},Ia.volumePoint=function(a,b,c,d){var e=a.knotsU.length-a.degreeU-2,f=a.knotsV.length-a.degreeV-2,g=a.knotsW.length-a.degreeW-2;return Ia.volumePointGivenNML(a,e,f,g,b,c,d)},Ia.volumePointGivenNML=function(a,b,c,d,e,f,g){if(!Ia.areValidRelations(a.degreeU,a.controlPoints.length,a.knotsU.length)||!Ia.areValidRelations(a.degreeV,a.controlPoints[0].length,a.knotsV.length)||!Ia.areValidRelations(a.degreeW,a.controlPoints[0][0].length,a.knotsW.length))throw new C("Invalid relations between control points and knot vector");for(var h=a.controlPoints,i=a.degreeU,j=a.degreeV,k=a.degreeW,l=a.knotsU,m=a.knotsV,n=a.knotsW,o=h[0][0][0].length,p=Ia.knotSpanGivenN(b,i,e,l),q=Ia.knotSpanGivenN(c,j,f,m),r=Ia.knotSpanGivenN(d,k,g,n),s=Ia.basisFunctionsGivenKnotSpanIndex(p,e,i,l),t=Ia.basisFunctionsGivenKnotSpanIndex(q,f,j,m),u=Ia.basisFunctionsGivenKnotSpanIndex(r,g,k,n),v=p-i,w=Ca.zeros1d(o),x=Ca.zeros1d(o),y=Ca.zeros1d(o),z=0,A=k+1;z<A;){var B=z++;y=Ca.zeros1d(o);for(var D=r-k+B,E=0,F=j+1;E<F;){var G=E++;x=Ca.zeros1d(o);for(var H=q-j+G,I=0,J=i+1;I<J;){var K=I++;Ca.addMulMutate(x,s[K],h[v+K][H][D])}Ca.addMulMutate(y,t[G],x)}Ca.addMulMutate(w,u[B],y)}return w},Ia.derivativeBasisFunctions=function(a,b,c){var d=Ia.knotSpan(b,a,c),e=c.length-1,f=e-b-1;return Ia.derivativeBasisFunctionsGivenNI(d,a,b,f,c)},Ia.derivativeBasisFunctionsGivenNI=function(a,b,c,d,e){var f=Ca.zeros2d(c+1,c+1),g=Ca.zeros1d(c+1),h=Ca.zeros1d(c+1),i=0,j=0;f[0][0]=1;for(var k=1,l=c+1;k<l;){var m=k++;g[m]=b-e[a+1-m],h[m]=e[a+m]-b,i=0;for(var n=0;n<m;){var o=n++;f[m][o]=h[o+1]+g[m-o],j=f[o][m-1]/f[m][o],f[o][m]=i+h[o+1]*j,i=g[m-o]*j}f[m][m]=i}for(var p=Ca.zeros2d(d+1,c+1),q=Ca.zeros2d(2,c+1),r=0,s=1,t=0,u=0,v=0,w=0,x=0,y=0,z=c+1;y<z;){var A=y++;p[0][A]=f[A][c]}for(var B=0,C=c+1;B<C;){var D=B++;r=0,s=1,q[0][0]=1;for(var E=1,F=d+1;E<F;){var G=E++;t=0,u=D-G,v=c-G,D>=G&&(q[s][0]=q[r][0]/f[v+1][u],t=q[s][0]*f[u][v]),w=u>=-1?1:-u,x=D-1<=v?G-1:c-D;for(var H=w,I=x+1;H<I;){var J=H++;q[s][J]=(q[r][J]-q[r][J-1])/f[v+1][u+J],t+=q[s][J]*f[u+J][v]}D<=v&&(q[s][G]=-q[r][G-1]/f[v+1][D],t+=q[s][G]*f[D][v]),p[G][D]=t;var K=r;r=s,s=K}}for(var L=c,M=1,N=d+1;M<N;){for(var O=M++,P=0,Q=c+1;P<Q;){var R=P++;p[O][R]*=L}L*=c-O}return p},Ia.basisFunctions=function(a,b,c){var d=Ia.knotSpan(b,a,c);return Ia.basisFunctionsGivenKnotSpanIndex(d,a,b,c)},Ia.basisFunctionsGivenKnotSpanIndex=function(a,b,c,d){var e=Ca.zeros1d(c+1),f=Ca.zeros1d(c+1),g=Ca.zeros1d(c+1),h=0,i=0;e[0]=1;for(var j=1,k=c+1;j<k;){var l=j++;f[l]=b-d[a+1-l],g[l]=d[a+l]-b,h=0;for(var m=0;m<l;){var n=m++;i=e[n]/(g[n+1]+f[l-n]),e[n]=h+g[n+1]*i,h=f[l-n]*i}e[l]=h}return e},Ia.knotSpan=function(a,b,c){return Ia.knotSpanGivenN(c.length-a-2,a,b,c)},Ia.knotSpanGivenN=function(a,b,c,d){if(c>d[a+1]-S.EPSILON)return a;if(c<d[b]+S.EPSILON)return b;for(var e=b,f=a+1,g=Math.floor((e+f)/2);c<d[g]||c>=d[g+1];)c<d[g]?f=g:e=g,g=Math.floor((e+f)/2);return g},Ia.dehomogenize=function(a){for(var b=a.length,c=[],d=a[b-1],e=a.length-1,f=0;f<e;){var g=f++;c.push(a[g]/d)}return c},Ia.rational1d=function(a){var b=a[0].length-1;return a.map(function(a){return a.slice(0,b)})},Ia.rational2d=function(a){return a.map(Ia.rational1d)},Ia.weight1d=function(a){var b=a[0].length-1;return a.map(function(a){return a[b]})},Ia.weight2d=function(a){return a.map(Ia.weight1d)},Ia.dehomogenize1d=function(a){return a.map(Ia.dehomogenize)},Ia.dehomogenize2d=function(a){return a.map(Ia.dehomogenize1d)},Ia.homogenize1d=function(a,b){var c,d=a.length,e=a[0].length,f=[],g=0,h=[];c=null!=b?b:Ca.rep(a.length,1);for(var i=0;i<d;){var j=i++,k=[];h=a[j],g=c[j];for(var l=0;l<e;){var m=l++;k.push(h[m]*g)}k.push(g),f.push(k)}return f},Ia.homogenize2d=function(a,b){var c,d=a.length,e=[];if(null!=b)c=b;else{for(var f=[],g=0;g<d;){g++;f.push(Ca.rep(a[0].length,1))}c=f}for(var h=0;h<d;){var i=h++;e.push(Ia.homogenize1d(a[i],c[i]))}return e};var Ja=b.eval.Intersect=function(){};g["verb.eval.Intersect"]=Ja,Ja.__name__=["verb","eval","Intersect"],Ja.surfaces=function(a,b,c){var d=Ma.rationalSurfaceAdaptive(a),e=Ma.rationalSurfaceAdaptive(b);return Ja.meshes(d,e).map(function(d){return d.map(function(d){return Ja.surfacesAtPointWithEstimate(a,b,d.uv0,d.uv1,c)})}).map(function(a){return Ka.rationalInterpCurve(a.map(function(a){return a.point}),3)})},Ja.surfacesAtPointWithEstimate=function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=5,t=0;do{if(f=Ia.rationalSurfaceDerivatives(a,c[0],c[1],1),g=f[0][0],i=f[1][0],j=f[0][1],h=Ca.normalized(Ca.cross(i,j)),k=Ca.dot(h,g),l=Ia.rationalSurfaceDerivatives(b,d[0],d[1],1),m=l[0][0],o=l[1][0],p=l[0][1],n=Ca.normalized(Ca.cross(o,p)),q=Ca.dot(n,m),(r=Ca.distSquared(g,m))<e*e)break;var u=Ca.normalized(Ca.cross(h,n)),v=Ca.dot(u,g),w=Ja.threePlanes(h,k,n,q,u,v);if(null==w)throw new C("panic!");var x=Ca.sub(w,g),y=Ca.sub(w,m),z=Ca.cross(i,h),A=Ca.cross(j,h),B=Ca.cross(o,n),D=Ca.cross(p,n),E=Ca.dot(A,x)/Ca.dot(A,i),F=Ca.dot(z,x)/Ca.dot(z,j),G=Ca.dot(D,y)/Ca.dot(D,o),H=Ca.dot(B,y)/Ca.dot(B,p);c=Ca.add([E,F],c),d=Ca.add([G,H],d),t++}while(t<s);return new fa(c,d,g,r)},Ja.meshes=function(a,b,c,d){null==c&&(c=new qa(a)),null==d&&(d=new qa(b));var e=Ja.boundingBoxTrees(c,d,0),f=P.unique(e.map(function(c){return Ja.triangles(a,c.item0,b,c.item1)}).filter(function(a){return null!=a}).filter(function(a){return Ca.distSquared(a.min.point,a.max.point)>S.EPSILON}),function(a,b){var c=Ca.sub(a.min.uv0,b.min.uv0),d=Ca.dot(c,c),e=Ca.sub(a.max.uv0,b.max.uv0),f=Ca.dot(e,e),g=Ca.sub(a.min.uv0,b.max.uv0),h=Ca.dot(g,g),i=Ca.sub(a.max.uv0,b.min.uv0),j=Ca.dot(i,i);return d<S.EPSILON&&f<S.EPSILON||h<S.EPSILON&&j<S.EPSILON});return Ja.makeMeshIntersectionPolylines(f)},Ja.meshSlices=function(a,b,c,d){for(var e=new wa(a),f=e.boundingBox(),g=f.min[0],h=f.min[1],i=f.max[0],j=f.max[1],k=Ca.span(b,c,d),l=[],m=0;m<k.length;){var n=k[m];++m;var o=[[g,h,n],[i,h,n],[i,j,n],[g,j,n]],p=[[0,0],[1,0],[1,1],[0,1]],q=[[0,1,2],[0,2,3]],r=new Y(q,o,null,p);l.push(Ja.meshes(a,r,e))}return l},Ja.makeMeshIntersectionPolylines=function(a){if(0==a.length)return[];for(var b=0;b<a.length;){var c=a[b];++b,c.max.opp=c.min,c.min.opp=c.max}for(var d=Ja.kdTreeFromSegments(a),e=[],f=0;f<a.length;){var g=a[f];++f,e.push(g.min),e.push(g.max)}for(var h=0;h<e.length;){var i=e[h];if(++h,null==i.adj){var j=Ja.lookupAdjacentSegment(i,d,a.length);null!=j&&null==j.adj&&(i.adj=j,j.adj=i)}}var k=e.filter(function(a){return null==a.adj});0==k.length&&(k=e);for(var l=[],m=0,n=!1;0!=k.length;){var o=k.pop();if(!o.visited){for(var p=[],q=o;null!=q&&!q.visited&&(q.visited=!0,q.opp.visited=!0,p.push(q),m+=2,(q=q.opp.adj)!=o););p.length>0&&(p.push(p[p.length-1].opp),l.push(p))}if(0==k.length&&e.length>0&&(n||m<e.length)){n=!0;var r=e.pop();k.push(r)}}return l},Ja.kdTreeFromSegments=function(a){for(var b=[],c=0;c<a.length;){var d=a[c];++c,b.push(new ma(d.min.point,d.min)),b.push(new ma(d.max.point,d.max))}return new ka(b,Ca.distSquared)},Ja.lookupAdjacentSegment=function(a,b,c){var d=b.nearest(a.point,c,S.EPSILON).filter(function(b){return a!=b.item0.obj}).map(function(a){return a.item0.obj});return 1==d.length?d[0]:null},Ja.curveAndSurface=function(a,b,c,d,e){null==c&&(c=.001),d=null!=d?d:new pa(a),e=null!=e?e:new sa(b);var f=Ja.boundingBoxTrees(d,e,c);return P.unique(f.map(function(a){var b=a.item0,d=a.item1,e=P.first(b.knots),f=P.last(b.knots),g=(e+f)/2,h=P.first(d.knotsU),i=P.last(d.knotsU),j=P.first(d.knotsV),k=P.last(d.knotsV),l=[(h+i)/2,(j+k)/2];return Ja.curveAndSurfaceWithEstimate(b,d,[g].concat(l),c)}).filter(function(a){return Ca.distSquared(a.curvePoint,a.surfacePoint)<c*c}),function(a,b){return Math.abs(a.u-b.u)<.5*c})},Ja.curveAndSurfaceWithEstimate=function(a,b,c,d){null==d&&(d=.001);var e=function(c){var d=Ia.rationalCurvePoint(a,c[0]),e=Ia.rationalSurfacePoint(b,c[1],c[2]),f=Ca.sub(d,e);return Ca.dot(f,f)},f=function(c){var d=Ia.rationalCurveDerivatives(a,c[0],1),e=Ia.rationalSurfaceDerivatives(b,c[1],c[2],1),f=Ca.sub(e[0][0],d[0]),g=Ca.mul(-1,d[1]),h=e[1][0],i=e[0][1];return[2*Ca.dot(g,f),2*Ca.dot(h,f),2*Ca.dot(i,f)]},g=xa.uncmin(e,c,d*d,f),h=g.solution;return new ca(h[0],[h[1],h[2]],Ia.rationalCurvePoint(a,h[0]),Ia.rationalSurfacePoint(b,h[1],h[2]))},Ja.polylineAndMesh=function(a,b,c){for(var d=Ja.boundingBoxTrees(new ra(a),new qa(b),c),e=[],f=0;f<d.length;){var g=d[f];++f;var h=g.item0,i=g.item1,j=Ja.segmentWithTriangle(a.points[h],a.points[h+1],b.points,b.faces[i]);if(null!=j){var k=j.point,l=Ca.lerp(j.p,[a.params[h]],[a.params[h+1]])[0],m=va.triangleUVFromPoint(b,i,k);e.push(new ea(k,l,m,h,i))}}return e},Ja.boundingBoxTrees=function(a,b,c){null==c&&(c=1e-9);var d=[],e=[];d.push(a),e.push(b);for(var f=[];d.length>0;){var g=d.pop(),h=e.pop();if(!g.empty()&&!h.empty()&&g.boundingBox().intersects(h.boundingBox(),c)){var i=g.indivisible(c),j=h.indivisible(c);if(i&&j)f.push(new _(g.yield(),h.yield()));else if(!i||j)if(i||!j){var k=g.split(),l=h.split();d.push(k.item1),e.push(l.item1),d.push(k.item1),e.push(l.item0),d.push(k.item0),e.push(l.item1),d.push(k.item0),e.push(l.item0)}else{var m=g.split();d.push(m.item1),e.push(h),d.push(m.item0),e.push(h)}else{var n=h.split();d.push(g),e.push(n.item1),d.push(g),e.push(n.item0)}}}return f},Ja.curves=function(a,b,c){var d=Ja.boundingBoxTrees(new pa(a),new pa(b),0);return P.unique(d.map(function(d){return Ja.curvesWithEstimate(a,b,P.first(d.item0.knots),P.first(d.item1.knots),c)}).filter(function(a){return Ca.distSquared(a.point0,a.point1)<c}),function(a,b){return Math.abs(a.u0-b.u0)<5*c})},Ja.curvesWithEstimate=function(a,b,c,d,e){var f=function(c){var d=Ia.rationalCurvePoint(a,c[0]),e=Ia.rationalCurvePoint(b,c[1]),f=Ca.sub(d,e);return Ca.dot(f,f)},g=function(c){var d=Ia.rationalCurveDerivatives(a,c[0],1),e=Ia.rationalCurveDerivatives(b,c[1],1),f=Ca.sub(d[0],e[0]),g=d[1],h=Ca.mul(-1,e[1]);return[2*Ca.dot(g,f),2*Ca.dot(h,f)]},h=xa.uncmin(f,[c,d],e*e,g),i=h.solution[0],j=h.solution[1],k=Ia.rationalCurvePoint(a,i),l=Ia.rationalCurvePoint(b,j);return new ba(k,l,i,j)},Ja.triangles=function(a,b,c,d){var e=a.faces[b],f=c.faces[d],g=va.getTriangleNorm(a.points,e),h=va.getTriangleNorm(c.points,f),i=a.points[e[0]],j=c.points[f[0]],k=Ja.planes(i,g,j,h);if(null==k)return null;var l=Ja.clipRayInCoplanarTriangle(k,a,b);if(null==l)return null;var m=Ja.clipRayInCoplanarTriangle(k,c,d);if(null==m)return null;var n=Ja.mergeTriangleClipIntervals(l,m,a,b,c,d);return null==n?null:new aa(new da(n.min.uv0,n.min.uv1,n.min.point,b,d),new da(n.max.uv0,n.max.uv1,n.max.point,b,d))},Ja.clipRayInCoplanarTriangle=function(a,b,c){for(var d=b.faces[c],e=[b.points[d[0]],b.points[d[1]],b.points[d[2]]],f=[b.uvs[d[0]],b.uvs[d[1]],b.uvs[d[2]]],g=[Ca.sub(f[1],f[0]),Ca.sub(f[2],f[1]),Ca.sub(f[0],f[2])],h=[Ca.sub(e[1],e[0]),Ca.sub(e[2],e[1]),Ca.sub(e[0],e[2])],i=h.map(Ca.normalized),j=h.map(Ca.norm),k=null,l=null,m=0;m<3;){var n=m++,o=e[n],p=i[n],q=Ja.rays(o,p,a.origin,a.dir);if(null!=q){var r=q.u0,s=q.u1;r<-S.EPSILON||r>j[n]+S.EPSILON||((null==k||s<k.u)&&(k=new ha(s,Ca.onRay(a.origin,a.dir,s),Ca.onRay(f[n],g[n],r/j[n]))),(null==l||s>l.u)&&(l=new ha(s,Ca.onRay(a.origin,a.dir,s),Ca.onRay(f[n],g[n],r/j[n]))))}}return null==l||null==k?null:new aa(k,l)},Ja.mergeTriangleClipIntervals=function(a,b,c,d,e,f){if(b.min.u>a.max.u+S.EPSILON||a.min.u>b.max.u+S.EPSILON)return null;var g;g=a.min.u>b.min.u?new _(a.min,0):new _(b.min,1);var h;h=a.max.u<b.max.u?new _(a.max,0):new _(b.max,1);var i=new aa(new da(null,null,g.item0.point,d,f),new da(null,null,h.item0.point,d,f));return 0==g.item1?(i.min.uv0=g.item0.uv,i.min.uv1=va.triangleUVFromPoint(e,f,g.item0.point)):(i.min.uv0=va.triangleUVFromPoint(c,d,g.item0.point),i.min.uv1=g.item0.uv),0==h.item1?(i.max.uv0=h.item0.uv,i.max.uv1=va.triangleUVFromPoint(e,f,h.item0.point)):(i.max.uv0=va.triangleUVFromPoint(c,d,h.item0.point),i.max.uv1=h.item0.uv),i},Ja.planes=function(a,b,c,d){var e=Ca.cross(b,d);if(Ca.dot(e,e)<S.EPSILON)return null;var f=0,g=Math.abs(e[0]),h=Math.abs(e[1]),i=Math.abs(e[2]);h>g&&(f=1,g=h),i>g&&(f=2,g=i);var j,k,l,m;0==f?(j=b[1],k=b[2],l=d[1],m=d[2]):1==f?(j=b[0],k=b[2],l=d[0],m=d[2]):(j=b[0],k=b[1],l=d[0],m=d[1]);var n,o=-Ca.dot(a,b),p=-Ca.dot(c,d),q=j*m-k*l,r=(k*p-o*m)/q,s=(o*l-j*p)/q;return n=0==f?[0,r,s]:1==f?[r,0,s]:[r,s,0],new V(n,Ca.normalized(e))},Ja.threePlanes=function(a,b,c,d,e,f){var g=Ca.cross(c,e),h=Ca.dot(a,g);if(Math.abs(h)<S.EPSILON)return null;var i=Ca.sub(Ca.mul(f,c),Ca.mul(d,e)),j=Ca.add(Ca.mul(b,g),Ca.cross(a,i));return Ca.mul(1/h,j)},Ja.polylines=function(a,b,c){for(var d=Ja.boundingBoxTrees(new ra(a),new ra(b),c),e=[],f=0;f<d.length;){var g=d[f];++f;var h=g.item0,i=g.item1,j=Ja.segments(a.points[h],a.points[h+1],b.points[i],b.points[i+1],c);null!=j&&(j.u0=Ca.lerp(j.u0,[a.params[h]],[a.params[h+1]])[0],j.u1=Ca.lerp(j.u1,[b.params[i]],[b.params[i+1]])[0],e.push(j))}return e},Ja.segments=function(a,b,c,d,e){var f=Ca.sub(b,a),g=Math.sqrt(Ca.dot(f,f)),h=Ca.mul(1/g,f),i=Ca.sub(d,c),j=Math.sqrt(Ca.dot(i,i)),k=Ca.mul(1/j,i),l=Ja.rays(a,h,c,k);if(null!=l){var m=Math.min(Math.max(0,l.u0/g),1),n=Math.min(Math.max(0,l.u1/j),1),o=Ca.onRay(a,f,m),p=Ca.onRay(c,i,n);if(Ca.distSquared(o,p)<e*e)return new ba(o,p,m,n)}return null},Ja.rays=function(a,b,c,d){var e=Ca.dot(b,d),f=Ca.dot(b,c),g=Ca.dot(b,a),h=Ca.dot(d,c),i=Ca.dot(d,a),j=Ca.dot(b,b),k=Ca.dot(d,d),l=j*k-e*e;if(Math.abs(l)<S.EPSILON)return null;var m=e*(f-g)-j*(h-i),n=m/l,o=(f-g+n*e)/j,p=Ca.onRay(a,b,o),q=Ca.onRay(c,d,n);return new ba(p,q,o,n)},Ja.segmentWithTriangle=function(a,b,c,d){var e=c[d[0]],f=c[d[1]],g=c[d[2]],h=Ca.sub(f,e),i=Ca.sub(g,e),j=Ca.cross(h,i),k=Ca.sub(b,a),l=Ca.sub(a,e),m=-Ca.dot(j,l),n=Ca.dot(j,k);if(Math.abs(n)<S.EPSILON)return null;var o=m/n;if(o<0||o>1)return null;var p=Ca.add(a,Ca.mul(o,k)),q=Ca.dot(h,i),r=Ca.dot(h,h),s=Ca.dot(i,i),t=Ca.sub(p,e),u=Ca.dot(t,h),v=Ca.dot(t,i),w=q*q-r*s;if(Math.abs(w)<S.EPSILON)return null;var x=(q*v-s*u)/w,y=(q*u-r*v)/w;return x>1+S.EPSILON||y>1+S.EPSILON||y<-S.EPSILON||x<-S.EPSILON||x+y>1+S.EPSILON?null:new ga(p,x,y,o)},Ja.segmentAndPlane=function(a,b,c,d){var e=Ca.dot(d,Ca.sub(b,a));if(Math.abs(e)<S.EPSILON)return null;var f=Ca.dot(d,Ca.sub(c,a)),g=f/e;return g>1+S.EPSILON||g<-S.EPSILON?null:{p:g}};var Ka=b.eval.Make=function(){};g["verb.eval.Make"]=Ka,Ka.__name__=["verb","eval","Make"],Ka.rationalTranslationalSurface=function(a,b){for(var c=Ia.rationalCurvePoint(b,P.first(b.knots)),d=P.first(b.knots),e=P.last(b.knots),f=2*b.controlPoints.length,g=(e-d)/(f-1),h=[],i=0;i<f;){var j=i++,k=Ca.sub(Ia.rationalCurvePoint(b,d+j*g),c),l=La.rationalCurveTransform(a,[[1,0,0,k[0]],[0,1,0,k[1]],[0,0,1,k[2]],[0,0,0,1]]);h.push(l)}return Ka.loftedSurface(h)},Ka.surfaceBoundaryCurves=function(a){return[Ka.surfaceIsocurve(a,P.first(a.knotsU),!1),Ka.surfaceIsocurve(a,P.last(a.knotsU),!1),Ka.surfaceIsocurve(a,P.first(a.knotsV),!0),Ka.surfaceIsocurve(a,P.last(a.knotsV),!0)]},Ka.surfaceIsocurve=function(a,b,c){null==c&&(c=!1);var d;d=c?a.knotsV:a.knotsU;var e;e=c?a.degreeV:a.degreeU;for(var f=Da.knotMultiplicities(d),g=-1,h=0,i=f.length;h<i;){var j=h++;if(Math.abs(b-f[j].knot)<S.EPSILON){g=j;break}}var k=e+1;g>=0&&(k-=f[g].mult);var l;l=k>0?La.surfaceKnotRefine(a,Ca.rep(k,b),c):a;var m=Ia.knotSpan(e,b,d);return Math.abs(b-P.first(d))<S.EPSILON?m=0:Math.abs(b-P.last(d))<S.EPSILON&&(m=(c?l.controlPoints[0].length:l.controlPoints.length)-1),c?new W(l.degreeU,l.knotsU,function(a){for(var b=[],c=0,d=l.controlPoints;c<d.length;){var e=d[c];++c,b.push(e[m])}return b}()):new W(l.degreeV,l.knotsV,l.controlPoints[m])},Ka.loftedSurface=function(a,b){a=La.unifyCurveKnotVectors(a);var c=a[0].degree;null==b&&(b=3),b>a.length-1&&(b=a.length-1);for(var d=a[0].knots,e=[],f=[],g=0,h=a[0].controlPoints.length;g<h;){var i=[g++],j=a.map(function(a){return function(b){return b.controlPoints[a[0]]}}(i)),k=Ka.rationalInterpCurve(j,b,!0);f.push(k.controlPoints),e=k.knots}return new X(c,b,d,e,f)},Ka.clonedCurve=function(a){return new W(a.degree,a.knots.slice(),a.controlPoints.map(function(a){return a.slice()}))},Ka.rationalBezierCurve=function(a,b){for(var c=a.length-1,d=[],e=0,f=c+1;e<f;){e++;d.push(0)}for(var g=0,h=c+1;g<h;){g++;d.push(1)}return null==b&&(b=Ca.rep(a.length,1)),new W(c,d,Ia.homogenize1d(a,b))},Ka.fourPointSurface=function(a,b,c,d,e){null==e&&(e=3);for(var f=e,g=[],h=0,i=e+1;h<i;){for(var j=h++,k=[],l=0,m=e+1;l<m;){var n=l++,o=1-j/f,p=Ca.lerp(o,a,b),q=Ca.lerp(o,d,c),r=Ca.lerp(1-n/f,p,q);r.push(1),k.push(r)}g.push(k)}var s=Ca.rep(e+1,0),t=Ca.rep(e+1,1);return new X(e,e,s.concat(t),s.concat(t),g)},Ka.ellipseArc=function(a,b,c,d,e){var f=Ca.norm(b),g=Ca.norm(c);b=Ca.normalized(b),c=Ca.normalized(c),e<d&&(e=2*Math.PI+d);var h=e-d,i=0;i=h<=Math.PI/2?1:h<=Math.PI?2:h<=3*Math.PI/2?3:4;var j=h/i,k=Math.cos(j/2),l=Ca.add(a,Ca.add(Ca.mul(f*Math.cos(d),b),Ca.mul(g*Math.sin(d),c))),m=Ca.sub(Ca.mul(Math.cos(d),c),Ca.mul(Math.sin(d),b)),n=[],o=Ca.zeros1d(2*i+3),p=0,q=d,r=Ca.zeros1d(2*i);n[0]=l,r[0]=1;for(var s=1,t=i+1;s<t;){var u=s++;q+=j;var v=Ca.add(a,Ca.add(Ca.mul(f*Math.cos(q),b),Ca.mul(g*Math.sin(q),c)));r[p+2]=1,n[p+2]=v;var w=Ca.sub(Ca.mul(Math.cos(q),c),Ca.mul(Math.sin(q),b)),x=Ja.rays(l,Ca.mul(1/Ca.norm(m),m),v,Ca.mul(1/Ca.norm(w),w)),y=Ca.add(l,Ca.mul(x.u0,m));r[p+1]=k,n[p+1]=y,p+=2,u<i&&(l=v,m=w)}for(var z=2*i+1,A=0;A<3;){var B=A++;o[B]=0,o[B+z]=1}switch(i){case 2:o[3]=o[4]=.5;break;case 3:o[3]=o[4]=.3333333333333333,o[5]=o[6]=.6666666666666666;break;case 4:o[3]=o[4]=.25,o[5]=o[6]=.5,o[7]=o[8]=.75}return new W(2,o,Ia.homogenize1d(n,r))},Ka.arc=function(a,b,c,d,e,f){return Ka.ellipseArc(a,Ca.mul(d,Ca.normalized(b)),Ca.mul(d,Ca.normalized(c)),e,f)},Ka.polyline=function(a){for(var b=[0,0],c=0,d=0,e=a.length-1;d<e;){var f=d++;c+=Ca.dist(a[f],a[f+1]),b.push(c)}b.push(c),b=Ca.mul(1/c,b);for(var g,h=[],i=0,j=a.length;i<j;){i++;h.push(1)}return g=h,new W(1,b,Ia.homogenize1d(a.slice(0),g))},Ka.extrudedSurface=function(a,b,c){for(var d=[[],[],[]],e=[[],[],[]],f=Ia.dehomogenize1d(c.controlPoints),g=Ia.weight1d(c.controlPoints),h=Ca.mul(b,a),i=Ca.mul(.5*b,a),j=0,k=f.length;j<k;){var l=j++;d[2][l]=f[l],d[1][l]=Ca.add(i,f[l]),d[0][l]=Ca.add(h,f[l]),e[0][l]=g[l],e[1][l]=g[l],e[2][l]=g[l]}return new X(2,c.degree,[0,0,0,1,1,1],c.knots,Ia.homogenize2d(d,e))},Ka.cylindricalSurface=function(a,b,c,d,e){var f=Ca.cross(a,b),g=(Math.PI,Ka.arc(c,b,f,e,0,2*Math.PI));return Ka.extrudedSurface(a,d,g)},Ka.revolvedSurface=function(a,b,c,d){var e,f,g=Ia.dehomogenize1d(a.controlPoints),h=Ia.weight1d(a.controlPoints);d<=Math.PI/2?(e=1,f=Ca.zeros1d(6+2*(e-1))):d<=Math.PI?(e=2,f=Ca.zeros1d(6+2*(e-1)),f[3]=f[4]=.5):d<=3*Math.PI/2?(e=3,f=Ca.zeros1d(6+2*(e-1)),f[3]=f[4]=.3333333333333333,f[5]=f[6]=.6666666666666666):(e=4,f=Ca.zeros1d(6+2*(e-1)),f[3]=f[4]=.25,f[5]=f[6]=.5,f[7]=f[8]=.75);for(var i=d/e,j=3+2*(e-1),k=0;k<3;){var l=k++;f[l]=0,f[j+l]=1}for(var m=Math.cos(i/2),n=0,o=Ca.zeros1d(e+1),p=Ca.zeros1d(e+1),q=Ca.zeros3d(2*e+1,g.length,3),r=Ca.zeros2d(2*e+1,g.length),s=1,t=e+1;s<t;){var u=s++;n+=i,p[u]=Math.cos(n),o[u]=Math.sin(n)}for(var v=0,w=g.length;v<w;){var x=v++,y=Ba.rayClosestPoint(g[x],b,c),z=Ca.sub(g[x],y),A=Ca.norm(z),B=Ca.cross(c,z);A>S.EPSILON&&(z=Ca.mul(1/A,z),B=Ca.mul(1/A,B)),q[0][x]=g[x];var C=g[x];r[0][x]=h[x];for(var D=B,E=0,F=1,G=e+1;F<G;){var H,I=F++;H=0==A?y:Ca.add(y,Ca.add(Ca.mul(A*p[I],z),Ca.mul(A*o[I],B))),q[E+2][x]=H,r[E+2][x]=h[x];var J=Ca.sub(Ca.mul(p[I],B),Ca.mul(o[I],z));if(0==A)q[E+1][x]=y;else{var K=Ja.rays(C,Ca.mul(1/Ca.norm(D),D),H,Ca.mul(1/Ca.norm(J),J)),L=Ca.add(C,Ca.mul(K.u0,D));q[E+1][x]=L}r[E+1][x]=m*h[x],E+=2,I<e&&(C=H,D=J)}}return new X(2,a.degree,f,a.knots,Ia.homogenize2d(q,r))},Ka.sphericalSurface=function(a,b,c,d){var e=Ka.arc(a,Ca.mul(-1,b),c,d,0,Math.PI);return Ka.revolvedSurface(e,a,b,2*Math.PI)},Ka.conicalSurface=function(a,b,c,d,e){var f=2*Math.PI,g=1,h=[Ca.add(c,Ca.mul(d,a)),Ca.add(c,Ca.mul(e,b))],i=[0,0,1,1],j=[1,1],k=new W(g,i,Ia.homogenize1d(h,j));return Ka.revolvedSurface(k,c,a,f)},Ka.rationalInterpCurve=function(a,b,c,d,e){if(null==c&&(c=!1),null==b&&(b=3),a.length<b+1)throw new C("You need to supply at least degree + 1 points! You only supplied "+a.length+" points.");for(var f=[0],g=1,h=a.length;g<h;){var i=g++,j=Ca.norm(Ca.sub(a[i],a[i-1])),k=f[f.length-1];f.push(k+j)}for(var l=f[f.length-1],m=0,n=f.length;m<n;){var o=m++;f[o]=f[o]/l}var p,q=Ca.rep(b+1,0),r=null!=d&&null!=e;p=r?0:1;var s;s=r?f.length-b+1:f.length-b;for(var t=p;t<s;){for(var u=t++,v=0,w=0;w<b;){v+=f[u+w++]}q.push(1/b*v)}var x,y=q.concat(Ca.rep(b+1,1)),z=[];x=r?a.length+1:a.length-1;var A;A=r?a.length-(b-1):a.length-(b+1);for(var B=0;B<f.length;){var D=f[B];++B;var E=Ia.knotSpanGivenN(x,b,D,y),F=Ia.basisFunctionsGivenKnotSpanIndex(E,D,b,y),G=E-b,H=Ca.zeros1d(G),I=Ca.zeros1d(A-G)
;z.push(H.concat(F).concat(I))}if(r){var J=z[0].length-2,K=[-1,1].concat(Ca.zeros1d(J)),L=Ca.zeros1d(J).concat([-1,1]);P.spliceAndInsert(z,1,0,K),P.spliceAndInsert(z,z.length-1,0,L)}for(var M=a[0].length,N=[],O=(1-y[y.length-b-2])/b,Q=y[b+1]/b,R=0;R<M;){var S,T=[R++];if(r){S=[a[0][T[0]]],S.push(Q*d[T[0]]);for(var U=1,V=a.length-1;U<V;){var X=U++;S.push(a[X][T[0]])}S.push(O*e[T[0]]),S.push(P.last(a)[T[0]])}else S=a.map(function(a){return function(b){return b[a[0]]}}(T));var Y=ta.solve(z,S);N.push(Y)}var Z=ta.transpose(N);if(!c){var $=Ca.rep(Z.length,1);Z=Ia.homogenize1d(Z,$)}return new W(b,y,Z)};var La=b.eval.Modify=function(){};g["verb.eval.Modify"]=La,La.__name__=["verb","eval","Modify"],La.curveReverse=function(a){return new W(a.degree,La.knotsReverse(a.knots),P.reversed(a.controlPoints))},La.surfaceReverse=function(a,b){return null==b&&(b=!1),b?new X(a.degreeU,a.degreeV,a.knotsU,La.knotsReverse(a.knotsV),function(b){for(var c=[],d=0,e=a.controlPoints;d<e.length;){var f=e[d];++d,c.push(P.reversed(f))}return c}()):new X(a.degreeU,a.degreeV,La.knotsReverse(a.knotsU),a.knotsV,P.reversed(a.controlPoints))},La.knotsReverse=function(a){for(var b=P.first(a),c=(P.last(a),[b]),d=a.length,e=1;e<d;){var f=e++;c.push(c[f-1]+(a[d-f]-a[d-f-1]))}return c},La.unifyCurveKnotVectors=function(a){a=a.map(Ka.clonedCurve);for(var b=j.fold(a,function(a,b){return La.imax(a.degree,b)},0),c=0,d=a.length;c<d;){var e=c++;a[e].degree<b&&(a[e]=La.curveElevateDegree(a[e],b))}for(var f,g=[],h=0;h<a.length;){var i=a[h];++h,g.push(new aa(P.first(i.knots),P.last(i.knots)))}f=g;for(var k=0,l=a.length;k<l;){var m=k++,n=[f[m].min];a[m].knots=a[m].knots.map(function(a){return function(b){return b-a[0]}}(n))}for(var o=f.map(function(a){return a.max-a.min}),p=j.fold(o,function(a,b){return Math.max(a,b)},0),q=0,r=a.length;q<r;){var s=q++,t=[p/o[s]];a[s].knots=a[s].knots.map(function(a){return function(b){return b*a[0]}}(t))}for(var u=j.fold(a,function(a,b){return Ca.sortedSetUnion(a.knots,b)},[]),v=0,w=a.length;v<w;){var x=v++,y=Ca.sortedSetSub(u,a[x].knots);0==y.length&&(a[x]=a[x]),a[x]=La.curveKnotRefine(a[x],y)}return a},La.imin=function(a,b){return a<b?a:b},La.imax=function(a,b){return a>b?a:b},La.curveElevateDegree=function(a,b){if(b<=a.degree)return a;var c=a.knots.length-a.degree-2,d=a.degree,e=a.knots,f=a.controlPoints,g=b-a.degree,h=a.controlPoints[0].length,i=Ca.zeros2d(d+g+1,d+1),j=[],k=[],l=[],m=c+d+1,n=b,o=Math.floor(n/2),p=[],q=[];i[0][0]=1,i[n][d]=1;for(var r=1,s=o+1;r<s;)for(var t=r++,u=1/Q.get(n,t),v=La.imin(d,t),w=La.imax(0,t-g),x=v+1;w<x;){var y=w++;i[t][y]=u*Q.get(d,y)*Q.get(g,t-y)}for(var z=o+1;z<n;)for(var A=z++,B=La.imin(d,A),C=La.imax(0,A-g),D=B+1;C<D;){var E=C++;i[A][E]=i[n-A][d-E]}var F=n,G=n+1,H=-1,I=d,J=d+1,K=1,L=e[0];p[0]=f[0];for(var M=0,N=n+1;M<N;){q[M++]=L}for(var O=0,P=d+1;O<P;){var R=O++;j[R]=f[R]}for(;J<m;){for(var S=J;J<m&&e[J]==e[J+1];)J+=1;var T=J-S+1,U=e[J],V=H;H=d-T;var X;X=V>0?Math.floor((V+2)/2):1;var Y;if(Y=H>0?Math.floor(n-(H+1)/2):n,H>0){for(var Z=U-L,$=[],_=d;_>T;)$[_-T-1]=Z/(e[I+_]-L),_--;for(var aa=1,ba=H+1;aa<ba;){for(var ca=aa++,da=H-ca,ea=T+ca,fa=d;fa>=ea;)j[fa]=Ca.add(Ca.mul($[fa-ea],j[fa]),Ca.mul(1-$[fa-ea],j[fa-1])),fa--;l[da]=j[d]}}for(var ga=X,ha=n+1;ga<ha;){var ia=ga++;k[ia]=Ca.zeros1d(h);for(var ja=La.imin(d,ia),ka=La.imax(0,ia-g),la=ja+1;ka<la;){var ma=ka++;k[ia]=Ca.add(k[ia],Ca.mul(i[ia][ma],j[ma]))}}if(V>1)for(var na=G-2,oa=G,pa=U-L,qa=(U-q[G-1])/pa,ra=1;ra<V;){for(var sa=ra++,ta=na,ua=oa,va=ua-G+1;ua-ta>sa;){if(ta<K){var wa=(U-q[ta])/(L-q[ta]);p[ta]=Ca.lerp(wa,p[ta],p[ta-1])}if(ua>=X){if(ua-sa<=G-n+V){var xa=(U-q[ua-sa])/pa;k[va]=Ca.lerp(xa,k[va],k[va+1])}}else k[va]=Ca.lerp(qa,k[va],k[va+1]);ta+=1,ua-=1,va-=1}na-=1,oa+=1}if(I!=d)for(var ya=0,za=n-V;ya<za;){ya++;q[G]=L,G+=1}for(var Aa=X,Ba=Y+1;Aa<Ba;){var Da=Aa++;p[K]=k[Da],K+=1}if(J<m){for(var Ea=0;Ea<H;){var Fa=Ea++;j[Fa]=l[Fa]}for(var Ga=H,Ha=d+1;Ga<Ha;){var Ia=Ga++;j[Ia]=f[J-d+Ia]}I=J,J+=1,L=U}else for(var Ja=0,Ka=n+1;Ja<Ka;){var Ma=Ja++;q[G+Ma]=U}}return F-n-1,new W(b,q,p)},La.rationalSurfaceTransform=function(a,b){for(var c=Ia.dehomogenize2d(a.controlPoints),d=0,e=c.length;d<e;)for(var f=d++,g=0,h=c[f].length;g<h;){var i=g++,j=c[f][i];j.push(1),c[f][i]=ta.dot(b,j).slice(0,j.length-1)}return new X(a.degreeU,a.degreeV,a.knotsU.slice(),a.knotsV.slice(),Ia.homogenize2d(c,Ia.weight2d(a.controlPoints)))},La.rationalCurveTransform=function(a,b){for(var c=Ia.dehomogenize1d(a.controlPoints),d=0,e=c.length;d<e;){var f=d++,g=c[f];g.push(1),c[f]=ta.dot(b,g).slice(0,g.length-1)}return new W(a.degree,a.knots.slice(),Ia.homogenize1d(c,Ia.weight1d(a.controlPoints)))},La.surfaceKnotRefine=function(a,b,c){var d,e,f,g=[];c?(f=a.controlPoints,d=a.knotsV,e=a.degreeV):(f=ta.transpose(a.controlPoints),d=a.knotsU,e=a.degreeU);for(var h=null,i=0;i<f.length;){var j=f[i];++i,h=La.curveKnotRefine(new W(e,d,j),b),g.push(h.controlPoints)}var k=h.knots;return c?new X(a.degreeU,a.degreeV,a.knotsU.slice(),k,g):(g=ta.transpose(g),new X(a.degreeU,a.degreeV,k,a.knotsV.slice(),g))},La.decomposeCurveIntoBeziers=function(a){for(var b=a.degree,c=a.controlPoints,d=a.knots,e=Da.knotMultiplicities(d),f=b+1,g=0;g<e.length;){var h=e[g];if(++g,h.mult<f){var i=Ca.rep(f-h.mult,h.knot),j=La.curveKnotRefine(new W(b,d,c),i);d=j.knots,c=j.controlPoints}}for(var k=(d.length,2*f),l=[],m=0;m<c.length;){var n=d.slice(m,m+k),o=c.slice(m,m+f);l.push(new W(b,n,o)),m+=f}return l},La.curveKnotRefine=function(a,b){if(0==b.length)return Ka.clonedCurve(a);for(var c=a.degree,d=a.controlPoints,e=a.knots,f=d.length-1,g=f+c+1,h=b.length-1,i=Ia.knotSpan(c,b[0],e),j=Ia.knotSpan(c,b[h],e),k=[],l=[],m=0,n=i-c+1;m<n;){var o=m++;k[o]=d[o]}for(var p=j-1,q=f+1;p<q;){var r=p++;k[r+h+1]=d[r]}for(var s=0,t=i+1;s<t;){var u=s++;l[u]=e[u]}for(var v=j+c,w=g+1;v<w;){var x=v++;l[x+h+1]=e[x]}for(var y=j+c-1,z=j+c+h,A=h;A>=0;){for(;b[A]<=e[y]&&y>i;)k[z-c-1]=d[y-c-1],l[z]=e[y],z-=1,y-=1;k[z-c-1]=k[z-c];for(var B=1,C=c+1;B<C;){var D=B++,E=z-c+D,F=l[z+D]-b[A];Math.abs(F)<S.EPSILON?k[E-1]=k[E]:(F/=l[z+D]-e[y-c+D],k[E-1]=Ca.add(Ca.mul(F,k[E-1]),Ca.mul(1-F,k[E])))}l[z]=b[A],z-=1,A--}return new W(c,l,k)},La.curveKnotInsert=function(a,b,c){for(var d=a.degree,e=a.controlPoints,f=a.knots,g=0,h=e.length,i=Ia.knotSpan(d,b,f),j=[],k=[],l=[],m=1,n=i+1;m<n;){var o=m++;k[o]=f[o]}for(var p=1,q=c+1;p<q;){k[i+p++]=b}for(var r=i+1,s=f.length;r<s;){var t=r++;k[t+c]=f[t]}for(var u=0,v=i-d+1;u<v;){var w=u++;l[w]=e[w]}for(var x=i-g;x<h;){var y=x++;l[y+c]=e[y]}for(var z=0,A=d-g+1;z<A;){var B=z++;j[B]=e[i-d+B]}for(var C=0,D=0,E=1,F=c+1;E<F;){var G=E++;C=i-d+G;for(var H=0,I=d-G-g+1;H<I;){var J=H++;D=(b-f[C+J])/(f[J+i+1]-f[C+J]),j[J]=Ca.add(Ca.mul(D,j[J+1]),Ca.mul(1-D,j[J]))}l[C]=j[0],l[i+c-G-g]=j[d-G-g]}for(var K=C+1,L=i-g;K<L;){var M=K++;l[M]=j[M-C]}return new W(d,k,l)};var Ma=b.eval.Tess=function(){};g["verb.eval.Tess"]=Ma,Ma.__name__=["verb","eval","Tess"],Ma.rationalCurveRegularSample=function(a,b,c){return Ma.rationalCurveRegularSampleRange(a,a.knots[0],P.last(a.knots),b,c)},Ma.rationalCurveRegularSampleRange=function(a,b,c,d,e){d<1&&(d=2);for(var f=[],g=(c-b)/(d-1),h=0,i=0;i<d;){h=b+g*i++,e?f.push([h].concat(Ia.rationalCurvePoint(a,h))):f.push(Ia.rationalCurvePoint(a,h))}return f},Ma.rationalCurveAdaptiveSample=function(a,b,c){if(null==c&&(c=!1),null==b&&(b=1e-6),1==a.degree){if(c){for(var d=[],e=0,f=a.controlPoints.length;e<f;){var g=e++;d.push([a.knots[g+1]].concat(Ia.dehomogenize(a.controlPoints[g])))}return d}return a.controlPoints.map(Ia.dehomogenize)}return Ma.rationalCurveAdaptiveSampleRange(a,a.knots[0],P.last(a.knots),b,c)},Ma.rationalCurveAdaptiveSampleRange=function(a,b,c,d,e){var f=Ia.rationalCurvePoint(a,b),g=Ia.rationalCurvePoint(a,c),h=.5+.2*Math.random(),i=b+(c-b)*h,j=Ia.rationalCurvePoint(a,i),k=Ca.sub(f,g),l=Ca.sub(f,j);if(Ca.dot(k,k)<d&&Ca.dot(l,l)>d||!Ba.threePointsAreFlat(f,j,g,d)){var m=b+.5*(c-b),n=Ma.rationalCurveAdaptiveSampleRange(a,b,m,d,e),o=Ma.rationalCurveAdaptiveSampleRange(a,m,c,d,e);return n.slice(0,-1).concat(o)}return e?[[b].concat(f),[c].concat(g)]:[f,g]},Ma.rationalSurfaceNaive=function(a,b,c){b<1&&(b=1),c<1&&(c=1);for(var d=(a.degreeU,a.degreeV,a.controlPoints,a.knotsU),e=a.knotsV,f=P.last(d)-d[0],g=P.last(e)-e[0],h=f/b,i=g/c,j=[],k=[],l=[],m=0,n=b+1;m<n;)for(var o=m++,p=0,q=c+1;p<q;){var r=p++,s=o*h,t=r*i;k.push([s,t]);var u=Ia.rationalSurfaceDerivatives(a,s,t,1),v=u[0][0];j.push(v);var w=Ca.normalized(Ca.cross(u[1][0],u[0][1]));l.push(w)}for(var x=[],y=0;y<b;)for(var z=y++,A=0;A<c;){var B=A++,C=z*(c+1)+B,D=(z+1)*(c+1)+B,E=D+1,F=C+1,G=[C,D,E],H=[C,E,F];x.push(G),x.push(H)}return new Y(x,j,l,k)},Ma.divideRationalSurfaceAdaptive=function(a,b){null==b&&(b=new Na),null!=b.minDivsU?b.minDivsU=b.minDivsU:b.minDivsU=1,null!=b.minDivsV?b.minDivsU=b.minDivsV:b.minDivsU=1,null!=b.refine?b.refine=b.refine:b.refine=!0;var c,d=2*(a.controlPoints.length-1),e=2*(a.controlPoints[0].length-1);c=b.minDivsU>d?b.minDivsU=b.minDivsU:b.minDivsU=d;var f;f=b.minDivsV>e?b.minDivsV=b.minDivsV:b.minDivsV=e;for(var g=P.last(a.knotsU),h=a.knotsU[0],i=P.last(a.knotsV),j=a.knotsV[0],k=(g-h)/c,l=(i-j)/f,m=[],n=[],o=0,p=f+1;o<p;){for(var q=o++,r=[],s=0,t=c+1;s<t;){var u=s++,v=h+k*u,w=j+l*q,x=Ia.rationalSurfaceDerivatives(a,v,w,1),y=Ca.normalized(Ca.cross(x[0][1],x[1][0]));r.push(new ia(x[0][0],y,[v,w],-1,Ca.isZero(y)))}n.push(r)}for(var z=0;z<f;)for(var A=z++,B=0;B<c;){var C=B++,D=[n[f-A-1][C],n[f-A-1][C+1],n[f-A][C+1],n[f-A][C]];m.push(new Oa(a,D))}if(!b.refine)return m;for(var E=0;E<f;)for(var F=E++,G=0;G<c;){var H=G++,I=F*c+H,J=Ma.north(I,F,H,c,f,m),K=Ma.east(I,F,H,c,f,m),L=Ma.south(I,F,H,c,f,m),M=Ma.west(I,F,H,c,f,m);m[I].neighbors=[L,K,J,M],m[I].divide(b)}return m},Ma.north=function(a,b,c,d,e,f){return 0==b?null:f[a-d]},Ma.south=function(a,b,c,d,e,f){return b==e-1?null:f[a+d]},Ma.east=function(a,b,c,d,e,f){return c==d-1?null:f[a+1]},Ma.west=function(a,b,c,d,e,f){return 0==c?null:f[a-1]},Ma.triangulateAdaptiveRefinementNodeTree=function(a){for(var b=Y.empty(),c=0;c<a.length;){var d=a[c];++c,d.triangulate(b)}return b},Ma.rationalSurfaceAdaptive=function(a,b){b=null!=b?b:new Na;var c=Ma.divideRationalSurfaceAdaptive(a,b);return Ma.triangulateAdaptiveRefinementNodeTree(c)};var Na=b.core.AdaptiveRefinementOptions=function(){this.minDivsV=1,this.minDivsU=1,this.refine=!0,this.maxDepth=10,this.minDepth=0,this.normTol=.025};g["verb.eval.AdaptiveRefinementOptions"]=Na,Na.__name__=["verb","eval","AdaptiveRefinementOptions"],Na.prototype={__class__:Na};var Oa=b.core.AdaptiveRefinementNode=function(a,b,c){if(this.srf=a,this.neighbors=null==c?[null,null,null,null]:c,this.corners=b,null==this.corners){var d=a.knotsU[0],e=P.last(a.knotsU),f=a.knotsV[0],g=P.last(a.knotsV);this.corners=[ia.fromUv(d,f),ia.fromUv(e,f),ia.fromUv(e,g),ia.fromUv(d,g)]}};g["verb.eval.AdaptiveRefinementNode"]=Oa,Oa.__name__=["verb","eval","AdaptiveRefinementNode"],Oa.prototype={isLeaf:function(){return null==this.children},center:function(){return null!=this.centerPoint?this.centerPoint:this.evalSrf(this.u05,this.v05)},evalCorners:function(){this.u05=(this.corners[0].uv[0]+this.corners[2].uv[0])/2,this.v05=(this.corners[0].uv[1]+this.corners[2].uv[1])/2;for(var a=0;a<4;){var b=a++;if(null==this.corners[b].point){var c=this.corners[b];this.evalSrf(c.uv[0],c.uv[1],c)}}},evalSrf:function(a,b,c){var d=Ia.rationalSurfaceDerivatives(this.srf,a,b,1),e=d[0][0],f=Ca.cross(d[0][1],d[1][0]),g=Ca.isZero(f);return g||(f=Ca.normalized(f)),null!=c?(c.degen=g,c.point=e,c.normal=f,c):new ia(e,f,[a,b],-1,g)},getEdgeCorners:function(a){if(this.isLeaf())return[this.corners[a]];if(this.horizontal)switch(a){case 0:return this.children[0].getEdgeCorners(0);case 1:return this.children[0].getEdgeCorners(1).concat(this.children[1].getEdgeCorners(1));case 2:return this.children[1].getEdgeCorners(2);case 3:return this.children[1].getEdgeCorners(3).concat(this.children[0].getEdgeCorners(3))}switch(a){case 0:return this.children[0].getEdgeCorners(0).concat(this.children[1].getEdgeCorners(0));case 1:return this.children[1].getEdgeCorners(1);case 2:return this.children[1].getEdgeCorners(2).concat(this.children[0].getEdgeCorners(2));case 3:return this.children[0].getEdgeCorners(3)}return null},getAllCorners:function(a){var b=[this.corners[a]];if(null==this.neighbors[a])return b;var c=this.neighbors[a].getEdgeCorners((a+2)%4),d=a%2,e=S.EPSILON,f=this,g=[function(a){return a.uv[0]>f.corners[0].uv[0]+e&&a.uv[0]<f.corners[2].uv[0]-e},function(a){return a.uv[1]>f.corners[0].uv[1]+e&&a.uv[1]<f.corners[2].uv[1]-e}],h=c.filter(g[d]);return h.reverse(),b.concat(h)},midpoint:function(a){if(null==this.midPoints&&(this.midPoints=[null,null,null,null]),null!=this.midPoints[a])return this.midPoints[a];switch(a){case 0:this.midPoints[0]=this.evalSrf(this.u05,this.corners[0].uv[1]);break;case 1:this.midPoints[1]=this.evalSrf(this.corners[1].uv[0],this.v05);break;case 2:this.midPoints[2]=this.evalSrf(this.u05,this.corners[2].uv[1]);break;case 3:this.midPoints[3]=this.evalSrf(this.corners[0].uv[0],this.v05)}return this.midPoints[a]},hasBadNormals:function(){return this.corners[0].degen||this.corners[1].degen||this.corners[2].degen||this.corners[3].degen},fixNormals:function(){for(var a=this.corners.length,b=0;b<a;){var c=b++;this.corners[c];if(this.corners[c].degen){var d=this.corners[(c+1)%a],e=this.corners[(c+3)%a];d.degen?this.corners[c].normal=e.normal:this.corners[c].normal=d.normal}}},shouldDivide:function(a,b){if(b<a.minDepth)return!0;if(b>=a.maxDepth)return!1;if(this.hasBadNormals())return this.fixNormals(),!1;if(this.splitVert=Ca.normSquared(Ca.sub(this.corners[0].normal,this.corners[1].normal))>a.normTol||Ca.normSquared(Ca.sub(this.corners[2].normal,this.corners[3].normal))>a.normTol,this.splitHoriz=Ca.normSquared(Ca.sub(this.corners[1].normal,this.corners[2].normal))>a.normTol||Ca.normSquared(Ca.sub(this.corners[3].normal,this.corners[0].normal))>a.normTol,this.splitVert||this.splitHoriz)return!0;var c=this.center();return Ca.normSquared(Ca.sub(c.normal,this.corners[0].normal))>a.normTol||Ca.normSquared(Ca.sub(c.normal,this.corners[1].normal))>a.normTol||Ca.normSquared(Ca.sub(c.normal,this.corners[2].normal))>a.normTol||Ca.normSquared(Ca.sub(c.normal,this.corners[3].normal))>a.normTol},divide:function(a){null==a&&(a=new Na),null==a.normTol&&(a.normTol=.085),null==a.minDepth&&(a.minDepth=0),null==a.maxDepth&&(a.maxDepth=10),this._divide(a,0,!0)},_divide:function(a,b,c){if(this.evalCorners(),this.shouldDivide(a,b)){if(b++,this.splitVert&&!this.splitHoriz?c=!1:!this.splitVert&&this.splitHoriz&&(c=!0),this.horizontal=c,this.horizontal){var d=[this.corners[0],this.corners[1],this.midpoint(1),this.midpoint(3)],e=[this.midpoint(3),this.midpoint(1),this.corners[2],this.corners[3]];this.children=[new Oa(this.srf,d),new Oa(this.srf,e)],this.children[0].neighbors=[this.neighbors[0],this.neighbors[1],this.children[1],this.neighbors[3]],this.children[1].neighbors=[this.children[0],this.neighbors[1],this.neighbors[2],this.neighbors[3]]}else{var f=[this.corners[0],this.midpoint(0),this.midpoint(2),this.corners[3]],g=[this.midpoint(0),this.corners[1],this.corners[2],this.midpoint(2)];this.children=[new Oa(this.srf,f),new Oa(this.srf,g)],this.children[0].neighbors=[this.neighbors[0],this.children[1],this.neighbors[2],this.neighbors[3]],this.children[1].neighbors=[this.neighbors[0],this.neighbors[1],this.neighbors[2],this.children[0]]}for(var h=0,i=this.children;h<i.length;){var j=i[h];++h,j._divide(a,b,!c)}}},triangulate:function(a){if(null==a&&(a=Y.empty()),this.isLeaf())return this.triangulateLeaf(a);for(var b=0,c=this.children;b<c.length;){var d=c[b];if(++b,null==d)break;d.triangulate(a)}return a},triangulateLeaf:function(a){for(var b=a.points.length,c=[],d=[],e=0,f=0;f<4;){var g=f++,h=this.getAllCorners(g);2==h.length&&(e=g+1);for(var i=0,j=h.length;i<j;){var k=i++;c.push(h[k])}}for(var l=0;l<c.length;){var m=c[l];++l,-1==m.id?(a.uvs.push(m.uv),a.points.push(m.point),a.normals.push(m.normal),m.id=b,d.push(b),b++):d.push(m.id)}if(4==c.length)return a.faces.push([d[0],d[3],d[1]]),a.faces.push([d[3],d[2],d[1]]),a;if(5==c.length){var n=d.length;return a.faces.push([d[e],d[(e+2)%n],d[(e+1)%n]]),a.faces.push([d[(e+4)%n],d[(e+3)%n],d[e]]),a.faces.push([d[e],d[(e+3)%n],d[(e+2)%n]]),a}var o=this.center();a.uvs.push(o.uv),a.points.push(o.point),a.normals.push(o.normal);for(var p=a.points.length-1,q=0,r=c.length-1;q<c.length;)a.faces.push([p,d[q],d[r]]),r=q++;return a},__class__:Oa};var Pa=b.exe.Dispatcher=function(){};g["verb.exe.Dispatcher"]=Pa,Pa.__name__=["verb","exe","Dispatcher"],Pa.init=function(){Pa._init||(Pa._workerPool=new Qa(Pa.THREADS),Pa._init=!0)},Pa.dispatchMethod=function(a,b,c){Pa.init();var d=new I,e=function(a){d.resolve(a)};return Pa._workerPool.addWork(q.getClassName(a),b,c,e),new J(d)};var Qa=b.exe.WorkerPool=function(a,b){null==b&&(b="verb.js"),null==a&&(a=1),this._callbacks=new v,this._working=new v,this._pool=[],this._queue=[];for(var c=0;c<a;){var d;c++;try{d=new Worker(Qa.basePath+b)}catch(e){e instanceof C&&(e=e.val),d=new Worker(Qa.basePath+b.substring(0,-3)+".min.js")}this._pool.push(d)}};g["verb.exe.WorkerPool"]=Qa,Qa.__name__=["verb","exe","WorkerPool"],Qa.prototype={addWork:function(a,b,c,d){var e=new Ra(a,b,c);this._callbacks.set(e.id,d),this._queue.push(e),this.processQueue()},processQueue:function(){for(var b=this;this._queue.length>0&&this._pool.length>0;){var c=this._queue.shift(),d=[c.id],e=[this._pool.shift()];this._working.h[d[0]]=e[0],e[0].onmessage=function(c,d){return function(e){b._working.remove(d[0]),b._pool.push(c[0]);try{b._callbacks.h.hasOwnProperty(d[0])&&(b._callbacks.h[d[0]](e.data.result),b._callbacks.remove(d[0]))}catch(f){f instanceof C&&(f=f.val),a.log(f)}b.processQueue()}}(e,d),e[0].postMessage(c)}},__class__:Qa};var Ra=function(a,b,c){this.className=a,this.methodName=b,this.args=c,this.id=Ra.uuid++};g["verb.exe._WorkerPool.Work"]=Ra,Ra.__name__=["verb","exe","_WorkerPool","Work"],Ra.prototype={__class__:Ra};var Sa=function(){};g["verb.geom.ICurve"]=Sa,Sa.__name__=["verb","geom","ICurve"],Sa.__interfaces__=[za],Sa.prototype={__class__:Sa};var Ta=b.geom.NurbsCurve=function(a){this._data=Fa.isValidNurbsCurveData(a)};g["verb.geom.NurbsCurve"]=Ta,Ta.__name__=["verb","geom","NurbsCurve"],Ta.__interfaces__=[Sa],Ta.byKnotsControlPointsWeights=function(a,b,c,d){return new Ta(new W(a,b.slice(),Ia.homogenize1d(c,d)))},Ta.byPoints=function(a,b){return null==b&&(b=3),new Ta(Ka.rationalInterpCurve(a,b))},Ta.__super__=T,Ta.prototype=d(T.prototype,{degree:function(){return this._data.degree},knots:function(){return this._data.knots.slice(0)},controlPoints:function(){return Ia.dehomogenize1d(this._data.controlPoints)},weights:function(){return Ia.weight1d(this._data.controlPoints)},asNurbs:function(){return new W(this.degree(),this.knots(),Ia.homogenize1d(this.controlPoints(),this.weights()))},clone:function(){return new Ta(this._data)},domain:function(){return new aa(P.first(this._data.knots),P.last(this._data.knots))},transform:function(a){return new Ta(La.rationalCurveTransform(this._data,a))},transformAsync:function(a){return Pa.dispatchMethod(La,"rationalCurveTransform",[this._data,a]).then(function(a){return new Ta(a)})},point:function(a){return Ia.rationalCurvePoint(this._data,a)},pointAsync:function(a){return Pa.dispatchMethod(Ia,"rationalCurvePoint",[this._data,a])},tangent:function(a){return Ia.rationalCurveTangent(this._data,a)},tangentAsync:function(a){return Pa.dispatchMethod(Ia,"rationalCurveTangent",[this._data,a])},derivatives:function(a,b){return null==b&&(b=1),Ia.rationalCurveDerivatives(this._data,a,b)},derivativesAsync:function(a,b){return null==b&&(b=1),Pa.dispatchMethod(Ia,"rationalCurveDerivatives",[this._data,a,b])},closestPoint:function(a){return Da.rationalCurveClosestPoint(this._data,a)},closestPointAsync:function(a){return Pa.dispatchMethod(Da,"rationalCurveClosestPoint",[this._data,a])},closestParam:function(a){return Da.rationalCurveClosestParam(this._data,a)},closestParamAsync:function(a){return Pa.dispatchMethod(Da,"rationalCurveClosestParam",[this._data,a])},length:function(){return Da.rationalCurveArcLength(this._data)},lengthAsync:function(){return Pa.dispatchMethod(Da,"rationalCurveArcLength",[this._data])},lengthAtParam:function(a){return Da.rationalCurveArcLength(this._data,a)},lengthAtParamAsync:function(){return Pa.dispatchMethod(Da,"rationalCurveArcLength",[this._data])},paramAtLength:function(a,b){return Da.rationalCurveParamAtArcLength(this._data,a,b)},paramAtLengthAsync:function(a,b){return Pa.dispatchMethod(Da,"rationalCurveParamAtArcLength",[this._data,a,b])},divideByEqualArcLength:function(a){return Ga.rationalCurveByEqualArcLength(this._data,a)},divideByEqualArcLengthAsync:function(a){return Pa.dispatchMethod(Ga,"rationalCurveByEqualArcLength",[this._data,a])},divideByArcLength:function(a){return Ga.rationalCurveByArcLength(this._data,a)},divideByArcLengthAsync:function(a){return Pa.dispatchMethod(Ga,"rationalCurveByArcLength",[this._data,a])},split:function(a){return Ga.curveSplit(this._data,a).map(function(a){return new Ta(a)})},splitAsync:function(a){return Pa.dispatchMethod(Ga,"curveSplit",[this._data,a]).then(function(a){return a.map(function(a){return new Ta(a)})})},reverse:function(){return new Ta(La.curveReverse(this._data))},reverseAsync:function(){return Pa.dispatchMethod(La,"curveReverse",[this._data]).then(function(a){return new Ta(a)})},tessellate:function(a){return Ma.rationalCurveAdaptiveSample(this._data,a,!1)},tessellateAsync:function(a){return Pa.dispatchMethod(Ma,"rationalCurveAdaptiveSample",[this._data,a,!1])},__class__:Ta});var Ua=b.geom.Arc=function(a,b,c,d,e,f){Ta.call(this,Ka.arc(a,b,c,d,e,f)),this._center=a,this._xaxis=b,this._yaxis=c,this._radius=d,this._minAngle=e,this._maxAngle=f};g["verb.geom.Arc"]=Ua,Ua.__name__=["verb","geom","Arc"],Ua.__super__=Ta,Ua.prototype=d(Ta.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},radius:function(){return this._radius},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:Ua});var Va=b.geom.BezierCurve=function(a,b){Ta.call(this,Ka.rationalBezierCurve(a,b))};g["verb.geom.BezierCurve"]=Va,Va.__name__=["verb","geom","BezierCurve"],Va.__super__=Ta,Va.prototype=d(Ta.prototype,{__class__:Va});var Wa=b.geom.Circle=function(a,b,c,d){Ua.call(this,a,b,c,d,0,2*Math.PI)};g["verb.geom.Circle"]=Wa,Wa.__name__=["verb","geom","Circle"],Wa.__super__=Ua,Wa.prototype=d(Ua.prototype,{__class__:Wa});var Xa=function(){};g["verb.geom.ISurface"]=Xa,Xa.__name__=["verb","geom","ISurface"],Xa.__interfaces__=[za],Xa.prototype={__class__:Xa};var Ya=b.geom.NurbsSurface=function(a){this._data=Fa.isValidNurbsSurfaceData(a)};g["verb.geom.NurbsSurface"]=Ya,Ya.__name__=["verb","geom","NurbsSurface"],Ya.__interfaces__=[Xa],Ya.byKnotsControlPointsWeights=function(a,b,c,d,e,f){return new Ya(new X(a,b,c,d,Ia.homogenize2d(e,f)))},Ya.byCorners=function(a,b,c,d){return new Ya(Ka.fourPointSurface(a,b,c,d))},Ya.byLoftingCurves=function(a,b){return new Ya(Ka.loftedSurface(function(b){for(var c=[],d=0;d<a.length;){var e=a[d];++d,c.push(e.asNurbs())}return c}(),b))},Ya.__super__=T,Ya.prototype=d(T.prototype,{degreeU:function(){return this._data.degreeU},degreeV:function(){return this._data.degreeV},knotsU:function(){return this._data.knotsU.slice(0)},knotsV:function(){return this._data.knotsV.slice(0)},controlPoints:function(){return Ia.dehomogenize2d(this._data.controlPoints)},weights:function(){return Ia.weight2d(this._data.controlPoints)},asNurbs:function(){return new X(this.degreeU(),this.degreeV(),this.knotsU(),this.knotsV(),Ia.homogenize2d(this.controlPoints(),this.weights()))},clone:function(){return new Ya(this.asNurbs())},domainU:function(){return new aa(P.first(this._data.knotsU),P.last(this._data.knotsU))},domainV:function(){return new aa(P.first(this._data.knotsV),P.last(this._data.knotsV))},point:function(a,b){return Ia.rationalSurfacePoint(this._data,a,b)},pointAsync:function(a,b){return Pa.dispatchMethod(Ia,"rationalSurfacePoint",[this._data,a,b])},normal:function(a,b){return Ia.rationalSurfaceNormal(this._data,a,b)},normalAsync:function(a,b){return Pa.dispatchMethod(Ia,"rationalSurfaceNormal",[this._data,a,b])},derivatives:function(a,b,c){return null==c&&(c=1),Ia.rationalSurfaceDerivatives(this._data,a,b,c)},derivativesAsync:function(a,b,c){return null==c&&(c=1),Pa.dispatchMethod(Ia,"rationalSurfaceDerivatives",[this._data,a,b,c])},closestParam:function(a){return Da.rationalSurfaceClosestParam(this._data,a)},closestParamAsync:function(a){return Pa.dispatchMethod(Da,"rationalSurfaceClosestParam",[this._data,a])},closestPoint:function(a){return Da.rationalSurfaceClosestPoint(this._data,a)},closestPointAsync:function(a){return Pa.dispatchMethod(Da,"rationalSurfaceClosestPoint",[this._data,a])},split:function(a,b){return null==b&&(b=!1),Ga.surfaceSplit(this._data,a,b).map(function(a){return new Ya(a)})},splitAsync:function(a,b){return null==b&&(b=!1),Pa.dispatchMethod(Ga,"surfaceSplit",[this._data,a,b]).then(function(a){return a.map(function(a){return new Ya(a)})})},reverse:function(a){return null==a&&(a=!1),new Ya(La.surfaceReverse(this._data,a))},reverseAsync:function(a){return null==a&&(a=!1),Pa.dispatchMethod(La,"surfaceReverse",[this._data,a]).then(function(a){return new Ya(a)})},isocurve:function(a,b){return null==b&&(b=!1),new Ta(Ka.surfaceIsocurve(this._data,a,b))},isocurveAsync:function(a,b){return null==b&&(b=!1),Pa.dispatchMethod(Ka,"surfaceIsocurve",[this._data,a,b]).then(function(a){return new Ta(a)})},boundaries:function(a){return Ka.surfaceBoundaryCurves(this._data).map(function(a){return new Ta(a)})},boundariesAsync:function(a){return Pa.dispatchMethod(Ka,"surfaceBoundaryCurves",[this._data]).then(function(a){return a.map(function(a){return new Ta(a)})})},tessellate:function(a){return Ma.rationalSurfaceAdaptive(this._data,a)},tessellateAsync:function(a){return Pa.dispatchMethod(Ma,"rationalSurfaceAdaptive",[this._data,a])},transform:function(a){return new Ya(La.rationalSurfaceTransform(this._data,a))},transformAsync:function(a){return Pa.dispatchMethod(La,"rationalSurfaceTransform",[this._data,a]).then(function(a){return new Ya(a)})},__class__:Ya});var Za=b.geom.ConicalSurface=function(a,b,c,d,e){Ya.call(this,Ka.conicalSurface(a,b,c,d,e)),this._axis=a,this._xaxis=b,this._base=c,this._height=d,this._radius=e};g["verb.geom.ConicalSurface"]=Za,Za.__name__=["verb","geom","ConicalSurface"],Za.__super__=Ya,Za.prototype=d(Ya.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:Za});var $a=b.geom.CylindricalSurface=function(a,b,c,d,e){Ya.call(this,Ka.cylindricalSurface(a,b,c,d,e)),this._axis=a,this._xaxis=b,this._base=c,this._height=d,this._radius=e};g["verb.geom.CylindricalSurface"]=$a,$a.__name__=["verb","geom","CylindricalSurface"],$a.__super__=Ya,$a.prototype=d(Ya.prototype,{axis:function(){return this._axis},xaxis:function(){return this._xaxis},base:function(){return this._base},height:function(){return this._height},radius:function(){return this._radius},__class__:$a});var _a=b.geom.EllipseArc=function(a,b,c,d,e){Ta.call(this,Ka.ellipseArc(a,b,c,d,e)),this._center=a,this._xaxis=b,this._yaxis=c,this._minAngle=d,this._maxAngle=e};g["verb.geom.EllipseArc"]=_a,_a.__name__=["verb","geom","EllipseArc"],_a.__super__=Ta,_a.prototype=d(Ta.prototype,{center:function(){return this._center},xaxis:function(){return this._xaxis},yaxis:function(){return this._yaxis},minAngle:function(){return this._minAngle},maxAngle:function(){return this._maxAngle},__class__:_a});var ab=b.geom.Ellipse=function(a,b,c){_a.call(this,a,b,c,0,2*Math.PI)};g["verb.geom.Ellipse"]=ab,ab.__name__=["verb","geom","Ellipse"],ab.__super__=_a,ab.prototype=d(_a.prototype,{__class__:ab});var bb=b.geom.ExtrudedSurface=function(a,b){Ya.call(this,Ka.extrudedSurface(Ca.normalized(b),Ca.norm(b),a.asNurbs())),this._profile=a,this._direction=b};g["verb.geom.ExtrudedSurface"]=bb,bb.__name__=["verb","geom","ExtrudedSurface"],bb.__super__=Ya,bb.prototype=d(Ya.prototype,{profile:function(){return this._profile},direction:function(){return this._direction},__class__:bb});var cb=b.geom.Intersect=function(){};g["verb.geom.Intersect"]=cb,cb.__name__=["verb","geom","Intersect"],cb.curves=function(a,b,c){return null==c&&(c=.001),Ja.curves(a.asNurbs(),b.asNurbs(),c)},cb.curvesAsync=function(a,b,c){return null==c&&(c=.001),Pa.dispatchMethod(Ja,"curves",[a.asNurbs(),b.asNurbs(),c])},cb.curveAndSurface=function(a,b,c){return null==c&&(c=.001),Ja.curveAndSurface(a.asNurbs(),b.asNurbs(),c)},cb.curveAndSurfaceAsync=function(a,b,c){return null==c&&(c=.001),Pa.dispatchMethod(Ja,"curveAndSurface",[a.asNurbs(),b.asNurbs(),c])},cb.surfaces=function(a,b,c){return null==c&&(c=.001),Ja.surfaces(a.asNurbs(),b.asNurbs(),c).map(function(a){return new Ta(a)})},cb.surfacesAsync=function(a,b,c){return null==c&&(c=.001),Pa.dispatchMethod(Ja,"surfaces",[a.asNurbs(),b.asNurbs(),c]).then(function(a){return a.map(function(a){return new Ta(a)})})};var db=b.geom.Line=function(a,b){Ta.call(this,Ka.polyline([a,b])),this._start=a,this._end=b};g["verb.geom.Line"]=db,db.__name__=["verb","geom","Line"],db.__super__=Ta,db.prototype=d(Ta.prototype,{start:function(){return this._start},end:function(){return this._end},__class__:db});var eb=b.geom.RevolvedSurface=function(a,b,c,d){Ya.call(this,Ka.revolvedSurface(a.asNurbs(),b,c,d)),this._profile=a,this._center=b,this._axis=c,this._angle=d};g["verb.geom.RevolvedSurface"]=eb,eb.__name__=["verb","geom","RevolvedSurface"],eb.__super__=Ya,eb.prototype=d(Ya.prototype,{profile:function(){return this._profile},center:function(){return this._center},axis:function(){return this._center},angle:function(){return this._angle},__class__:eb});var fb=b.geom.SphericalSurface=function(a,b){Ya.call(this,Ka.sphericalSurface(a,[0,0,1],[1,0,0],b)),this._center=a,this._radius=b};g["verb.geom.SphericalSurface"]=fb,fb.__name__=["verb","geom","SphericalSurface"],fb.__super__=Ya,fb.prototype=d(Ya.prototype,{center:function(){return this._center},radius:function(){return this._radius},__class__:fb});var gb=b.geom.SweptSurface=function(a,b){Ya.call(this,Ka.rationalTranslationalSurface(a.asNurbs(),b.asNurbs())),this._profile=a,this._rail=b};g["verb.geom.SweptSurface"]=gb,gb.__name__=["verb","geom","SweptSurface"],gb.__super__=Ya,gb.prototype=d(Ya.prototype,{profile:function(){return this._profile},rail:function(){return this._rail},__class__:gb});var hb,ib=0;g.Math=Math,String.prototype.__class__=g.String=String,String.__name__=["String"],g.Array=Array,Array.__name__=["Array"],Date.prototype.__class__=g.Date=Date,Date.__name__=["Date"];var jb=g.Int={__name__:["Int"]},kb=g.Dynamic={__name__:["Dynamic"]},lb=g.Float=Number;lb.__name__=["Float"];var mb=g.Bool=Boolean;mb.__ename__=["Bool"];var nb=g.Class={__name__:["Class"]},ob={};null==Array.prototype.map&&(Array.prototype.map=function(a){for(var b=[],c=0,d=this.length;c<d;){var e=c++;b[e]=a(this[e])}return b}),null==Array.prototype.filter&&(Array.prototype.filter=function(a){for(var b=[],c=0,d=this.length;c<d;){var e=c++,f=this[e];a(f)&&b.push(f)}return b});var pb={},qb=c.ArrayBuffer||E;null==qb.prototype.slice&&(qb.prototype.slice=E.sliceImpl);var rb=(c.DataView,c.Uint8Array||G._new);!function(a,b){function c(a){return o[n]=d.apply(b,a),n++}function d(a){var c=[].slice.call(arguments,1);return function(){"function"==typeof a?a.apply(b,c):new Function(""+a)()}}function e(a){if(p)setTimeout(d(e,a),0);else{var b=o[a];if(b){p=!0;try{b()}finally{f(a),p=!1}}}}function f(a){delete o[a]}function g(){m=function(){var a=c(arguments);return process.nextTick(d(e,a)),a}}function h(){if(a.postMessage&&!a.importScripts){var b=!0,c=a.onmessage;return a.onmessage=function(){b=!1},a.postMessage("","*"),a.onmessage=c,b}}function i(){var b="setImmediate$"+Math.random()+"$",d=function(c){
c.source===a&&"string"==typeof c.data&&0===c.data.indexOf(b)&&e(+c.data.slice(b.length))};a.addEventListener?a.addEventListener("message",d,!1):a.attachEvent("onmessage",d),m=function(){var d=c(arguments);return a.postMessage(b+d,"*"),d}}function j(){var a=new MessageChannel;a.port1.onmessage=function(a){e(a.data)},m=function(){var b=c(arguments);return a.port2.postMessage(b),b}}function k(){var a=q.documentElement;m=function(){var b=c(arguments),d=q.createElement("script");return d.onreadystatechange=function(){e(b),d.onreadystatechange=null,a.removeChild(d),d=null},a.appendChild(d),b}}function l(){m=function(){var a=c(arguments);return setTimeout(d(e,a),0),a}}if(!a.setImmediate){var m,n=1,o={},p=!1,q=a.document,r=Object.getPrototypeOf&&Object.getPrototypeOf(a);r=r&&r.setTimeout?r:a,"[object process]"==={}.toString.call(a.process)?g():h()?i():a.MessageChannel?j():q&&"onreadystatechange"in q.createElement("script")?k():l(),r.setImmediate=m,r.clearImmediate=f}}(new Function("return this")()),t.USE_CACHE=!1,t.USE_ENUM_INDEX=!1,t.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",u.DEFAULT_RESOLVER=q,u.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:",w.count=0,B.i64tmp=function(a){return new s(0,0)}(),D.__toStr={}.toString,G.BYTES_PER_ELEMENT=1,M.queue=new k,Q.memo=new v,S.TOLERANCE=1e-6,S.EPSILON=1e-10,S.VERSION="2.0.0",Da.Tvalues=[[],[],[-.5773502691896257,.5773502691896257],[0,-.7745966692414834,.7745966692414834],[-.33998104358485626,.33998104358485626,-.8611363115940526,.8611363115940526],[0,-.5384693101056831,.5384693101056831,-.906179845938664,.906179845938664],[.6612093864662645,-.6612093864662645,-.2386191860831969,.2386191860831969,-.932469514203152,.932469514203152],[0,.4058451513773972,-.4058451513773972,-.7415311855993945,.7415311855993945,-.9491079123427585,.9491079123427585],[-.1834346424956498,.1834346424956498,-.525532409916329,.525532409916329,-.7966664774136267,.7966664774136267,-.9602898564975363,.9602898564975363],[0,-.8360311073266358,.8360311073266358,-.9681602395076261,.9681602395076261,-.3242534234038089,.3242534234038089,-.6133714327005904,.6133714327005904],[-.14887433898163122,.14887433898163122,-.4333953941292472,.4333953941292472,-.6794095682990244,.6794095682990244,-.8650633666889845,.8650633666889845,-.9739065285171717,.9739065285171717],[0,-.26954315595234496,.26954315595234496,-.5190961292068118,.5190961292068118,-.7301520055740494,.7301520055740494,-.8870625997680953,.8870625997680953,-.978228658146057,.978228658146057],[-.1252334085114689,.1252334085114689,-.3678314989981802,.3678314989981802,-.5873179542866175,.5873179542866175,-.7699026741943047,.7699026741943047,-.9041172563704749,.9041172563704749,-.9815606342467192,.9815606342467192],[0,-.2304583159551348,.2304583159551348,-.44849275103644687,.44849275103644687,-.6423493394403402,.6423493394403402,-.8015780907333099,.8015780907333099,-.9175983992229779,.9175983992229779,-.9841830547185881,.9841830547185881],[-.10805494870734367,.10805494870734367,-.31911236892788974,.31911236892788974,-.5152486363581541,.5152486363581541,-.6872929048116855,.6872929048116855,-.827201315069765,.827201315069765,-.9284348836635735,.9284348836635735,-.9862838086968123,.9862838086968123],[0,-.20119409399743451,.20119409399743451,-.3941513470775634,.3941513470775634,-.5709721726085388,.5709721726085388,-.7244177313601701,.7244177313601701,-.8482065834104272,.8482065834104272,-.937273392400706,.937273392400706,-.9879925180204854,.9879925180204854],[-.09501250983763744,.09501250983763744,-.2816035507792589,.2816035507792589,-.45801677765722737,.45801677765722737,-.6178762444026438,.6178762444026438,-.755404408355003,.755404408355003,-.8656312023878318,.8656312023878318,-.9445750230732326,.9445750230732326,-.9894009349916499,.9894009349916499],[0,-.17848418149584785,.17848418149584785,-.3512317634538763,.3512317634538763,-.5126905370864769,.5126905370864769,-.6576711592166907,.6576711592166907,-.7815140038968014,.7815140038968014,-.8802391537269859,.8802391537269859,-.9506755217687678,.9506755217687678,-.9905754753144174,.9905754753144174],[-.0847750130417353,.0847750130417353,-.2518862256915055,.2518862256915055,-.41175116146284263,.41175116146284263,-.5597708310739475,.5597708310739475,-.6916870430603532,.6916870430603532,-.8037049589725231,.8037049589725231,-.8926024664975557,.8926024664975557,-.9558239495713977,.9558239495713977,-.9915651684209309,.9915651684209309],[0,-.16035864564022537,.16035864564022537,-.31656409996362983,.31656409996362983,-.46457074137596094,.46457074137596094,-.600545304661681,.600545304661681,-.7209661773352294,.7209661773352294,-.8227146565371428,.8227146565371428,-.9031559036148179,.9031559036148179,-.96020815213483,.96020815213483,-.9924068438435844,.9924068438435844],[-.07652652113349734,.07652652113349734,-.22778585114164507,.22778585114164507,-.37370608871541955,.37370608871541955,-.5108670019508271,.5108670019508271,-.636053680726515,.636053680726515,-.7463319064601508,.7463319064601508,-.8391169718222188,.8391169718222188,-.912234428251326,.912234428251326,-.9639719272779138,.9639719272779138,-.9931285991850949,.9931285991850949],[0,-.1455618541608951,.1455618541608951,-.2880213168024011,.2880213168024011,-.4243421202074388,.4243421202074388,-.5516188358872198,.5516188358872198,-.6671388041974123,.6671388041974123,-.7684399634756779,.7684399634756779,-.8533633645833173,.8533633645833173,-.9200993341504008,.9200993341504008,-.9672268385663063,.9672268385663063,-.9937521706203895,.9937521706203895],[-.06973927331972223,.06973927331972223,-.20786042668822127,.20786042668822127,-.34193582089208424,.34193582089208424,-.469355837986757,.469355837986757,-.5876404035069116,.5876404035069116,-.6944872631866827,.6944872631866827,-.7878168059792081,.7878168059792081,-.8658125777203002,.8658125777203002,-.926956772187174,.926956772187174,-.9700604978354287,.9700604978354287,-.9942945854823992,.9942945854823992],[0,-.1332568242984661,.1332568242984661,-.26413568097034495,.26413568097034495,-.3903010380302908,.3903010380302908,-.5095014778460075,.5095014778460075,-.6196098757636461,.6196098757636461,-.7186613631319502,.7186613631319502,-.8048884016188399,.8048884016188399,-.8767523582704416,.8767523582704416,-.9329710868260161,.9329710868260161,-.9725424712181152,.9725424712181152,-.9947693349975522,.9947693349975522],[-.06405689286260563,.06405689286260563,-.1911188674736163,.1911188674736163,-.3150426796961634,.3150426796961634,-.4337935076260451,.4337935076260451,-.5454214713888396,.5454214713888396,-.6480936519369755,.6480936519369755,-.7401241915785544,.7401241915785544,-.820001985973903,.820001985973903,-.8864155270044011,.8864155270044011,-.9382745520027328,.9382745520027328,-.9747285559713095,.9747285559713095,-.9951872199970213,.9951872199970213]],Da.Cvalues=[[],[],[1,1],[.8888888888888888,.5555555555555556,.5555555555555556],[.6521451548625461,.6521451548625461,.34785484513745385,.34785484513745385],[.5688888888888889,.47862867049936647,.47862867049936647,.23692688505618908,.23692688505618908],[.3607615730481386,.3607615730481386,.46791393457269104,.46791393457269104,.17132449237917036,.17132449237917036],[.4179591836734694,.3818300505051189,.3818300505051189,.27970539148927664,.27970539148927664,.1294849661688697,.1294849661688697],[.362683783378362,.362683783378362,.31370664587788727,.31370664587788727,.22238103445337448,.22238103445337448,.10122853629037626,.10122853629037626],[.3302393550012598,.1806481606948574,.1806481606948574,.08127438836157441,.08127438836157441,.31234707704000286,.31234707704000286,.26061069640293544,.26061069640293544],[.29552422471475287,.29552422471475287,.26926671930999635,.26926671930999635,.21908636251598204,.21908636251598204,.1494513491505806,.1494513491505806,.06667134430868814,.06667134430868814],[.2729250867779006,.26280454451024665,.26280454451024665,.23319376459199048,.23319376459199048,.18629021092773426,.18629021092773426,.1255803694649046,.1255803694649046,.05566856711617366,.05566856711617366],[.24914704581340277,.24914704581340277,.2334925365383548,.2334925365383548,.20316742672306592,.20316742672306592,.16007832854334622,.16007832854334622,.10693932599531843,.10693932599531843,.04717533638651183,.04717533638651183],[.2325515532308739,.22628318026289723,.22628318026289723,.2078160475368885,.2078160475368885,.17814598076194574,.17814598076194574,.13887351021978725,.13887351021978725,.09212149983772845,.09212149983772845,.04048400476531588,.04048400476531588],[.2152638534631578,.2152638534631578,.2051984637212956,.2051984637212956,.18553839747793782,.18553839747793782,.15720316715819355,.15720316715819355,.12151857068790319,.12151857068790319,.08015808715976021,.08015808715976021,.03511946033175186,.03511946033175186],[.2025782419255613,.19843148532711158,.19843148532711158,.1861610000155622,.1861610000155622,.16626920581699392,.16626920581699392,.13957067792615432,.13957067792615432,.10715922046717194,.10715922046717194,.07036604748810812,.07036604748810812,.03075324199611727,.03075324199611727],[.1894506104550685,.1894506104550685,.18260341504492358,.18260341504492358,.16915651939500254,.16915651939500254,.14959598881657674,.14959598881657674,.12462897125553388,.12462897125553388,.09515851168249279,.09515851168249279,.062253523938647894,.062253523938647894,.027152459411754096,.027152459411754096],[.17944647035620653,.17656270536699264,.17656270536699264,.16800410215645004,.16800410215645004,.15404576107681028,.15404576107681028,.13513636846852548,.13513636846852548,.11188384719340397,.11188384719340397,.08503614831717918,.08503614831717918,.0554595293739872,.0554595293739872,.02414830286854793,.02414830286854793],[.1691423829631436,.1691423829631436,.16427648374583273,.16427648374583273,.15468467512626524,.15468467512626524,.14064291467065065,.14064291467065065,.12255520671147846,.12255520671147846,.10094204410628717,.10094204410628717,.07642573025488905,.07642573025488905,.0497145488949698,.0497145488949698,.02161601352648331,.02161601352648331],[.1610544498487837,.15896884339395434,.15896884339395434,.15276604206585967,.15276604206585967,.1426067021736066,.1426067021736066,.12875396253933621,.12875396253933621,.11156664554733399,.11156664554733399,.09149002162245,.09149002162245,.06904454273764123,.06904454273764123,.0448142267656996,.0448142267656996,.019461788229726478,.019461788229726478],[.15275338713072584,.15275338713072584,.14917298647260374,.14917298647260374,.14209610931838204,.14209610931838204,.13168863844917664,.13168863844917664,.11819453196151841,.11819453196151841,.10193011981724044,.10193011981724044,.08327674157670475,.08327674157670475,.06267204833410907,.06267204833410907,.04060142980038694,.04060142980038694,.017614007139152118,.017614007139152118],[.14608113364969041,.14452440398997005,.14452440398997005,.13988739479107315,.13988739479107315,.13226893863333747,.13226893863333747,.12183141605372853,.12183141605372853,.10879729916714838,.10879729916714838,.09344442345603386,.09344442345603386,.0761001136283793,.0761001136283793,.057134425426857205,.057134425426857205,.036953789770852494,.036953789770852494,.016017228257774335,.016017228257774335],[.13925187285563198,.13925187285563198,.13654149834601517,.13654149834601517,.13117350478706238,.13117350478706238,.12325237681051242,.12325237681051242,.11293229608053922,.11293229608053922,.10041414444288096,.10041414444288096,.08594160621706773,.08594160621706773,.06979646842452049,.06979646842452049,.052293335152683286,.052293335152683286,.03377490158481415,.03377490158481415,.0146279952982722,.0146279952982722],[.13365457218610619,.1324620394046966,.1324620394046966,.12890572218808216,.12890572218808216,.12304908430672953,.12304908430672953,.11499664022241136,.11499664022241136,.10489209146454141,.10489209146454141,.09291576606003515,.09291576606003515,.07928141177671895,.07928141177671895,.06423242140852585,.06423242140852585,.04803767173108467,.04803767173108467,.030988005856979445,.030988005856979445,.013411859487141771,.013411859487141771],[.12793819534675216,.12793819534675216,.1258374563468283,.1258374563468283,.12167047292780339,.12167047292780339,.1155056680537256,.1155056680537256,.10744427011596563,.10744427011596563,.09761865210411388,.09761865210411388,.08619016153195327,.08619016153195327,.0733464814110803,.0733464814110803,.05929858491543678,.05929858491543678,.04427743881741981,.04427743881741981,.028531388628933663,.028531388628933663,.0123412297999872,.0123412297999872]],Pa.THREADS=1,Pa._init=!1,Qa.basePath="",Ra.uuid=0,O.main()}("undefined"!=typeof console?console:{log:function(){}},a,void 0!==e?e:void 0!==b?b:"undefined"!=typeof self?self:this),a});