canvaskit-wasm
Version:
A WASM version of Skia's Canvas API
110 lines (108 loc) • 175 kB
JavaScript
var CanvasKitInit = (function() {
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
return (
function(CanvasKitInit) {
CanvasKitInit = CanvasKitInit || {};
var aa,ba;var g,h,k;var m;m||(m=typeof CanvasKitInit !== 'undefined' ? CanvasKitInit : {});
(function(a){a.$q=a.$q||[];a.$q.push(function(){a.MakeSWCanvasSurface=function(b){var c=b;if("CANVAS"!==c.tagName&&(c=document.getElementById(b),!c))throw"Canvas with id "+b+" was not found";if(b=a.MakeSurface(c.width,c.height))b.bq=c;return b};a.MakeCanvasSurface||(a.MakeCanvasSurface=a.MakeSWCanvasSurface);a.MakeSurface=function(b,c){var d={width:b,height:c,colorType:a.ColorType.RGBA_8888,alphaType:a.AlphaType.Unpremul},e=b*c*4,f=a._malloc(e);if(d=this._getRasterDirectSurface(d,f,4*b))d.bq=null,
d.Bt=b,d.xt=c,d.At=e,d.ss=f,d.getCanvas().clear(a.TRANSPARENT);return d};a.SkSurface.prototype.flush=function(){this._flush();if(this.bq){var b=new Uint8ClampedArray(a.buffer,this.ss,this.At);b=new ImageData(b,this.Bt,this.xt);this.bq.getContext("2d").putImageData(b,0,0)}};a.SkSurface.prototype.dispose=function(){this.ss&&a._free(this.ss);this.delete()};a.currentContext=a.currentContext||function(){};a.setCurrentContext=a.setCurrentContext||function(){}})})(m);
(function(a){a.$q=a.$q||[];a.$q.push(function(){function b(a,b,e){return a&&a.hasOwnProperty(b)?a[b]:e}a.MakeWebGLCanvasSurface=function(c,d,e){var f=c;if(!(0<f)){var l=c;if("CANVAS"!==l.tagName&&(l=document.getElementById(c),!l))throw"Canvas with id "+c+" was not found";f=l;var p={alpha:b(void 0,"alpha",1),depth:b(void 0,"depth",1),stencil:b(void 0,"stencil",0),antialias:b(void 0,"antialias",1),premultipliedAlpha:b(void 0,"premultipliedAlpha",1),preserveDrawingBuffer:b(void 0,"preserveDrawingBuffer",
0),preferLowPowerToHighPerformance:b(void 0,"preferLowPowerToHighPerformance",0),failIfMajorPerformanceCaveat:b(void 0,"failIfMajorPerformanceCaveat",0),it:b(void 0,"majorVersion",1),Tu:b(void 0,"minorVersion",0),$s:b(void 0,"enableExtensionsByDefault",1),Nu:b(void 0,"explicitSwapControl",0),$u:b(void 0,"renderViaOffscreenBackBuffer",0)};f=!f||p.explicitSwapControl?0:h.createContext(f,p)}if(!f||0>f)throw"failed to create webgl context: err "+f;if(!(l||d&&e))throw"height and width must be provided with context";
return(d=this._getWebGLSurface(f,d||l.width,e||l.height))?d:a.MakeSWCanvasSurface(c)};a.MakeCanvasSurface=a.MakeWebGLCanvasSurface})})(m);(function(a){function b(a){return Math.round(Math.max(0,Math.min(a||0,255)))}a.Color=function(a,d,e,f){void 0===f&&(f=1);return b(255*f)<<24|b(a)<<16|b(d)<<8|b(e)<<0};a.getColorComponents=function(a){return[a>>16&255,a>>8&255,a>>0&255,(a>>24&255)/255]};a.multiplyByAlpha=function(a,d){return 1===d?a:b((a>>24&255)*d)<<24|a&16777215}})(m);var ca=!(new Function("try {return this===window;}catch(e){ return false;}"))();
(function(a){function b(b,c){if(!b||!b.length)return d;var f=a._malloc(b.length*c.BYTES_PER_ELEMENT);c.set(b,f/c.BYTES_PER_ELEMENT);return f}function c(b,c){if(!b||!b.length)return d;for(var f=a._malloc(b.length*b[0].length*c.BYTES_PER_ELEMENT),e=0,l=f/c.BYTES_PER_ELEMENT,w=0;w<b.length;w++)for(var y=0;y<b[0].length;y++)c[l+e]=b[w][y],e++;return f}a.onRuntimeInitialized=function(){a.SkMatrix={};a.SkMatrix.identity=function(){return[1,0,0,0,1,0,0,0,1]};a.SkMatrix.Gr=function(b){var c=b[0]*b[4]*b[8]+
b[1]*b[5]*b[6]+b[2]*b[3]*b[7]-b[2]*b[4]*b[6]-b[1]*b[3]*b[8]-b[0]*b[5]*b[7];return c?[(b[4]*b[8]-b[5]*b[7])/c,(b[2]*b[7]-b[1]*b[8])/c,(b[1]*b[5]-b[2]*b[4])/c,(b[5]*b[6]-b[3]*b[8])/c,(b[0]*b[8]-b[2]*b[6])/c,(b[2]*b[3]-b[0]*b[5])/c,(b[3]*b[7]-b[4]*b[6])/c,(b[1]*b[6]-b[0]*b[7])/c,(b[0]*b[4]-b[1]*b[3])/c]:a.SkMatrix.identity()};a.SkMatrix.mapPoints=function(a,b){if(b.length%2)throw"mapPoints requires an even length arr";for(var c=0;c<b.length;c+=2){var d=b[c],f=b[c+1],e=a[6]*d+a[7]*f+a[8],l=a[3]*d+a[4]*
f+a[5];b[c]=(a[0]*d+a[1]*f+a[2])/e;b[c+1]=l/e}return b};a.SkMatrix.multiply=function(a,b){for(var c=[0,0,0,0,0,0,0,0,0],d=0;3>d;d++)for(var f=0;3>f;f++)c[3*d+f]=a[3*d]*b[f]+a[3*d+1]*b[3+f]+(a[3*d+2]||0)*(b[6+f]||0);return c};a.SkMatrix.rotated=function(a,b,c){b=b||0;c=c||0;var d=Math.sin(a);a=Math.cos(a);return[a,-d,d*c+(1-a)*b,d,a,-d*b+(1-a)*c,0,0,1]};a.SkMatrix.scaled=function(a,b,c,d){c=c||0;d=d||0;return[a,0,c-a*c,0,b,d-b*d,0,0,1]};a.SkMatrix.skewed=function(a,b,c,d){return[1,a,-a*(c||0),b,1,
-b*(d||0),0,0,1]};a.SkMatrix.translated=function(a,b){return[1,0,a,0,1,b,0,0,1]};a.SkPath.prototype.addArc=function(a,b,c){this._addArc(a,b,c);return this};a.SkPath.prototype.addPath=function(){var a=Array.prototype.slice.call(arguments),b=a[0],c=!1;"boolean"===typeof a[a.length-1]&&(c=a.pop());if(1===a.length)this._addPath(b,1,0,0,0,1,0,0,0,1,c);else if(2===a.length)a=a[1],this._addPath(b,a[0],a[1],a[2],a[3],a[4],a[5],a[6]||0,a[7]||0,a[8]||1,c);else if(7===a.length||10===a.length)this._addPath(b,
a[1],a[2],a[3],a[4],a[5],a[6],a[7]||0,a[8]||0,a[9]||1,c);else return null;return this};a.SkPath.prototype.addRect=function(){if(1===arguments.length||2===arguments.length){var a=arguments[0];this._addRect(a.fLeft,a.fTop,a.fRight,a.fBottom,arguments[1]||!1)}else if(4===arguments.length||5===arguments.length)a=arguments,this._addRect(a[0],a[1],a[2],a[3],a[4]||!1);else return null;return this};a.SkPath.prototype.addRoundRect=function(){var c=arguments;if(3===c.length||6===c.length)var d=c[c.length-2];
else if(6===c.length||7===c.length){d=c[c.length-3];var e=c[c.length-2];d=[d,e,d,e,d,e,d,e]}else return null;if(8!==d.length)return null;d=b(d,a.HEAPF32);if(3===c.length||4===c.length){e=c[0];var q=c[c.length-1];this._addRoundRect(e.fLeft,e.fTop,e.fRight,e.fBottom,d,q)}else 6!==c.length&&7!==c.length||this._addRoundRect(c[0],c[1],c[2],c[3],d,q);a._free(d);return this};a.SkPath.prototype.arc=function(b,c,d,e,t,w){b=a.LTRBRect(b-d,c-d,b+d,c+d);t=(t-e)/Math.PI*180-360*!!w;w=new a.SkPath;w.addArc(b,e/
Math.PI*180,t);this.addPath(w,!0);w.delete();return this};a.SkPath.prototype.arcTo=function(){var b=arguments;if(5===b.length)this._arcTo(b[0],b[1],b[2],b[3],b[4]);else if(4===b.length)this._arcTo(b[0],b[1],b[2],b[3]);else if(7===b.length)this._arcTo(a.LTRBRect(b[0],b[1],b[2],b[3]),b[4],b[5],b[6]);else throw"Invalid args for arcTo. Expected 4, 5, or 7, got "+b.length;return this};a.SkPath.prototype.close=function(){this._close();return this};a.SkPath.prototype.conicTo=function(a,b,c,d,e){this._conicTo(a,
b,c,d,e);return this};a.SkPath.prototype.cubicTo=function(a,b,c,d,e,w){this._cubicTo(a,b,c,d,e,w);return this};a.SkPath.prototype.dash=function(a,b,c){return this._dash(a,b,c)?this:null};a.SkPath.prototype.lineTo=function(a,b){this._lineTo(a,b);return this};a.SkPath.prototype.moveTo=function(a,b){this._moveTo(a,b);return this};a.SkPath.prototype.op=function(a,b){return this._op(a,b)?this:null};a.SkPath.prototype.quadTo=function(a,b,c,d){this._quadTo(a,b,c,d);return this};a.SkPath.prototype.simplify=
function(){return this._simplify()?this:null};a.SkPath.prototype.stroke=function(b){b=b||{};b.width=b.width||1;b.miter_limit=b.miter_limit||4;b.cap=b.cap||a.StrokeCap.Butt;b.join=b.join||a.StrokeJoin.Miter;b.precision=b.precision||1;return this._stroke(b)?this:null};a.SkPath.prototype.transform=function(){if(1===arguments.length){var a=arguments[0];this._transform(a[0],a[1],a[2],a[3],a[4],a[5],a[6]||0,a[7]||0,a[8]||1)}else if(6===arguments.length||9===arguments.length)a=arguments,this._transform(a[0],
a[1],a[2],a[3],a[4],a[5],a[6]||0,a[7]||0,a[8]||1);else throw"transform expected to take 1 or 9 arguments. Got "+arguments.length;return this};a.SkPath.prototype.trim=function(a,b,c){return this._trim(a,b,!!c)?this:null};a.SkVertices.prototype.applyBones=function(b){var c=a.HEAPF32;if(b&&b.length&&b[0].length){for(var e=a._malloc(b.length*b[0].length*b[0][0].length*c.BYTES_PER_ELEMENT),f=0,t=e/c.BYTES_PER_ELEMENT,w=0;w<b.length;w++)for(var y=0;y<b[0].length;y++)for(var E=0;E<b[0][0].length;E++)c[t+
f]=b[w][y][E],f++;c=e}else c=d;b=this._applyBones(c,b.length);a._free(c);return b};a.SkImage.prototype.encodeToData=function(){if(!arguments.length)return this._encodeToData();if(2===arguments.length){var a=arguments;return this._encodeToDataWithFormat(a[0],a[1])}throw"encodeToData expected to take 0 or 2 arguments. Got "+arguments.length;};a.SkCanvas.prototype.drawText=function(b,c,d,e,t){if("string"===typeof b){var f=da(b)+1,l=a._malloc(f);n(b,r,l,f);this._drawSimpleText(l,f,c,d,t,e)}else this._drawShapedText(b,
c,d,e)};a.SkCanvas.prototype.readPixels=function(b,c,d,e,t,w,y){t=t||a.AlphaType.Unpremul;w=w||a.ColorType.RGBA_8888;y=y||4*d;var f=e*y,l=a._malloc(f);if(!this._readPixels({width:d,height:e,colorType:w,alphaType:t},l,y,b,c))return a._free(l),null;b=(new Uint8Array(a.HEAPU8.buffer,l,f)).slice();a._free(l);return b};a.SkCanvas.prototype.writePixels=function(b,c,d,e,t,w,y){if(b.byteLength%(c*d))throw"pixels length must be a multiple of the srcWidth * srcHeight";var f=b.byteLength/(c*d);w=w||a.AlphaType.Unpremul;
y=y||a.ColorType.RGBA_8888;var l=f*c;f=a._malloc(b.byteLength);a.HEAPU8.set(b,f);b=this._writePixels({width:c,height:d,colorType:y,alphaType:w},f,l,e,t);a._free(f);return b};a.SkFontMgr.prototype.MakeTypefaceFromData=function(b){b=new Uint8Array(b);var c=a._malloc(b.byteLength);a.HEAPU8.set(b,c);return(b=this._makeTypefaceFromData(c,b.byteLength))?b:null};a.SkTextBlob.MakeFromText=function(b,c){var d=da(b)+1,e=a._malloc(d);n(b,r,e,d);b=a.SkTextBlob._MakeFromText(e,d-1,c,a.TextEncoding.UTF8);if(!b)return null;
var f=b.delete.bind(b);b.delete=function(){a._free(e);f()};return b};a.$q&&a.$q.forEach(function(a){a()})};a.LTRBRect=function(a,b,c,d){return{fLeft:a,fTop:b,fRight:c,fBottom:d}};a.XYWHRect=function(a,b,c,d){return{fLeft:a,fTop:b,fRight:a+c,fBottom:b+d}};var d=0,e={};a.MakePathFromCmds=function(c){for(var d=0,f=0;f<c.length;f++)d+=c[f].length;if(e[d])var q=e[d];else q=new Float32Array(d),e[d]=q;var t=0;for(f=0;f<c.length;f++)for(var w=0;w<c[f].length;w++)q[t]=c[f][w],t++;c=[b(q,a.HEAPF32),d];d=a._MakePathFromCmds(c[0],
c[1]);a._free(c[0]);return d};a.MakeSkDashPathEffect=function(c,d){d||(d=0);if(!c.length||1===c.length%2)throw"Intervals array must have even length";var e=b(c,a.HEAPF32);c=a._MakeSkDashPathEffect(e,c.length,d);a._free(e);return c};a.MakeImageFromEncoded=function(b){b=new Uint8Array(b);var c=a._malloc(b.byteLength);a.HEAPU8.set(b,c);b=a._decodeImage(c,b.byteLength);if(!b)return a._free(c),null;var d=b.delete.bind(b);b.delete=function(){a._free(c);d()};return b};a.MakeImageShader=function(b,c,d,e,
t){if(!b)return null;e=e||!1;return t?(6===t.length&&t.push(0,0,1),a._MakeImageShader(b,c,d,e,t)):a._MakeImageShader(b,c,d,e)};a.vt=function(b,c,d,e,t){var f=b.byteLength/(c*d);d={width:c,height:d,alphaType:e,colorType:t};e=a._malloc(b.byteLength);a.HEAPU8.set(b,e);return a._MakeImage(d,e,b.byteLength,c*f)};a.MakeLinearGradientShader=function(c,d,e,q,t,w,y){var f=b(e,a.HEAP32);q=b(q,a.HEAPF32);y=y||0;w?(6===w.length&&w.push(0,0,1),c=a._MakeLinearGradientShader(c,d,f,q,e.length,t,y,w)):c=a._MakeLinearGradientShader(c,
d,f,q,e.length,t,y);a._free(f);a._free(q);return c};a.MakeRadialGradientShader=function(c,d,e,q,t,w,y){var f=b(e,a.HEAP32);q=b(q,a.HEAPF32);y=y||0;w?(6===w.length&&w.push(0,0,1),c=a._MakeRadialGradientShader(c,d,f,q,e.length,t,y,w)):c=a._MakeRadialGradientShader(c,d,f,q,e.length,t,y);a._free(f);a._free(q);return c};a.MakeTwoPointConicalGradientShader=function(c,d,e,q,t,w,y,E,C){var f=b(t,a.HEAP32);w=b(w,a.HEAPF32);C=C||0;E?(6===E.length&&E.push(0,0,1),c=a._MakeTwoPointConicalGradientShader(c,d,e,
q,f,w,t.length,y,C,E)):c=a._MakeTwoPointConicalGradientShader(c,d,e,q,f,w,t.length,y,C);a._free(f);a._free(w);return c};a.MakeSkVertices=function(d,e,p,q,t,w,y){var f=c(e,a.HEAPF32);p=c(p,a.HEAPF32);q=b(q,a.HEAP32);t=c(t,a.HEAP32);w=c(w,a.HEAPF32);var l=b(y,a.HEAPU16);d=a._MakeSkVertices(d,e.length,f,p,q,t,w,y&&y.length||0,l);f&&a._free(f);p&&a._free(p);q&&a._free(q);l&&a._free(l);t&&a._free(t);w&&a._free(w);return d}})(m);
(function(a){function b(a){for(var b=0;b<a.length;b++)if(void 0!==a[b]&&!Number.isFinite(a[b]))return!1;return!0}function c(b){var c=a.getColorComponents(b);b=c[0];var d=c[1],e=c[2];c=c[3];if(1===c)return b=b.toString(16).toLowerCase(),d=d.toString(16).toLowerCase(),e=e.toString(16).toLowerCase(),b=1===b.length?"0"+b:b,d=1===d.length?"0"+d:d,e=1===e.length?"0"+e:e,"#"+b+d+e;c=0===c||1===c?c:c.toFixed(8);return"rgba("+b+", "+d+", "+e+", "+c+")"}function d(a){var b=parseFloat(a)||1;return a&&-1!==a.indexOf("%")?
b/100:b}function e(b){b=b.toLowerCase();if(b.startsWith("#")){var c=255;switch(b.length){case 9:c=parseInt(b.slice(7,9),16);case 7:var e=parseInt(b.slice(1,3),16);var f=parseInt(b.slice(3,5),16);var l=parseInt(b.slice(5,7),16);break;case 5:c=17*parseInt(b.slice(4,5),16);case 4:e=17*parseInt(b.slice(1,2),16),f=17*parseInt(b.slice(2,3),16),l=17*parseInt(b.slice(3,4),16)}return a.Color(e,f,l,c/255)}return b.startsWith("rgba")?(b=b.slice(5,-1),b=b.split(","),a.Color(+b[0],+b[1],+b[2],d(b[3]))):b.startsWith("rgb")?
(b=b.slice(4,-1),b=b.split(","),a.Color(+b[0],+b[1],+b[2],d(b[3]))):b.startsWith("gray(")||b.startsWith("hsl")||(b=nd[b],void 0===b)?a.BLACK:b}function f(a){a=od.exec(a);if(!a)return null;var b=parseFloat(a[4]),c=16;switch(a[5]){case "em":case "rem":c=16*b;break;case "pt":c=4*b/3;break;case "px":c=b;break;case "pc":c=16*b;break;case "in":c=96*b;break;case "cm":c=96*b/2.54;break;case "mm":c=96/25.4*b;break;case "q":c=96/25.4/4*b;break;case "%":c=16/75*b}return{style:a[1],variant:a[2],weight:a[3],sizePx:c,
family:a[6].trim()}}function l(d){this.bq=d;this.kq=new a.SkPaint;this.kq.setAntiAlias(!0);this.kq.setStrokeMiter(10);this.kq.setStrokeCap(a.StrokeCap.Butt);this.kq.setStrokeJoin(a.StrokeJoin.Miter);this.Pr="10px monospace";this.jr=new a.SkFont(null,10);this.Aq=this.Kq=a.BLACK;this.mr=0;this.Dr=a.TRANSPARENT;this.pr=this.nr=0;this.Er=this.Sq=1;this.Cr=0;this.lr=[];this.hq=a.BlendMode.SrcOver;this.ar=a.FilterQuality.Low;this.Br=!0;this.kq.setStrokeWidth(this.Er);this.kq.setBlendMode(this.hq);this.mq=
new a.SkPath;this.pq=a.SkMatrix.identity();this.Ts=[];this.sr=[];this.Xq=function(){this.mq.delete();this.kq.delete();this.jr.delete();this.sr.forEach(function(a){a.Xq()})};Object.defineProperty(this,"currentTransform",{enumerable:!0,get:function(){return{a:this.pq[0],c:this.pq[1],e:this.pq[2],b:this.pq[3],d:this.pq[4],f:this.pq[5]}},set:function(a){a.a&&this.setTransform(a.a,a.b,a.c,a.d,a.e,a.f)}});Object.defineProperty(this,"fillStyle",{enumerable:!0,get:function(){return Number.isInteger(this.Aq)?
c(this.Aq):this.Aq},set:function(a){"string"===typeof a?this.Aq=e(a):a.kr&&(this.Aq=a)}});Object.defineProperty(this,"font",{enumerable:!0,get:function(){return this.Pr},set:function(a){var b=f(a),c=b.family;b.typeface=va[c]?va[c][(b.style||"normal")+"|"+(b.variant||"normal")+"|"+(b.weight||"normal")]||va[c]["*"]:null;b&&(this.jr.setSize(b.sizePx),this.jr.setTypeface(b.typeface),this.Pr=a)}});Object.defineProperty(this,"globalAlpha",{enumerable:!0,get:function(){return this.Sq},set:function(a){!isFinite(a)||
0>a||1<a||(this.Sq=a)}});Object.defineProperty(this,"globalCompositeOperation",{enumerable:!0,get:function(){switch(this.hq){case a.BlendMode.SrcOver:return"source-over";case a.BlendMode.DstOver:return"destination-over";case a.BlendMode.Src:return"copy";case a.BlendMode.Dst:return"destination";case a.BlendMode.Clear:return"clear";case a.BlendMode.SrcIn:return"source-in";case a.BlendMode.DstIn:return"destination-in";case a.BlendMode.SrcOut:return"source-out";case a.BlendMode.DstOut:return"destination-out";
case a.BlendMode.SrcATop:return"source-atop";case a.BlendMode.DstATop:return"destination-atop";case a.BlendMode.Xor:return"xor";case a.BlendMode.Plus:return"lighter";case a.BlendMode.Multiply:return"multiply";case a.BlendMode.Screen:return"screen";case a.BlendMode.Overlay:return"overlay";case a.BlendMode.Darken:return"darken";case a.BlendMode.Lighten:return"lighten";case a.BlendMode.ColorDodge:return"color-dodge";case a.BlendMode.ColorBurn:return"color-burn";case a.BlendMode.HardLight:return"hard-light";
case a.BlendMode.SoftLight:return"soft-light";case a.BlendMode.Difference:return"difference";case a.BlendMode.Exclusion:return"exclusion";case a.BlendMode.Hue:return"hue";case a.BlendMode.Saturation:return"saturation";case a.BlendMode.Color:return"color";case a.BlendMode.Luminosity:return"luminosity"}},set:function(b){switch(b){case "source-over":this.hq=a.BlendMode.SrcOver;break;case "destination-over":this.hq=a.BlendMode.DstOver;break;case "copy":this.hq=a.BlendMode.Src;break;case "destination":this.hq=
a.BlendMode.Dst;break;case "clear":this.hq=a.BlendMode.Clear;break;case "source-in":this.hq=a.BlendMode.SrcIn;break;case "destination-in":this.hq=a.BlendMode.DstIn;break;case "source-out":this.hq=a.BlendMode.SrcOut;break;case "destination-out":this.hq=a.BlendMode.DstOut;break;case "source-atop":this.hq=a.BlendMode.SrcATop;break;case "destination-atop":this.hq=a.BlendMode.DstATop;break;case "xor":this.hq=a.BlendMode.Xor;break;case "lighter":this.hq=a.BlendMode.Plus;break;case "plus-lighter":this.hq=
a.BlendMode.Plus;break;case "plus-darker":throw"plus-darker is not supported";case "multiply":this.hq=a.BlendMode.Multiply;break;case "screen":this.hq=a.BlendMode.Screen;break;case "overlay":this.hq=a.BlendMode.Overlay;break;case "darken":this.hq=a.BlendMode.Darken;break;case "lighten":this.hq=a.BlendMode.Lighten;break;case "color-dodge":this.hq=a.BlendMode.ColorDodge;break;case "color-burn":this.hq=a.BlendMode.ColorBurn;break;case "hard-light":this.hq=a.BlendMode.HardLight;break;case "soft-light":this.hq=
a.BlendMode.SoftLight;break;case "difference":this.hq=a.BlendMode.Difference;break;case "exclusion":this.hq=a.BlendMode.Exclusion;break;case "hue":this.hq=a.BlendMode.Hue;break;case "saturation":this.hq=a.BlendMode.Saturation;break;case "color":this.hq=a.BlendMode.Color;break;case "luminosity":this.hq=a.BlendMode.Luminosity;break;default:return}this.kq.setBlendMode(this.hq)}});Object.defineProperty(this,"imageSmoothingEnabled",{enumerable:!0,get:function(){return this.Br},set:function(a){this.Br=
!!a}});Object.defineProperty(this,"imageSmoothingQuality",{enumerable:!0,get:function(){switch(this.ar){case a.FilterQuality.Low:return"low";case a.FilterQuality.Medium:return"medium";case a.FilterQuality.High:return"high"}},set:function(b){switch(b){case "low":this.ar=a.FilterQuality.Low;break;case "medium":this.ar=a.FilterQuality.Medium;break;case "high":this.ar=a.FilterQuality.High}}});Object.defineProperty(this,"lineCap",{enumerable:!0,get:function(){switch(this.kq.getStrokeCap()){case a.StrokeCap.Butt:return"butt";
case a.StrokeCap.Round:return"round";case a.StrokeCap.Square:return"square"}},set:function(b){switch(b){case "butt":this.kq.setStrokeCap(a.StrokeCap.Butt);break;case "round":this.kq.setStrokeCap(a.StrokeCap.Round);break;case "square":this.kq.setStrokeCap(a.StrokeCap.Square)}}});Object.defineProperty(this,"lineDashOffset",{enumerable:!0,get:function(){return this.Cr},set:function(a){isFinite(a)&&(this.Cr=a)}});Object.defineProperty(this,"lineJoin",{enumerable:!0,get:function(){switch(this.kq.getStrokeJoin()){case a.StrokeJoin.Miter:return"miter";
case a.StrokeJoin.Round:return"round";case a.StrokeJoin.Bevel:return"bevel"}},set:function(b){switch(b){case "miter":this.kq.setStrokeJoin(a.StrokeJoin.Miter);break;case "round":this.kq.setStrokeJoin(a.StrokeJoin.Round);break;case "bevel":this.kq.setStrokeJoin(a.StrokeJoin.Bevel)}}});Object.defineProperty(this,"lineWidth",{enumerable:!0,get:function(){return this.kq.getStrokeWidth()},set:function(a){0>=a||!a||(this.Er=a,this.kq.setStrokeWidth(a))}});Object.defineProperty(this,"miterLimit",{enumerable:!0,
get:function(){return this.kq.getStrokeMiter()},set:function(a){0>=a||!a||this.kq.setStrokeMiter(a)}});Object.defineProperty(this,"shadowBlur",{enumerable:!0,get:function(){return this.mr},set:function(a){0>a||!isFinite(a)||(this.mr=a)}});Object.defineProperty(this,"shadowColor",{enumerable:!0,get:function(){return c(this.Dr)},set:function(a){this.Dr=e(a)}});Object.defineProperty(this,"shadowOffsetX",{enumerable:!0,get:function(){return this.nr},set:function(a){isFinite(a)&&(this.nr=a)}});Object.defineProperty(this,
"shadowOffsetY",{enumerable:!0,get:function(){return this.pr},set:function(a){isFinite(a)&&(this.pr=a)}});Object.defineProperty(this,"strokeStyle",{enumerable:!0,get:function(){return c(this.Kq)},set:function(a){"string"===typeof a?this.Kq=e(a):a.kr&&(this.Kq=a)}});this.arc=function(a,b,c,d,e,f){C(this.mq,a,b,c,c,0,d,e,f)};this.arcTo=function(a,b,c,d,e){w(this.mq,a,b,c,d,e)};this.beginPath=function(){this.mq.delete();this.mq=new a.SkPath};this.bezierCurveTo=function(a,c,d,e,f,l){var ha=this.mq;b([a,
c,d,e,f,l])&&(ha.isEmpty()&&ha.moveTo(a,c),ha.cubicTo(a,c,d,e,f,l))};this.clearRect=function(b,c,d,e){this.kq.setStyle(a.PaintStyle.Fill);this.kq.setBlendMode(a.BlendMode.Clear);this.bq.drawRect(a.XYWHRect(b,c,d,e),this.kq);this.kq.setBlendMode(this.hq)};this.clip=function(b,c){"string"===typeof b?(c=b,b=this.mq):b&&b.qs&&(b=b.rq);b||(b=this.mq);b=b.copy();c&&"evenodd"===c.toLowerCase()?b.setFillType(a.FillType.EvenOdd):b.setFillType(a.FillType.Winding);this.bq.clipPath(b,a.ClipOp.Intersect,!0);b.delete()};
this.closePath=function(){y(this.mq)};this.createImageData=function(){if(1===arguments.length){var a=arguments[0];return new q(new Uint8ClampedArray(4*a.width*a.height),a.width,a.height)}if(2===arguments.length){a=arguments[0];var b=arguments[1];return new q(new Uint8ClampedArray(4*a*b),a,b)}throw"createImageData expects 1 or 2 arguments, got "+arguments.length;};this.createLinearGradient=function(a,c,d,e){if(b(arguments)){var f=new t(a,c,d,e);this.sr.push(f);return f}};this.createPattern=function(a,
b){a=new nc(a,b);this.sr.push(a);return a};this.createRadialGradient=function(a,c,d,e,f,l){if(b(arguments)){var ha=new oc(a,c,d,e,f,l);this.sr.push(ha);return ha}};this.zt=function(){var b=this.Or();this.Br?b.setFilterQuality(this.ar):b.setFilterQuality(a.FilterQuality.None);return b};this.drawImage=function(b){var c=this.zt();if(3===arguments.length||5===arguments.length)var d=a.XYWHRect(arguments[1],arguments[2],arguments[3]||b.width(),arguments[4]||b.height()),e=a.XYWHRect(0,0,b.width(),b.height());
else if(9===arguments.length)d=a.XYWHRect(arguments[5],arguments[6],arguments[7],arguments[8]),e=a.XYWHRect(arguments[1],arguments[2],arguments[3],arguments[4]);else throw"invalid number of args for drawImage, need 3, 5, or 9; got "+arguments.length;this.bq.drawImageRect(b,e,d,c,!1);c.dispose()};this.ellipse=function(a,b,c,d,e,f,l,p){C(this.mq,a,b,c,d,e,f,l,p)};this.Or=function(){var b=this.kq.copy();b.setStyle(a.PaintStyle.Fill);if(Number.isInteger(this.Aq)){var c=a.multiplyByAlpha(this.Aq,this.Sq);
b.setColor(c)}else c=this.Aq.kr(this.pq),b.setColor(a.Color(0,0,0,this.Sq)),b.setShader(c);b.dispose=function(){this.delete()};return b};this.fill=function(b,c){"string"===typeof b?(c=b,b=this.mq):b&&b.qs&&(b=b.rq);if("evenodd"===c)this.mq.setFillType(a.FillType.EvenOdd);else{if("nonzero"!==c&&c)throw"invalid fill rule";this.mq.setFillType(a.FillType.Winding)}b||(b=this.mq);c=this.Or();var d=this.Rr(c);d&&(this.bq.save(),this.bq.concat(this.Qr()),this.bq.drawPath(b,d),this.bq.restore(),d.dispose());
this.bq.drawPath(b,c);c.dispose()};this.fillRect=function(b,c,d,e){var f=this.Or();this.bq.drawRect(a.XYWHRect(b,c,d,e),f);f.dispose()};this.fillText=function(b,c,d){var e=this.Or();b=a.SkTextBlob.MakeFromText(b,this.jr);var f=this.Rr(e);f&&(this.bq.save(),this.bq.concat(this.Qr()),this.bq.drawTextBlob(b,c,d,f),this.bq.restore(),f.dispose());this.bq.drawTextBlob(b,c,d,e);b.delete();e.dispose()};this.getImageData=function(a,b,c,d){return(a=this.bq.readPixels(a,b,c,d))?new q(new Uint8ClampedArray(a.buffer),
c,d):null};this.getLineDash=function(){return this.lr.slice()};this.Vs=function(b){var c=a.SkMatrix.Gr(this.pq);a.SkMatrix.mapPoints(c,b);return b};this.isPointInPath=function(b,c,d){var e=arguments;if(3===e.length)var f=this.mq;else if(4===e.length)f=e[0],b=e[1],c=e[2],d=e[3];else throw"invalid arg count, need 3 or 4, got "+e.length;if(!isFinite(b)||!isFinite(c))return!1;d=d||"nonzero";if("nonzero"!==d&&"evenodd"!==d)return!1;e=this.Vs([b,c]);b=e[0];c=e[1];f.setFillType("nonzero"===d?a.FillType.Winding:
a.FillType.EvenOdd);return f.contains(b,c)};this.isPointInStroke=function(b,c){var d=arguments;if(2===d.length)var e=this.mq;else if(3===d.length)e=d[0],b=d[1],c=d[2];else throw"invalid arg count, need 2 or 3, got "+d.length;if(!isFinite(b)||!isFinite(c))return!1;d=this.Vs([b,c]);b=d[0];c=d[1];e=e.copy();e.setFillType(a.FillType.Winding);e.stroke({width:this.lineWidth,miter_limit:this.miterLimit,cap:this.kq.getStrokeCap(),join:this.kq.getStrokeJoin(),precision:.3});d=e.contains(b,c);e.delete();return d};
this.lineTo=function(a,b){V(this.mq,a,b)};this.measureText=function(a){return{width:this.jr.measureText(a)}};this.moveTo=function(a,c){var d=this.mq;b([a,c])&&d.moveTo(a,c)};this.putImageData=function(c,d,e,f,l,p,q){if(b([d,e,f,l,p,q]))if(void 0===f)this.bq.writePixels(c.data,c.width,c.height,d,e);else if(f=f||0,l=l||0,p=p||c.width,q=q||c.height,0>p&&(f+=p,p=Math.abs(p)),0>q&&(l+=q,q=Math.abs(q)),0>f&&(p+=f,f=0),0>l&&(q+=l,l=0),!(0>=p||0>=q)){c=a.vt(c.data,c.width,c.height,a.AlphaType.Unpremul,a.ColorType.RGBA_8888);
var ha=a.XYWHRect(f,l,p,q);d=a.XYWHRect(d+f,e+l,p,q);e=a.SkMatrix.Gr(this.pq);this.bq.save();this.bq.concat(e);this.bq.drawImageRect(c,ha,d,null,!1);this.bq.restore();c.delete()}};this.quadraticCurveTo=function(a,c,d,e){var f=this.mq;b([a,c,d,e])&&(f.isEmpty()&&f.moveTo(a,c),f.quadTo(a,c,d,e))};this.rect=function(a,c,d,e){var f=this.mq;b([a,c,d,e])&&f.addRect(a,c,a+d,c+e)};this.resetTransform=function(){this.mq.transform(this.pq);var b=a.SkMatrix.Gr(this.pq);this.bq.concat(b);this.pq=this.bq.getTotalMatrix()};
this.restore=function(){var b=this.Ts.pop();if(b){var c=a.SkMatrix.multiply(this.pq,a.SkMatrix.Gr(b.Ft));this.mq.transform(c);this.kq.delete();this.kq=b.eu;this.lr=b.Yt;this.Er=b.xu;this.Kq=b.wu;this.Aq=b.fs;this.nr=b.uu;this.pr=b.vu;this.mr=b.nu;this.Dr=b.tu;this.Sq=b.Jt;this.hq=b.Kt;this.Cr=b.Zt;this.Br=b.Wt;this.ar=b.Xt;this.Pr=b.It;this.bq.restore();this.pq=this.bq.getTotalMatrix()}};this.rotate=function(b){if(isFinite(b)){var c=a.SkMatrix.rotated(-b);this.mq.transform(c);this.bq.rotate(b/Math.PI*
180,0,0);this.pq=this.bq.getTotalMatrix()}};this.save=function(){if(this.Aq.ir){var a=this.Aq.ir();this.sr.push(a)}else a=this.Aq;if(this.Kq.ir){var b=this.Kq.ir();this.sr.push(b)}else b=this.Kq;this.Ts.push({Ft:this.pq.slice(),Yt:this.lr.slice(),xu:this.Er,wu:b,fs:a,uu:this.nr,vu:this.pr,nu:this.mr,tu:this.Dr,Jt:this.Sq,Zt:this.Cr,Kt:this.hq,Wt:this.Br,Xt:this.ar,eu:this.kq.copy(),It:this.Pr});this.bq.save()};this.scale=function(c,d){if(b(arguments)){var e=a.SkMatrix.scaled(1/c,1/d);this.mq.transform(e);
this.bq.scale(c,d);this.pq=this.bq.getTotalMatrix()}};this.setLineDash=function(a){for(var b=0;b<a.length;b++)if(!isFinite(a[b])||0>a[b])return;1===a.length%2&&Array.prototype.push.apply(a,a);this.lr=a};this.setTransform=function(a,c,d,e,f,l){b(arguments)&&(this.resetTransform(),this.transform(a,c,d,e,f,l))};this.Qr=function(){return a.SkMatrix.translated(this.nr/this.pq[0],this.pr/this.pq[4])};this.Rr=function(b){var c=a.multiplyByAlpha(this.Dr,this.Sq);if(!a.getColorComponents(c)[3]||!(this.mr||
this.pr||this.nr))return null;b=b.copy();b.setColor(c);var d=a.MakeBlurMaskFilter(a.BlurStyle.Normal,this.mr/2,!1);b.setMaskFilter(d);b.dispose=function(){d.delete();this.delete()};return b};this.ts=function(){var b=this.kq.copy();b.setStyle(a.PaintStyle.Stroke);if(Number.isInteger(this.Kq)){var c=a.multiplyByAlpha(this.Kq,this.Sq);b.setColor(c)}else c=this.Kq.kr(this.pq),b.setColor(a.Color(0,0,0,this.Sq)),b.setShader(c);b.setStrokeWidth(this.Er);if(this.lr.length){var d=a.MakeSkDashPathEffect(this.lr,
this.Cr);b.setPathEffect(d)}b.dispose=function(){d&&d.delete();this.delete()};return b};this.stroke=function(a){a=a?a.rq:this.mq;var b=this.ts(),c=this.Rr(b);c&&(this.bq.save(),this.bq.concat(this.Qr()),this.bq.drawPath(a,c),this.bq.restore(),c.dispose());this.bq.drawPath(a,b);b.dispose()};this.strokeRect=function(b,c,d,e){var f=this.ts();this.bq.drawRect(a.XYWHRect(b,c,d,e),f);f.dispose()};this.strokeText=function(b,c,d){var e=this.ts();b=a.SkTextBlob.MakeFromText(b,this.jr);var f=this.Rr(e);f&&
(this.bq.save(),this.bq.concat(this.Qr()),this.bq.drawTextBlob(b,c,d,f),this.bq.restore(),f.dispose());this.bq.drawTextBlob(b,c,d,e);b.delete();e.dispose()};this.translate=function(c,d){if(b(arguments)){var e=a.SkMatrix.translated(-c,-d);this.mq.transform(e);this.bq.translate(c,d);this.pq=this.bq.getTotalMatrix()}};this.transform=function(b,c,d,e,f,l){b=[b,d,f,c,e,l,0,0,1];c=a.SkMatrix.Gr(b);this.mq.transform(c);this.bq.concat(b);this.pq=this.bq.getTotalMatrix()};this.addHitRegion=function(){};this.clearHitRegions=
function(){};this.drawFocusIfNeeded=function(){};this.removeHitRegion=function(){};this.scrollPathIntoView=function(){};Object.defineProperty(this,"canvas",{value:null,writable:!1})}function p(b){this.us=b;this.Us=new l(b.getCanvas());this.Sr=[];this.wt=a.SkFontMgr.RefDefault();this.decodeImage=function(b){b=a.MakeImageFromEncoded(b);if(!b)throw"Invalid input";this.Sr.push(b);return b};this.loadFont=function(a,b){a=this.wt.MakeTypefaceFromData(a);if(!a)return null;this.Sr.push(a);var c=(b.style||
"normal")+"|"+(b.variant||"normal")+"|"+(b.weight||"normal");b=b.family;va[b]||(va[b]={"*":a});va[b][c]=a};this.makePath2D=function(a){a=new Fb(a);this.Sr.push(a.rq);return a};this.getContext=function(a){return"2d"===a?this.Us:null};this.toDataURL=function(b,c){this.us.flush();var d=this.us.makeImageSnapshot();if(d){b=b||"image/png";var e=a.ImageFormat.PNG;"image/jpeg"===b&&(e=a.ImageFormat.JPEG);if(c=d.encodeToData(e,c||.92)){c=a.getSkDataBytes(c);b="data:"+b+";base64,";if(ca)c=Buffer.from(c).toString("base64");
else{d=0;e=c.length;for(var f="",l;d<e;)l=c.slice(d,Math.min(d+32768,e)),f+=String.fromCharCode.apply(null,l),d+=32768;c=btoa(f)}return b+c}}};this.dispose=function(){this.Us.Xq();this.Sr.forEach(function(a){a.delete()});this.us.dispose()}}function q(a,b,c){if(!b||0===c)throw"invalid dimensions, width and height must be non-zero";if(a.length%4)throw"arr must be a multiple of 4";c=c||a.length/(4*b);Object.defineProperty(this,"data",{value:a,writable:!1});Object.defineProperty(this,"height",{value:c,
writable:!1});Object.defineProperty(this,"width",{value:b,writable:!1})}function t(b,c,d,f){this.tq=null;this.Fq=[];this.wq=[];this.addColorStop=function(a,b){if(0>a||1<a||!isFinite(a))throw"offset must be between 0 and 1 inclusively";b=e(b);var c=this.wq.indexOf(a);if(-1!==c)this.Fq[c]=b;else{for(c=0;c<this.wq.length&&!(this.wq[c]>a);c++);this.wq.splice(c,0,a);this.Fq.splice(c,0,b)}};this.ir=function(){var a=new t(b,c,d,f);a.Fq=this.Fq.slice();a.wq=this.wq.slice();return a};this.Xq=function(){this.tq&&
(this.tq.delete(),this.tq=null)};this.kr=function(e){var l=[b,c,d,f];a.SkMatrix.mapPoints(e,l);e=l[0];var p=l[1],q=l[2];l=l[3];this.Xq();return this.tq=a.MakeLinearGradientShader([e,p],[q,l],this.Fq,this.wq,a.TileMode.Clamp)}}function w(a,c,d,e,f,l){if(b([c,d,e,f,l])){if(0>l)throw"radii cannot be negative";a.isEmpty()&&a.moveTo(c,d);a.arcTo(c,d,e,f,l)}}function y(a){if(!a.isEmpty()){var b=a.getBounds();(b.fBottom-b.fTop||b.fRight-b.fLeft)&&a.close()}}function E(b,c,d,e,f,l,p){p=(p-l)/Math.PI*180;
l=l/Math.PI*180;c=a.LTRBRect(c-e,d-f,c+e,d+f);1E-5>Math.abs(Math.abs(p)-360)?(d=p/2,b.arcTo(c,l,d,!1),b.arcTo(c,l+d,d,!1)):b.arcTo(c,l,p,!1)}function C(c,d,e,f,l,p,q,t,w){if(b([d,e,f,l,p,q,t])){if(0>f||0>l)throw"radii cannot be negative";var C=2*Math.PI,y=q%C;0>y&&(y+=C);var V=y-q;q=y;t+=V;!w&&t-q>=C?t=q+C:w&&q-t>=C?t=q-C:!w&&q>t?t=q+(C-(q-t)%C):w&&q<t&&(t=q-(C-(t-q)%C));p?(w=a.SkMatrix.rotated(p,d,e),p=a.SkMatrix.rotated(-p,d,e),c.transform(p),E(c,d,e,f,l,q,t),c.transform(w)):E(c,d,e,f,l,q,t)}}function V(a,
c,d){b([c,d])&&(a.isEmpty()&&a.moveTo(c,d),a.lineTo(c,d))}function Fb(c){this.rq=null;"string"===typeof c?this.rq=a.MakePathFromSVGString(c):c&&c.qs?this.rq=c.rq.copy():this.rq=new a.SkPath;this.qs=function(){return this.rq};this.addPath=function(a,b){b||(b={a:1,c:0,e:0,b:0,d:1,f:0});this.rq.addPath(a.rq,[b.a,b.c,b.e,b.b,b.d,b.f])};this.arc=function(a,b,c,d,e,f){C(this.rq,a,b,c,c,0,d,e,f)};this.arcTo=function(a,b,c,d,e){w(this.rq,a,b,c,d,e)};this.bezierCurveTo=function(a,c,d,e,f,l){var p=this.rq;
b([a,c,d,e,f,l])&&(p.isEmpty()&&p.moveTo(a,c),p.cubicTo(a,c,d,e,f,l))};this.closePath=function(){y(this.rq)};this.ellipse=function(a,b,c,d,e,f,l,p){C(this.rq,a,b,c,d,e,f,l,p)};this.lineTo=function(a,b){V(this.rq,a,b)};this.moveTo=function(a,c){var d=this.rq;b([a,c])&&d.moveTo(a,c)};this.quadraticCurveTo=function(a,c,d,e){var f=this.rq;b([a,c,d,e])&&(f.isEmpty()&&f.moveTo(a,c),f.quadTo(a,c,d,e))};this.rect=function(a,c,d,e){var f=this.rq;b([a,c,d,e])&&f.addRect(a,c,a+d,c+e)}}function nc(c,d){this.tq=
null;this.yt=c;this._transform=a.SkMatrix.identity();""===d&&(d="repeat");switch(d){case "repeat-x":this.qr=a.TileMode.Repeat;this.rr=a.TileMode.Decal;break;case "repeat-y":this.qr=a.TileMode.Decal;this.rr=a.TileMode.Repeat;break;case "repeat":this.rr=this.qr=a.TileMode.Repeat;break;case "no-repeat":this.rr=this.qr=a.TileMode.Decal;break;default:throw"invalid repetition mode "+d;}this.setTransform=function(a){a=[a.a,a.c,a.e,a.b,a.d,a.f,0,0,1];b(a)&&(this._transform=a)};this.ir=function(){var a=new nc;
a.qr=this.qr;a.rr=this.rr;return a};this.Xq=function(){this.tq&&(this.tq.delete(),this.tq=null)};this.kr=function(){this.Xq();return this.tq=a.MakeImageShader(this.yt,this.qr,this.rr,!1,this._transform)}}function oc(b,c,d,f,l,p){this.tq=null;this.Fq=[];this.wq=[];this.addColorStop=function(a,b){if(0>a||1<a||!isFinite(a))throw"offset must be between 0 and 1 inclusively";b=e(b);var c=this.wq.indexOf(a);if(-1!==c)this.Fq[c]=b;else{for(c=0;c<this.wq.length&&!(this.wq[c]>a);c++);this.wq.splice(c,0,a);
this.Fq.splice(c,0,b)}};this.ir=function(){var a=new oc(b,c,d,f,l,p);a.Fq=this.Fq.slice();a.wq=this.wq.slice();return a};this.Xq=function(){this.tq&&(this.tq.delete(),this.tq=null)};this.kr=function(e){var q=[b,c,f,l];a.SkMatrix.mapPoints(e,q);var t=q[0],C=q[1],w=q[2];q=q[3];var y=(Math.abs(e[0])+Math.abs(e[4]))/2;e=d*y;y*=p;this.Xq();return this.tq=a.MakeTwoPointConicalGradientShader([t,C],e,[w,q],y,this.Fq,this.wq,a.TileMode.Clamp)}}a._testing={};var nd={aliceblue:-984833,antiquewhite:-332841,aqua:-16711681,
aquamarine:-8388652,azure:-983041,beige:-657956,bisque:-6972,black:-16777216,blanchedalmond:-5171,blue:-16776961,blueviolet:-7722014,brown:-5952982,burlywood:-2180985,cadetblue:-10510688,chartreuse:-8388864,chocolate:-2987746,coral:-32944,cornflowerblue:-10185235,cornsilk:-1828,crimson:-2354116,cyan:-16711681,darkblue:-16777077,darkcyan:-16741493,darkgoldenrod:-4684277,darkgray:-5658199,darkgreen:-16751616,darkgrey:-5658199,darkkhaki:-4343957,darkmagenta:-7667573,darkolivegreen:-11179217,darkorange:-29696,
darkorchid:-6737204,darkred:-7667712,darksalmon:-1468806,darkseagreen:-7357297,darkslateblue:-12042869,darkslategray:-13676721,darkslategrey:-13676721,darkturquoise:-16724271,darkviolet:-7077677,deeppink:-60269,deepskyblue:-16728065,dimgray:-9868951,dimgrey:-9868951,dodgerblue:-14774017,firebrick:-5103070,floralwhite:-1296,forestgreen:-14513374,fuchsia:-65281,gainsboro:-2302756,ghostwhite:-460545,gold:-10496,goldenrod:-2448096,gray:-8355712,green:-16744448,greenyellow:-5374161,grey:-8355712,honeydew:-983056,
hotpink:-38476,indianred:-3318692,indigo:-11861886,ivory:-16,khaki:-989556,lavender:-1644806,lavenderblush:-3851,lawngreen:-8586240,lemonchiffon:-1331,lightblue:-5383962,lightcoral:-1015680,lightcyan:-2031617,lightgoldenrodyellow:-329006,lightgray:-2894893,lightgreen:-7278960,lightgrey:-2894893,lightpink:-18751,lightsalmon:-24454,lightseagreen:-14634326,lightskyblue:-7876870,lightslategray:-8943463,lightslategrey:-8943463,lightsteelblue:-5192482,lightyellow:-32,lime:-16711936,limegreen:-13447886,
linen:-331546,magenta:-65281,maroon:-8388608,mediumaquamarine:-10039894,mediumblue:-16777011,mediumorchid:-4565549,mediumpurple:-7114533,mediumseagreen:-12799119,mediumslateblue:-8689426,mediumspringgreen:-16713062,mediumturquoise:-12004916,mediumvioletred:-3730043,midnightblue:-15132304,mintcream:-655366,mistyrose:-6943,moccasin:-6987,navajowhite:-8531,navy:-16777088,oldlace:-133658,olive:-8355840,olivedrab:-9728477,orange:-23296,orangered:-47872,orchid:-2461482,palegoldenrod:-1120086,palegreen:-6751336,
paleturquoise:-5247250,palevioletred:-2396013,papayawhip:-4139,peachpuff:-9543,peru:-3308225,pink:-16181,plum:-2252579,powderblue:-5185306,purple:-8388480,rebeccapurple:-10079335,red:-65536,rosybrown:-4419697,royalblue:-12490271,saddlebrown:-7650029,salmon:-360334,sandybrown:-744352,seagreen:-13726889,seashell:-2578,sienna:-6270419,silver:-4144960,skyblue:-7876885,slateblue:-9807155,slategray:-9404272,slategrey:-9404272,snow:-1286,springgreen:-16711809,steelblue:-12156236,tan:-2968436,teal:-16744320,
thistle:-2572328,transparent:0,tomato:-40121,turquoise:-12525360,violet:-1146130,wheat:-663885,white:-1,whitesmoke:-657931,yellow:-256,yellowgreen:-6632142};a._testing.parseColor=e;a._testing.colorToString=c;var od=/(italic|oblique|normal|)\s*(small-caps|normal|)\s*(bold|bolder|lighter|[1-9]00|normal|)\s*([\d\.]+)(px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q)(.+)/,va={"Noto Mono":{"*":null},monospace:{"*":null}};a._testing.parseFontString=f;a.MakeCanvas=function(b,c){return(b=a.MakeSurface(b,c))?new p(b):null};
a.ImageData=function(){if(2===arguments.length){var a=arguments[0],b=arguments[1];return new q(new Uint8ClampedArray(4*a*b),a,b)}if(3===arguments.length){var c=arguments[0];if(c.prototype.constructor!==Uint8ClampedArray)throw"bytes must be given as a Uint8ClampedArray";a=arguments[1];b=arguments[2];if(c%4)throw"bytes must be given in a multiple of 4";if(c%a)throw"bytes must divide evenly by width";if(b&&b!==c/(4*a))throw"invalid height given";return new q(c,a,c/(4*a))}throw"invalid number of arguments - takes 2 or 3, saw "+
arguments.length;}})(m);var ea={},fa;for(fa in m)m.hasOwnProperty(fa)&&(ea[fa]=m[fa]);m.arguments=[];m.thisProgram="./this.program";m.quit=function(a,b){throw b;};m.preRun=[];m.postRun=[];var ia=!1,ja=!1,ka=!1,la=!1;ia="object"===typeof window;ja="function"===typeof importScripts;ka="object"===typeof process&&"function"===typeof require&&!ia&&!ja;la=!ia&&!ka&&!ja;var u="";
if(ka){u=__dirname+"/";var ma,na;m.read=function(a,b){ma||(ma=require("fs"));na||(na=require("path"));a=na.normalize(a);a=ma.readFileSync(a);return b?a:a.toString()};m.readBinary=function(a){a=m.read(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a};1<process.argv.length&&(m.thisProgram=process.argv[1].replace(/\\/g,"/"));m.arguments=process.argv.slice(2);process.on("uncaughtException",function(a){if(!(a instanceof oa))throw a;});process.on("unhandledRejection",v);m.quit=function(a){process.exit(a)};
m.inspect=function(){return"[Emscripten Module object]"}}else if(la)"undefined"!=typeof read&&(m.read=function(a){return read(a)}),m.readBinary=function(a){if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,"binary");assert("object"===typeof a);return a},"undefined"!=typeof scriptArgs?m.arguments=scriptArgs:"undefined"!=typeof arguments&&(m.arguments=arguments),"function"===typeof quit&&(m.quit=function(a){quit(a)});else if(ia||ja)ja?u=self.location.href:document.currentScript&&
(u=document.currentScript.src),_scriptDir&&(u=_scriptDir),0!==u.indexOf("blob:")?u=u.substr(0,u.lastIndexOf("/")+1):u="",m.read=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.send(null);return b.responseText},ja&&(m.readBinary=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)}),m.readAsync=function(a,b,c){var d=new XMLHttpRequest;d.open("GET",a,!0);d.responseType="arraybuffer";d.onload=function(){200==d.status||
0==d.status&&d.response?b(d.response):c()};d.onerror=c;d.send(null)},m.setWindowTitle=function(a){document.title=a};var pa=m.print||("undefined"!==typeof console?console.log.bind(console):"undefined"!==typeof print?print:null),x=m.printErr||("undefined"!==typeof printErr?printErr:"undefined"!==typeof console&&console.warn.bind(console)||pa);for(fa in ea)ea.hasOwnProperty(fa)&&(m[fa]=ea[fa]);ea=void 0;function qa(a){var b=z[ra>>2];a=b+a+15&-16;if(a<=sa)z[ra>>2]=a;else if(!ta(a))return 0;return b}
function ua(a){wa||(wa={});wa[a]||(wa[a]=1,x(a))}var wa,xa={"f64-rem":function(a,b){return a%b},"debugger":function(){debugger}},ya=0;"object"!==typeof WebAssembly&&x("no native wasm support detected");var za,A=!1;function assert(a,b){a||v("Assertion failed: "+b)}
function Aa(a){if("number"===typeof a){var b=!0;var c=a}else b=!1,c=a.length;var d=B(Math.max(c,1));if(b){a=d;assert(0==(d&3));for(b=d+(c&-4);a<b;a+=4)z[a>>2]=0;for(b=d+c;a<b;)D[a++>>0]=0;return d}a.subarray||a.slice?r.set(a,d):r.set(new Uint8Array(a),d);return d}var Ba="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;
function Ca(a,b,c){var d=b+c;for(c=b;a[c]&&!(c>=d);)++c;if(16<c-b&&a.subarray&&Ba)return Ba.decode(a.subarray(b,c));for(d="";b<c;){var e=a[b++];if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var l=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|l:(e&7)<<18|f<<12|l<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}function F(a,b){return a?Ca(r,a,b):""}
function n(a,b,c,d){if(!(0<d))return 0;var e=c;d=c+d-1;for(var f=0;f<a.length;++f){var l=a.charCodeAt(f);if(55296<=l&&57343>=l){var p=a.charCodeAt(++f);l=65536+((l&1023)<<10)|p&1023}if(127>=l){if(c>=d)break;b[c++]=l}else{if(2047>=l){if(c+1>=d)break;b[c++]=192|l>>6}else{if(65535>=l){if(c+2>=d)break;b[c++]=224|l>>12}else{if(c+3>=d)break;b[c++]=240|l>>18;b[c++]=128|l>>12&63}b[c++]=128|l>>6&63}b[c++]=128|l&63}}b[c]=0;return c-e}
function da(a){for(var b=0,c=0;c<a.length;++c){var d=a.charCodeAt(c);55296<=d&&57343>=d&&(d=65536+((d&1023)<<10)|a.charCodeAt(++c)&1023);127>=d?++b:b=2047>=d?b+2:65535>=d?b+3:b+4}return b}"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");function Da(a){0<a%65536&&(a+=65536-a%65536);return a}var buffer,D,r,Ea,Fa,z,G,H,Ga;
function Ha(){m.HEAP8=D=new Int8Array(buffer);m.HEAP16=Ea=new Int16Array(buffer);m.HEAP32=z=new Int32Array(buffer);m.HEAPU8=r=new Uint8Array(buffer);m.HEAPU16=Fa=new Uint16Array(buffer);m.HEAPU32=G=new Uint32Array(buffer);m.HEAPF32=H=new Float32Array(buffer);m.HEAPF64=Ga=new Float64Array(buffer)}var ra=1853664,sa=m.TOTAL_MEMORY||134217728;5242880>sa&&x("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+sa+"! (TOTAL_STACK=5242880)");
m.buffer?buffer=m.buffer:("object"===typeof WebAssembly&&"function"===typeof WebAssembly.Memory?(za=new WebAssembly.Memory({initial:sa/65536}),buffer=za.buffer):buffer=new ArrayBuffer(sa),m.buffer=buffer);Ha();z[ra>>2]=7096800;function Ia(a){for(;0<a.length;){var b=a.shift();if("function"==typeof b)b();else{var c=b.Gq;"number"===typeof c?void 0===b.br?m.dynCall_v(c):m.dynCall_vi(c,b.br):c(void 0===b.br?null:b.br)}}}var Ja=[],Ka=[],La=[],Ma=[],Na=[],Oa=!1;
function Pa(){var a=m.preRun.shift();Ja.unshift(a)}var Qa=Math.abs,Ra=Math.ceil,Sa=Math.floor,Ta=Math.min,Ua=Math.trunc,Va=0,Wa=null,Xa=null;function Ya(){Va++;m.monitorRunDependencies&&m.monitorRunDependencies(Va)}function Za(){Va--;m.monitorRunDependencies&&m.monitorRunDependencies(Va);if(0==Va&&(null!==Wa&&(clearInterval(Wa),Wa=null),Xa)){var a=Xa;Xa=null;a()}}m.preloadedImages={};m.preloadedAudios={};
function $a(){var a=ab;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var ab="canvaskit.wasm";if(!$a()){var bb=ab;ab=m.locateFile?m.locateFile(bb,u):u+bb}function cb(){try{if(m.wasmBinary)return new Uint8Array(m.wasmBinary);if(m.readBinary)return m.readBinary(ab);throw"both async and sync fetching of the wasm failed";}catch(a){v(a)}}
function db(){return m.wasmBinary||!ia&&!ja||"function"!==typeof fetch?new Promise(function(a){a(cb())}):fetch(ab,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+ab+"'";return a.arrayBuffer()}).catch(function(){return cb()})}
function eb(a){function b(a){m.asm=a.exports;Za()}function c(a){b(a.instance)}function d(a){db().then(function(a){return WebAssembly.instantiate(a,e)}).then(a,function(a){x("failed to asynchronously prepare wasm: "+a);v(a)})}var e={env:a,global:{NaN:NaN,Infinity:Infinity},"global.Math":Math,asm2wasm:xa};Ya();if(m.instantiateWasm)try{return m.instantiateWasm(e,b)}catch(f){return x("Module.instantiateWasm callback failed with error: "+f),!1}m.wasmBinary||"function"!==typeof WebAssembly.instantiateStreaming||
$a()||"function"!==typeof fetch?d(c):WebAssembly.instantiateStreaming(fetch(ab,{credentials:"same-origin"}),e).then(c,function(a){x("wasm streaming compile failed: "+a);x("falling back to ArrayBuffer instantiation");d(c)});return{}}m.asm=function(a,b){b.memory=za;b.table=new WebAssembly.Table({initial:10727,maximum:10727,element:"anyfunc"});b.__memory_base=1024;b.__table_base=0;return eb(b)};Ka.push({Gq:function(){fb()}},{Gq:function(){gb()}},{Gq:function(){hb()}},{Gq:function(){ib()}});var I={};
function jb(a){if(jb.Dt){var b=z[a>>2];var c=z[b>>2]}else jb.Dt=!0,I.USER=I.LOGNAME="web_user",I.PATH="/",I.PWD="/",I.HOME="/home/web_user",I.LANG="C.UTF-8",I._=m.thisProgram,c=Oa?B(1024):qa(1024),b=Oa?B(256):qa(256),z[b>>2]=c,z[a>>2]=b;a=[];var d=0,e;for(e in I)if("string"===typeof I[e]){var f=e+"="+I[e];a.push(f);d+=f.length}if(1024<d)throw Error("Environment size exceeded TOTAL_ENV_SIZE!");for(e=0;e<a.length;e++){d=f=a[e];for(var l=c,p=0;p<d.length;++p)D[l++>>0]=d.charCodeAt(p);D[l>>0]=0;z[b+4*
e>>2]=c;c+=f.length+1}z[b+4*a.length>>2]=0}function kb(a){m.___errno_location&&(z[m.___errno_location()>>2]=a);return a}function lb(a,b){for(var c=0,d=a.length-1;0<=d;d--){var e=a[d];"."===e?a.splice(d,1):".."===e?(a.splice(d,1),c++):c&&(a.splice(d,1),c--)}if(b)for(;c;c--)a.unshift("..");return a}function mb(a){var b="/"===a.charAt(0),c="/"===a.substr(-1);(a=lb(a.split("/").filter(function(a){return!!a}),!b).join("/"))||b||(a=".");a&&c&&(a+="/");return(b?"/":"")+a}
function nb(a){var b=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(a).slice(1);a=b[0];b=b[1];if(!a&&!b)return".";b&&(b=b.substr(0,b.length-1));return a+b}function ob(a){if("/"===a)return"/";var b=a.lastIndexOf("/");return-1===b?a:a.substr(b+1)}
function pb(){for(var a="",b=!1,c=arguments.length-1;-1<=c&&!b;c--){b=0<=c?arguments[c]:"/";if("string"!==typeof b)throw new TypeError("Arguments to path.resolve must be strings");if(!b)return"";a=b+"/"+a;b="/"===b.charAt(0)}a=lb(a.split("/").filter(function(a){return!!a}),!b).join("/");return(b?"/":"")+a||"."}var qb=[];function rb(a,b){qb[a]={input:[],output:[],yr:b};sb(a,tb)}
var tb={open:function(a){var b=qb[a.node.rdev];if(!b)throw new J(ub);a.tty=b;a.seekable=!1},close:function(a){a.tty.yr.flush(a.tty)},flush:function(a){a.tty.yr.flush(a.tty)},read:function(a,b,c,d){if(!a.tty||!a.tty.yr.gt)throw new J(vb);for(var e=0,f=0;f<d;f++){try{var l=a.tty.yr.gt(a.tty)}catch(p){throw new J(wb);}if(void 0===l&&0===e)throw new J(xb);if(null===l||void 0===l)break;e++;b[c+f]=l}e&&(a.node.timestamp=Date.now());return e},write:function(a,b,c,d){if(!a.tty||!a.tty.yr.Ks)throw new J(vb);
try{for(var e=0;e<d;e++)a.tty.yr.Ks(a.tty,b[c+e])}catch(f){throw new J(wb);}d&&(a.node.timestamp=Date.now());return e}},zb={gt:function(a){if(!a.input.length){var b=null;if(ka){var c=new Buffer(256),d=0,e=process.stdin.fd;if("win32"!=process.platform){var f=!1;try{e=fs.openSync("/dev/stdin","r"),f=!0}catch(l){}}try{d=fs.readSync(e,c,0,256,null)}catch(l){if(-1!=l.toString().indexOf("EOF"))d=0;else throw l;}f&&fs.closeSync(e);0<d?b=c.slice(0,d).toString("utf-8"):b=null}else"undefined"!=typeof window&&
"function"==typeof window.prompt?(b=window.prompt("Input: "),null!==b&&(b+="\n")):"function"==typeof readline&&(b=readline(),null!==b&&(b+="\n"));if(!b)return null;a.input=yb(b,!0)}return a.input.shift()},Ks:function(a,b){null===b||10===b?(pa(Ca(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<a.output.length&&(pa(Ca(a.output,0)),a.output=[])}},Ab={Ks:function(a,b){null===b||10===b?(x(Ca(a.output,0)),a.output=[]):0!=b&&a.output.push(b)},flush:function(a){a.output&&0<
a.output.length&&(x(Ca(a.output,0)),a.output=[])}},K={Qq:null,Vq:function(){return K.createNode(null,"/",16895,0)},createNode:function(a,b,c,d){if(24576===(c&61440)||4096===(c&61440))throw new J(Bb);K.Qq||(K.Qq={dir:{node:{Nq:K.iq.Nq,Rq:K.iq.Rq,lookup:K.iq.lookup,$r:K.iq.$r,rename:K.iq.rename,unlink:K.iq.unlink,rmdir:K.iq.rmdir,readdir:K.iq.readdir,symlink:K.iq.symlink},stream:{er:K.gq.er}},file:{node:{Nq:K.iq.Nq,Rq:K.iq.Rq},stream:{er:K.gq.er,read:K.gq.read,write:K.gq.write,Ws:K.gq.Ws,bs:K.gq.bs,
js:K.gq.js}},link:{node:{Nq:K.iq.Nq,Rq:K.iq.Rq,readlink:K.iq.readlink},stream:{}},Ys:{node:{Nq:K.iq.Nq,Rq:K.iq.Rq},stream:Cb}});c=Db(a,b,c,d);16384===(c.mode&61440)?(c.iq=K.Qq.dir.node,c.gq=K.Qq.dir.stream,c.eq={}):32768===(c.mode&61440)?(c.iq=K.Qq.file.node,c.gq=K.Qq.file.stream,c.qq=0,c.eq=null):40960===(c.mode&61440)?(c.iq=K.Qq.link.node,c.gq=K.Qq.link.stream):8192===(c.mode&61440)&&(c.iq=K.Qq.Ys.node,c.gq=K.Qq.Ys.stream);c.timestamp=Date.now();a&&(a.eq[b]=c);return c},Ou:function(a){if(a.eq&&
a.eq.subarray){for(var b=[],c=0;c<a.qq;++c)b.push(a.eq[c]);return b}return a.eq},Pu:function(a){return a.eq?a.eq.subarray?a.eq.subarray(0,a.qq):new Uint8Array(a.eq):new Uint8Array},at:function(a,b){var c=a.eq?a.eq.length:0;c>=b||(b=Math.max(b,c*(1048576>c?2:1.125)|0),0!=c&&(b=Math.max(b,256)),c=a.eq,a.eq=new Uint8Array(b),0<a.qq&&a.eq.set(c.subarray(0,a.qq),0))},ju:function(a,b){if(a.qq!=b)if(0==b)a.eq=null,a.qq=0;else{if(!a.eq||a.eq.subarray){var c=a.eq;a.eq=new Uint8Array(new ArrayBuffer(b));c&&
a.eq.set(c.subarray(0,Math.min(b,a.qq)))}else if(a.eq