!function(window,module){(function main(global,module,isWorker,workerSize){function noop(){}function promise(func){var ModulePromise=module.exports.Promise;var Prom=ModulePromise!==void 0?ModulePromise:global.Promise;if(typeof Prom==="function")return new Prom(func);func(noop,noop);return null}function convert(val,transform){return transform?transform(val):val}function isOk(val){return!(val===null||val===undefined)}function prop(options,name,transform){return convert(options&&isOk(options[name])? options[name]:defaults[name],transform)}function onlyPositiveInt(number){return number<0?0:Math.floor(number)}function randomInt(min,max){return Math.floor(Math.random()*(max-min))+min}function toDecimal(str){return parseInt(str,16)}function colorsToRgb(colors){return colors.map(hexToRgb)}function hexToRgb(str){var val=String(str).replace(/[^0-9a-f]/gi,"");if(val.length<6)val=val[0]+val[0]+val[1]+val[1]+val[2]+val[2];return{r:toDecimal(val.substring(0,2)),g:toDecimal(val.substring(2,4)),b:toDecimal(val.substring(4, 6))}}function getOrigin(options){var origin=prop(options,"origin",Object);origin.x=prop(origin,"x",Number);origin.y=prop(origin,"y",Number);return origin}function setCanvasWindowSize(canvas){canvas.width=document.documentElement.clientWidth;canvas.height=document.documentElement.clientHeight}function setCanvasRectSize(canvas){var rect=canvas.getBoundingClientRect();canvas.width=rect.width;canvas.height=rect.height}function getCanvas(zIndex){var canvas=document.createElement("canvas");canvas.style.position= "fixed";canvas.style.top="0px";canvas.style.left="0px";canvas.style.pointerEvents="none";canvas.style.zIndex=zIndex;return canvas}function ellipse(context,x,y,radiusX,radiusY,rotation,startAngle,endAngle,antiClockwise){context.save();context.translate(x,y);context.rotate(rotation);context.scale(radiusX,radiusY);context.arc(0,0,1,startAngle,endAngle,antiClockwise);context.restore()}function randomPhysics(opts){var radAngle=opts.angle*(Math.PI/180);var radSpread=opts.spread*(Math.PI/180);return{x:opts.x, y:opts.y,wobble:Math.random()*10,wobbleSpeed:Math.min(.11,Math.random()*.1+.05),velocity:opts.startVelocity*.5+Math.random()*opts.startVelocity,angle2D:-radAngle+(.5*radSpread-Math.random()*radSpread),tiltAngle:(Math.random()*(.75-.25)+.25)*Math.PI,color:opts.color,shape:opts.shape,tick:0,totalTicks:opts.ticks,decay:opts.decay,drift:opts.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:opts.gravity*3,ovalScalar:.6,scalar:opts.scalar}}function updateFetti(context,fetti){fetti.x+= Math.cos(fetti.angle2D)*fetti.velocity+fetti.drift;fetti.y+=Math.sin(fetti.angle2D)*fetti.velocity+fetti.gravity;fetti.wobble+=fetti.wobbleSpeed;fetti.velocity*=fetti.decay;fetti.tiltAngle+=.1;fetti.tiltSin=Math.sin(fetti.tiltAngle);fetti.tiltCos=Math.cos(fetti.tiltAngle);fetti.random=Math.random()+2;fetti.wobbleX=fetti.x+10*fetti.scalar*Math.cos(fetti.wobble);fetti.wobbleY=fetti.y+10*fetti.scalar*Math.sin(fetti.wobble);var progress=fetti.tick++/fetti.totalTicks;var x1=fetti.x+fetti.random*fetti.tiltCos; var y1=fetti.y+fetti.random*fetti.tiltSin;var x2=fetti.wobbleX+fetti.random*fetti.tiltCos;var y2=fetti.wobbleY+fetti.random*fetti.tiltSin;context.fillStyle="rgba("+fetti.color.r+", "+fetti.color.g+", "+fetti.color.b+", "+(1-progress)+")";context.beginPath();if(fetti.shape==="circle")context.ellipse?context.ellipse(fetti.x,fetti.y,Math.abs(x2-x1)*fetti.ovalScalar,Math.abs(y2-y1)*fetti.ovalScalar,Math.PI/10*fetti.wobble,0,2*Math.PI):ellipse(context,fetti.x,fetti.y,Math.abs(x2-x1)*fetti.ovalScalar,Math.abs(y2- y1)*fetti.ovalScalar,Math.PI/10*fetti.wobble,0,2*Math.PI);else if(fetti.shape==="star"){var rot=Math.PI/2*3;var innerRadius=4*fetti.scalar;var outerRadius=8*fetti.scalar;var x=fetti.x;var y=fetti.y;var spikes=5;var step=Math.PI/spikes;for(;spikes--;){x=fetti.x+Math.cos(rot)*outerRadius;y=fetti.y+Math.sin(rot)*outerRadius;context.lineTo(x,y);rot=rot+step;x=fetti.x+Math.cos(rot)*innerRadius;y=fetti.y+Math.sin(rot)*innerRadius;context.lineTo(x,y);rot=rot+step}}else if(fetti.shape==="heart"){x=fetti.x; y=fetti.y;var width=15;var height=15;var topCurveHeight=height*.3;context.moveTo(x,y+topCurveHeight);context.bezierCurveTo(x,y,x-width/2,y,x-width/2,y+topCurveHeight);context.bezierCurveTo(x-width/2,y+(height+topCurveHeight)/2,x,y+(height+topCurveHeight)/2,x,y+height);context.bezierCurveTo(x,y+(height+topCurveHeight)/2,x+width/2,y+(height+topCurveHeight)/2,x+width/2,y+topCurveHeight);context.bezierCurveTo(x+width/2,y,x,y,x,y+topCurveHeight)}else{context.moveTo(Math.floor(fetti.x),Math.floor(fetti.y)); context.lineTo(Math.floor(fetti.wobbleX),Math.floor(y1));context.lineTo(Math.floor(x2),Math.floor(y2));context.lineTo(Math.floor(x1),Math.floor(fetti.wobbleY))}context.closePath();context.fill();return fetti.tick